Page Speed Optimization Libraries
1.7.30.1
|
#include "js_combine_filter.h"
Public Member Functions | |
JsCombineFilter (RewriteDriver *rewrite_driver) | |
virtual const char * | id () const |
Static Public Member Functions | |
static void | InitStats (Statistics *statistics) |
Registers the provided statistics variable names with 'statistics'. | |
Static Public Attributes | |
static const char | kJsFileCountReduction [] |
statistics variable name | |
Protected Member Functions | |
virtual void | StartDocumentImpl () |
RewriteFilter overrides --- HTML parsing event handlers. | |
virtual void | StartElementImpl (HtmlElement *element) |
virtual void | EndElementImpl (HtmlElement *element) |
virtual void | Characters (HtmlCharactersNode *characters) |
virtual void | Flush () |
virtual void | DetermineEnabled () |
virtual void | IEDirective (HtmlIEDirectiveNode *directive) |
virtual const char * | Name () const |
virtual RewriteContext * | MakeRewriteContext () |
virtual const UrlSegmentEncoder * | encoder () const |
Friends | |
class | JsCombineFilterTest |
Implements combining of multiple external JS files into one via the following transformation:
<script src="a.js"> <stuff> <script src="b.js">
gets turned into:
<script src="a.js+b.js"> <script>eval(mod_pagespeed_${hash("a.js")})</script> <stuff> <script>eval(mod_pagespeed_${hash("b.js")})</script>
where $hash stands for using the active Hasher and tweaking the result to be a valid identifier continuation. Further, the combined source file has the code: var mod_pagespeed_${hash("a.js")} = "code of a.js as a string literal"; var mod_pagespeed_${hash("b.js")} = "code of b.js as a string literal";
net_instaweb::JsCombineFilter::JsCombineFilter | ( | RewriteDriver * | rewrite_driver | ) | [explicit] |
rewrite_driver is the context owning us, and filter_id is the ID we are registered under.
virtual void net_instaweb::JsCombineFilter::Characters | ( | HtmlCharactersNode * | characters | ) | [protected, virtual] |
If a subclass overloads this function and wishes to use InsertNodeAtBodyEnd(), it needs to make an upcall to this implementation for InsertNodeAtBodyEnd() to work correctly.
Reimplemented from net_instaweb::CommonFilter.
virtual void net_instaweb::JsCombineFilter::DetermineEnabled | ( | ) | [protected, virtual] |
Override DetermineEnabled so that filters that use the DOM cohort of the property cache can enable writing of it in the RewriterDriver. Filters inheriting from RewriteDriver that use the DOM cohort should override UsePropertyCacheDomCohort to return true.
Reimplemented from net_instaweb::RewriteFilter.
virtual const UrlSegmentEncoder* net_instaweb::JsCombineFilter::encoder | ( | ) | const [inline, protected, virtual] |
All RewriteFilters define how they encode URLs and other associated information needed for a rewrite into a URL. The default implementation handles a single URL with no extra data. The filter owns the encoder.
Reimplemented from net_instaweb::RewriteFilter.
virtual RewriteContext* net_instaweb::JsCombineFilter::MakeRewriteContext | ( | ) | [protected, virtual] |
Generates a RewriteContext appropriate for this filter. Default implementation returns NULL. This must be overridden by filters. This is used to implement Fetch.
Reimplemented from net_instaweb::RewriteFilter.