Page Speed Optimization Libraries
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Attributes | Protected Member Functions | List of all members
net_instaweb::CriticalSelectorFilter Class Reference
Inheritance diagram for net_instaweb::CriticalSelectorFilter:
net_instaweb::CssSummarizerBase net_instaweb::RewriteFilter net_instaweb::CommonFilter net_instaweb::EmptyHtmlFilter net_instaweb::HtmlFilter

Public Member Functions

 CriticalSelectorFilter (RewriteDriver *rewrite_driver)
virtual const char * Name () const
 The name of this filter – used for logging and debugging.
virtual const char * id () const
AllowUnauthorizedDomain () const
virtual bool IntendedForInlining () const
 Selectors are inlined into the html.
ScriptUsage GetScriptUsage () const override
- Public Member Functions inherited from net_instaweb::CssSummarizerBase
 CssSummarizerBase (RewriteDriver *driver)
- Public Member Functions inherited from net_instaweb::RewriteFilter
 RewriteFilter (RewriteDriver *driver)
virtual bool CanModifyUrls ()
virtual const UrlSegmentEncoderencoder () const
virtual bool ComputeOnTheFly () const
virtual RewriteContextMakeNestedRewriteContext (RewriteContext *parent, const ResourceSlotPtr &slot)
virtual void EncodeUserAgentIntoResourceContext (ResourceContext *context) const
virtual const
RelatedFilters (int *num_filters) const
virtual const StringPieceVector * RelatedOptions () const
- Public Member Functions inherited from net_instaweb::CommonFilter
 CommonFilter (RewriteDriver *driver)
const GoogleUrlbase_url () const
 Getters. More...
const GoogleUrldecoded_base_url () const
RewriteDriverdriver () const
HtmlElementnoscript_element () const
void InsertNodeAtBodyEnd (HtmlNode *data)
virtual void StartDocument ()
 Note: Don't overload these methods, overload the implementers instead!
virtual void StartElement (HtmlElement *element)
virtual void EndElement (HtmlElement *element)
ResourcePtr CreateInputResource (StringPiece input_url, RewriteDriver::InputRole role, bool *is_authorized)
ResourcePtr CreateInputResourceOrInsertDebugComment (StringPiece input_url, RewriteDriver::InputRole role, HtmlElement *element)
void ResolveUrl (StringPiece input_url, GoogleUrl *out_url)
bool IsRelativeUrlLoadPermittedByCsp (StringPiece url, CspDirective role)
bool BaseUrlIsValid () const
bool DebugMode () const
bool CanAddPagespeedOnloadToImage (const HtmlElement &)
virtual void LogFilterModifiedContent ()
void AddJsToElement (StringPiece js, HtmlElement *script)
- Public Member Functions inherited from net_instaweb::EmptyHtmlFilter
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 ()
ScriptUsage GetScriptUsage () const override
- Public Member Functions inherited from net_instaweb::HtmlFilter
bool is_enabled () const
void set_is_enabled (bool is_enabled)

Static Public Attributes

static const char kAddStylesFunction []
static const char kAddStylesInvocation []
static const char kNoscriptStylesClass []
- Static Public Attributes inherited from net_instaweb::CssSummarizerBase
static const char kNumCssUsedForCriticalCssComputation []
static const char kNumCssNotUsedForCriticalCssComputation []
- Static Public Attributes inherited from net_instaweb::CommonFilter
static const char kCreateResourceFailedDebugMsg []
 Debug message to be inserted when resource creation fails.

Protected Member Functions

void Summarize (Css::Stylesheet *stylesheet, GoogleString *out) const override
void RenderSummary (int pos, HtmlElement *element, HtmlCharactersNode *char_node, bool *is_element_deleted) override
void WillNotRenderSummary (int pos, HtmlElement *element, HtmlCharactersNode *char_node) override
virtual GoogleString CacheKeySuffix () const
virtual void StartDocumentImpl ()
 Parser callbacks.
virtual void EndDocument ()
virtual void RenderDone ()
virtual void DetermineEnabled (GoogleString *disabled_reason)
 Filter control API.
- Protected Member Functions inherited from net_instaweb::CssSummarizerBase
virtual bool MustSummarize (HtmlElement *element) const
virtual void SummariesDone ()
int NumStyles () const
const SummaryInfoGetSummaryForStyle (int pos) const
virtual void StartElementImpl (HtmlElement *element)
virtual void Characters (HtmlCharactersNode *characters)
virtual void EndElementImpl (HtmlElement *element)
virtual RewriteContextMakeRewriteContext ()
- Protected Member Functions inherited from net_instaweb::RewriteFilter
virtual const char * LoggingId ()
 This class logs using id().
- Protected Member Functions inherited from net_instaweb::CommonFilter
ServerContextserver_context () const
const RewriteOptionsrewrite_options ()

Additional Inherited Members

- Public Types inherited from net_instaweb::HtmlFilter
enum  ScriptUsage { kWillInjectScripts, kMayInjectScripts, kNeverInjectsScripts }
 Describes a filter's relationship with scripts. More...
- Static Public Member Functions inherited from net_instaweb::CssSummarizerBase
static void InitStats (Statistics *statistics)
- Static Public Member Functions inherited from net_instaweb::RewriteFilter
static StringPiece GetCharsetForScript (const Resource *script, const StringPiece attribute_charset, const StringPiece enclosing_charset)
static GoogleString GetCharsetForStylesheet (const Resource *stylesheet, const StringPiece attribute_charset, const StringPiece enclosing_charset)
- Static Public Member Functions inherited from net_instaweb::CommonFilter
static bool ExtractMetaTagDetails (const HtmlElement &element, const ResponseHeaders *headers, GoogleString *content, GoogleString *mime_type, GoogleString *charset)
- Protected Types inherited from net_instaweb::CssSummarizerBase
enum  SummaryState {
  kSummaryOk, kSummaryStillPending, kSummaryCssParseError, kSummaryResourceCreationFailed,
  kSummaryInputUnavailable, kSummarySlotRemoved

Member Function Documentation

virtual RewriteDriver::InlineAuthorizationPolicy net_instaweb::CriticalSelectorFilter::AllowUnauthorizedDomain ( ) const

This filter needs access to all critical selectors (even those from unauthorized domains) in order to inline them into HTML. Inlining css from unauthorized domains into HTML is considered safe because it does not cause any new content to be executed compared to the unoptimized page.

Reimplemented from net_instaweb::CommonFilter.

virtual GoogleString net_instaweb::CriticalSelectorFilter::CacheKeySuffix ( ) const

Since our computation depends on the selectors that are relevant to the webpage, we incorporate them into the cache key as well.

Reimplemented from net_instaweb::CssSummarizerBase.

virtual void net_instaweb::CriticalSelectorFilter::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::CssSummarizerBase.

ScriptUsage net_instaweb::CriticalSelectorFilter::GetScriptUsage ( ) const

Note: there is also kRequiresScriptExecutionFilterSet in, 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::CriticalSelectorFilter::RenderDone ( )

Notifies a filter that an asynchronous rewrite & render computation phase has finished. This is not used by HtmlParse itself, but only by RewriteDriver for pre-render filters. Happens after the corresponding flush, for every flush window. Default implementation does nothing.

TODO(morlovich): Push this down into CommonFilter and convert all the pre-render filters to inherit off it.

Reimplemented from net_instaweb::CssSummarizerBase.

void net_instaweb::CriticalSelectorFilter::RenderSummary ( int  pos,
HtmlElement element,
HtmlCharactersNode char_node,
bool *  is_element_deleted 

This can be optionally overridden to modify a CSS element based on a successfully computed summary. It might not be invoked if cached information is not readily available, and will not be invoked if CSS parsing failed or some other error occurred. Invocation occurs from a thread with HTML parser context state, so both DOM modification and GetSummaryForStyle() are safe to use. If invoked, the method will be called before SummariesDone().

pos is the position of the element in the summary table.

element points to the <link> or <style> element that was summarized. If the element was a <style>, char_node will also point to its contents node; otherwise it will be NULL. Overrides need to set is_element_deleted to true if they delete the element.

The default implementation does nothing.

Reimplemented from net_instaweb::CssSummarizerBase.

void net_instaweb::CriticalSelectorFilter::Summarize ( Css::Stylesheet *  stylesheet,
GoogleString out 
) const

Overrides of CssSummarizerBase summary API. These help us compute the critical portions of the various fragments in the page, and to write them out to the page. We also use this to pick up the output of filters before us, like rewrite_css; so we run this even on things that will not contain on-screen critical CSS.

Implements net_instaweb::CssSummarizerBase.

void net_instaweb::CriticalSelectorFilter::WillNotRenderSummary ( int  pos,
HtmlElement element,
HtmlCharactersNode char_node 

Like RenderSummary, but called in cases where we're unable to render a summary for some reason (including not being able to compute one). Note: not called when we're canceled due to disable_further_processing.

Like with RenderSummary, this corresponds to entry [pos] in the summary table, and elements points to the <link> or <style> containing CSS, with char_node being non-null in case it was a <style>.

Reimplemented from net_instaweb::CssSummarizerBase.

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