Page Speed Optimization Libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Attributes | List of all members
net_instaweb::AmpDocumentFilter Class Reference

#include "amp_document_filter.h"

Inheritance diagram for net_instaweb::AmpDocumentFilter:
net_instaweb::EmptyHtmlFilter net_instaweb::HtmlFilter

Public Types

typedef Callback1< bool > BoolCallback
- Public Types inherited from net_instaweb::HtmlFilter
enum  ScriptUsage { kWillInjectScripts, kMayInjectScripts, kNeverInjectsScripts }
 Describes a filter's relationship with scripts. More...

Public Member Functions

 AmpDocumentFilter (HtmlParse *html_parse, BoolCallback *discovered)
void StartDocument () override
void EndDocument () override
void StartElement (HtmlElement *element) override
void Characters (HtmlCharactersNode *chars) override
 Called for raw characters between tags.
const char * Name () const override
 The name of this filter – used for logging and debugging.
- Public Member Functions inherited from net_instaweb::EmptyHtmlFilter
virtual void EndElement (HtmlElement *element)
virtual void Cdata (HtmlCdataNode *cdata)
 Called for CDATA blocks (e.g. <![CDATA[foobar]]>)
virtual void Comment (HtmlCommentNode *comment)
 Called for HTML comments that aren't IE directives (e.g. ).
virtual void IEDirective (HtmlIEDirectiveNode *directive)
virtual void Directive (HtmlDirectiveNode *directive)
 Called for HTML directives (e.g. <!doctype foobar>).
virtual void Flush ()
virtual void DetermineEnabled (GoogleString *disabled_reason)
virtual bool CanModifyUrls ()
ScriptUsage GetScriptUsage () const override
- Public Member Functions inherited from net_instaweb::HtmlFilter
virtual void RenderDone ()
bool is_enabled () const
void set_is_enabled (bool is_enabled)

Static Public Attributes

static const char kUtf8LightningBolt []
static const char kInvalidAmpDirectiveComment []

Detailed Description

This filter is designed to run immediately while lexing HTML into the system as an event listener, rather than in the streaming filter chain. It is used to monitor the HTML and try to figure out whether the document is an AMP document. See .

If the AMP-ness of a document is claimed in an incorrect manner (e.g. there was intervening tag or non-whitespace characters before the <html amp>=""> tag, the filter adds a comment saying so. This may help users debug why PageSpeed makes a page amp-invalid.

Constructor & Destructor Documentation

net_instaweb::AmpDocumentFilter::AmpDocumentFilter ( HtmlParse html_parse,
BoolCallback discovered 

When the filter discovers whether a document is AMP-compatible, it will call discovered->Run(is_amp). The callback will be called exactly once for every HTML document passing through the filter. It must be allocated with NewPermanentCallback. Ownership is tranferred to the filter.

Member Function Documentation

void net_instaweb::AmpDocumentFilter::EndDocument ( )

Note: EndDocument will be called immediately before the last Flush call. (which also means that in the RewriteDriver use it is called before rendering for the last flush window).

Reimplemented from net_instaweb::EmptyHtmlFilter.

void net_instaweb::AmpDocumentFilter::StartDocument ( )

Starts a new document. Filters should clear their state in this function, as the same Filter instance may be used for multiple HTML documents.

Reimplemented from net_instaweb::EmptyHtmlFilter.

void net_instaweb::AmpDocumentFilter::StartElement ( HtmlElement element)

When an HTML element is encountered during parsing, each filter's StartElement method is called. The HtmlElement lives for the entire duration of the document.

TODO(jmarantz): consider passing handles rather than pointers and reference-counting them instead to save memory on long documents.

Reimplemented from net_instaweb::EmptyHtmlFilter.

The documentation for this class was generated from the following file: