Page Speed Optimization Libraries  1.13.35.1
 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 https://www.ampproject.org/ .

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 ( )
overridevirtual

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 ( )
overridevirtual

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)
overridevirtual

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:
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: