Page Speed Optimization Libraries
1.2.24.1
|
Public Member Functions | |
RewriteFilter (RewriteDriver *driver) | |
virtual const char * | id () const =0 |
virtual void | DetermineEnabled () |
ResourcePtr | CreateInputResourceFromOutputResource (OutputResource *output_resource) |
virtual const UrlSegmentEncoder * | encoder () const |
virtual bool | ComputeOnTheFly () const |
virtual RewriteContext * | MakeRewriteContext () |
virtual RewriteContext * | MakeNestedRewriteContext (RewriteContext *parent, const ResourceSlotPtr &slot) |
virtual void | LogFilterModifiedContent () |
Static Public Member Functions | |
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) |
virtual bool net_instaweb::RewriteFilter::ComputeOnTheFly | ( | ) | const [virtual] |
If this method returns true, the data output of this filter will not be cached, and will instead be recomputed on the fly every time it is needed. (However, the transformed URL and similar metadata in CachedResult will be kept in cache).
The default implementation returns false.
Reimplemented in net_instaweb::CombiningFilter, net_instaweb::SimpleTextFilter, and net_instaweb::CacheExtender.
ResourcePtr net_instaweb::RewriteFilter::CreateInputResourceFromOutputResource | ( | OutputResource * | output_resource | ) |
Create an input resource by decoding output_resource using the filter's. Assures legality by explicitly permission-checking the result.
virtual void net_instaweb::RewriteFilter::DetermineEnabled | ( | ) | [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::EmptyHtmlFilter.
virtual const UrlSegmentEncoder* net_instaweb::RewriteFilter::encoder | ( | ) | const [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 in net_instaweb::CombiningFilter, net_instaweb::ImageRewriteFilter, net_instaweb::CssFilter, net_instaweb::ImageCombineFilter, net_instaweb::JsCombineFilter, and net_instaweb::CssCombineFilter.
static StringPiece net_instaweb::RewriteFilter::GetCharsetForScript | ( | const Resource * | script, |
const StringPiece | attribute_charset, | ||
const StringPiece | enclosing_charset | ||
) | [static] |
Determine the charset of a script. Logic taken from: http://www.whatwg.org/specs/web-apps/current-work/multipage/ scripting-1.html#establish-script-block-source 1. If the script has a Content-Type with a charset, use that, else 2. If the script has a charset attribute, use that, else 3. If the script has a BOM, use that, else 4. Use the charset of the enclosing page. If none of these are specified we return StringPiece(NULL). Note that Chrome and Opera do not actually implement this spec - it seems that for them a BOM overrules a charset attribute (swap rules 2 and 3). Note that the return value might point into one of the given arguments so you must ensure that it isn't used past the life of any of the arguments.
static GoogleString net_instaweb::RewriteFilter::GetCharsetForStylesheet | ( | const Resource * | stylesheet, |
const StringPiece | attribute_charset, | ||
const StringPiece | enclosing_charset | ||
) | [static] |
Determine the charset of a stylesheet. Logic taken from: http://www.opentag.com/xfaq_enc.htm#enc_howspecifyforcss with the BOM rule below added somewhat arbitrarily. In essence, we take the -last- charset we see, if you pretend that headers come last. 1. If the stylesheet has a Content-Type with a charset, use that, else 2. If the stylesheet has an initial , use that, else 3. If the stylesheet has a BOM, use that, else 4. If the style element has a charset attribute, use that, else 5. Use the charset of the enclosing page. If none of these are specified we return StringPiece(NULL). Note that I do not know which browsers implement this, but I know they aren't consistent, so some definitely don't.
virtual void net_instaweb::RewriteFilter::LogFilterModifiedContent | ( | ) | [virtual] |
Add this filter to the logged list of applied rewriters. This class logs using id().
Reimplemented from net_instaweb::CommonFilter.
virtual RewriteContext* net_instaweb::RewriteFilter::MakeNestedRewriteContext | ( | RewriteContext * | parent, |
const ResourceSlotPtr & | slot | ||
) | [virtual] |
Generates a nested RewriteContext appropriate for this filter. Default implementation returns NULL. This is used to implement ajax rewriting.
Reimplemented in net_instaweb::CssFilter, net_instaweb::SimpleTextFilter, net_instaweb::ImageRewriteFilter, and net_instaweb::JavascriptFilter.
virtual RewriteContext* net_instaweb::RewriteFilter::MakeRewriteContext | ( | ) | [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 in net_instaweb::CombiningFilter, net_instaweb::NestedFilter, net_instaweb::ImageRewriteFilter, net_instaweb::CssFilter, net_instaweb::SimpleTextFilter, net_instaweb::JsCombineFilter, net_instaweb::JavascriptFilter, net_instaweb::CacheExtender, and net_instaweb::CssCombineFilter.