Page Speed Optimization Libraries  1.11.33.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends 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
 
ScriptUsage GetScriptUsage () const override
 
- Public Member Functions inherited from net_instaweb::RewriteFilter
 RewriteFilter (RewriteDriver *driver)
 
virtual void DetermineEnabled (GoogleString *disabled_reason)
 
virtual bool CanModifyUrls ()
 
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
 
void AddJsToElement (StringPiece js, HtmlElement *script)
 

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