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

#include "js_combine_filter.h"

Inheritance diagram for net_instaweb::JsCombineFilter:
net_instaweb::RewriteFilter net_instaweb::CommonFilter

Public Member Functions

 JsCombineFilter (RewriteDriver *rewrite_driver)
 
virtual const char * id () const
 
- Public Member Functions inherited from net_instaweb::RewriteFilter
 RewriteFilter (RewriteDriver *driver)
 
virtual bool ComputeOnTheFly () const
 
virtual RewriteContextMakeNestedRewriteContext (RewriteContext *parent, const ResourceSlotPtr &slot)
 
virtual void EncodeUserAgentIntoResourceContext (ResourceContext *context) const
 
virtual const
RewriteOptions::Filter
RelatedFilters (int *num_filters) const
 
virtual const StringPieceVector * RelatedOptions () const
 
- Public Member Functions inherited from net_instaweb::CommonFilter
 CommonFilter (RewriteDriver *driver)
 
const GoogleUrl & base_url () const
 Getters. More...
 
const GoogleUrl & decoded_base_url () const
 
RewriteDriverdriver () const
 
HtmlElement * noscript_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, bool *is_authorized)
 
ResourcePtr CreateInputResourceOrInsertDebugComment (StringPiece input_url, HtmlElement *element)
 
void ResolveUrl (StringPiece input_url, GoogleUrl *out_url)
 
bool BaseUrlIsValid () const
 
bool DebugMode () const
 
bool CanAddPagespeedOnloadToImage (const HtmlElement &)
 
virtual void LogFilterModifiedContent ()
 
virtual
RewriteDriver::InlineAuthorizationPolicy 
AllowUnauthorizedDomain () const
 
virtual bool IntendedForInlining () const
 

Static Public Member Functions

static void InitStats (Statistics *statistics)
 Registers the provided statistics variable names with 'statistics'.
 
static bool IsLikelyStrictMode (const pagespeed::js::JsTokenizerPatterns *jstp, StringPiece input)
 
- 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)
 

Static Public Attributes

static const char kJsFileCountReduction []
 statistics variable name
 
- Static Public Attributes inherited from net_instaweb::CommonFilter
static const char kCreateResourceFailedDebugMsg []
 Debug message to be inserted when resource creation fails.
 

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 (GoogleString *disabled_reason)
 
virtual void IEDirective (HtmlIEDirectiveNode *directive)
 
virtual const char * Name () const
 
virtual RewriteContextMakeRewriteContext ()
 
virtual const UrlSegmentEncoder * encoder () const
 
- 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 ()
 

Friends

class JsCombineFilterTest
 

Detailed Description

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";

Constructor & Destructor Documentation

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.

Member Function Documentation

virtual void net_instaweb::JsCombineFilter::Characters ( HtmlCharactersNode *  characters)
protectedvirtual

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 ( GoogleString *  disabled_reason)
protectedvirtual

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
inlineprotectedvirtual

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.

static bool net_instaweb::JsCombineFilter::IsLikelyStrictMode ( const pagespeed::js::JsTokenizerPatterns *  jstp,
StringPiece  input 
)
static

Returns true if given JavaScript is likely to be in strict mode. This is somewhat conservative towards saying yes, as it doesn't take finer points of ; grammar into account.

virtual RewriteContext* net_instaweb::JsCombineFilter::MakeRewriteContext ( )
protectedvirtual

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.


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