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

#include "google_analytics_filter.h"

Inheritance diagram for net_instaweb::GoogleAnalyticsFilter:
net_instaweb::EmptyHtmlFilter net_instaweb::HtmlFilter

Public Types

typedef StringPieceVector MethodVector
 
- Public Types inherited from net_instaweb::HtmlFilter
enum  ScriptUsage { kWillInjectScripts, kMayInjectScripts, kNeverInjectsScripts }
 Describes a filter's relationship with scripts. More...
 

Public Member Functions

 GoogleAnalyticsFilter (HtmlParse *html_parse, Statistics *statistics)
 
 GoogleAnalyticsFilter (HtmlParse *html_parse, Statistics *statistics, MethodVector *glue_methods, MethodVector *unhandled_methods)
 The filter will take ownership of the method vectors.
 
virtual void StartDocument ()
 
virtual void EndDocument ()
 
virtual void StartElement (HtmlElement *element)
 
virtual void EndElement (HtmlElement *element)
 
virtual void Flush ()
 
virtual void Characters (HtmlCharactersNode *characters_node)
 Expected HTML Events in <script> elements.
 
virtual void Comment (HtmlCommentNode *comment)
 Unexpected HTML Events in <script> elements.
 
virtual void Cdata (HtmlCdataNode *cdata)
 Called for CDATA blocks (e.g. <![CDATA[foobar]]>)
 
virtual void IEDirective (HtmlIEDirectiveNode *directive)
 
virtual const char * Name () const
 The name of this filter – used for logging and debugging.
 
ScriptUsage GetScriptUsage () const override
 
- Public Member Functions inherited from net_instaweb::EmptyHtmlFilter
virtual void Directive (HtmlDirectiveNode *directive)
 Called for HTML directives (e.g. <!doctype foobar>).
 
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 Member Functions

static void InitStats (Statistics *statistics)
 

Static Public Attributes

static const char kPageLoadCount []
 
static const char kRewrittenCount []
 

Detailed Description

Filter <script> tags. Rewrite qualifying sync loads of Google Analytics as async loads.

Member Function Documentation

virtual void net_instaweb::GoogleAnalyticsFilter::EndDocument ( )
virtual

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.

virtual void net_instaweb::GoogleAnalyticsFilter::Flush ( )
virtual

Notifies the Filter that a flush is occurring. A filter that's generating streamed output should flush at this time. A filter that's mutating elements can mutate any element seen since the most recent flush; once an element is flushed it is already on the wire to its destination and it's too late to mutate. Flush is initiated by an application calling HttpParse::Flush().

Flush() is called after all other handlers during a HttpParse::Flush(), except RenderDone(), which (if in use) happens after Flush().

Reimplemented from net_instaweb::EmptyHtmlFilter.

ScriptUsage net_instaweb::GoogleAnalyticsFilter::GetScriptUsage ( ) const
inlineoverridevirtual

Note: there is also kRequiresScriptExecutionFilterSet in rewrite_options.cc, which identifies filters that will leave broken pages if javascript is disabled, and hence require noscript handing. The set of filters that CanInjectScripts is larger, as it includes filters that might inject beacons or other optional functionality that is not page-critical.

Implements net_instaweb::HtmlFilter.

virtual void net_instaweb::GoogleAnalyticsFilter::IEDirective ( HtmlIEDirectiveNode directive)
virtual

Called for an IE directive; typically used for CSS styling. See http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

Todo:
TODO(mdsteele): Should we try to maintain the nested structure of the conditionals, in the same way that we maintain nesting of elements?

Reimplemented from net_instaweb::EmptyHtmlFilter.

virtual void net_instaweb::GoogleAnalyticsFilter::StartDocument ( )
virtual

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.

virtual void net_instaweb::GoogleAnalyticsFilter::StartElement ( HtmlElement element)
virtual

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: