19 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_RESOURCE_SLOT_H_
20 #define NET_INSTAWEB_REWRITER_PUBLIC_RESOURCE_SLOT_H_
26 #include "pagespeed/kernel/base/basictypes.h"
27 #include "pagespeed/kernel/base/ref_counted_ptr.h"
28 #include "pagespeed/kernel/base/string.h"
29 #include "pagespeed/kernel/base/string_util.h"
30 #include "pagespeed/kernel/base/vector_deque.h"
31 #include "pagespeed/kernel/html/html_element.h"
32 #include "pagespeed/kernel/http/google_url.h"
34 namespace net_instaweb {
37 class HtmlResourceSlot;
43 typedef RefCountedPtr<ResourceSlot> ResourceSlotPtr;
44 typedef RefCountedPtr<HtmlResourceSlot> HtmlResourceSlotPtr;
45 typedef std::vector<ResourceSlotPtr> ResourceSlotVector;
56 : resource_(resource),
57 preserve_urls_(
false),
58 disable_rendering_(
false),
59 should_delete_element_(
false),
60 disable_further_processing_(
false),
61 was_optimized_(
false) {
64 ResourcePtr resource()
const {
return resource_; }
66 virtual HtmlElement*
element()
const = 0;
86 bool preserve_urls()
const {
return preserve_urls_; }
92 bool disable_rendering()
const {
return disable_rendering_; }
101 should_delete_element_ =
true;
102 disable_further_processing_ =
true;
104 bool should_delete_element()
const {
return should_delete_element_; }
125 disable_further_processing_ = x;
128 bool disable_further_processing()
const {
129 return disable_further_processing_;
137 virtual void Render() = 0;
180 UrlRelativity url_relativity,
181 const GoogleUrl& base_url);
188 ResourcePtr resource_;
190 bool disable_rendering_;
191 bool should_delete_element_;
192 bool disable_further_processing_;
197 VectorDeque<RewriteContext*> contexts_;
207 virtual HtmlElement*
element()
const {
return NULL; }
216 GoogleString location_;
228 virtual HtmlElement*
element()
const {
return NULL; }
244 HtmlElement::Attribute* attribute,
247 virtual HtmlElement*
element()
const {
return element_; }
248 HtmlElement::Attribute* attribute()
const {
return attribute_; }
264 HtmlElement* element_;
265 HtmlElement::Attribute* attribute_;
267 UrlRelativity url_relativity_;
269 int begin_line_number_;
270 int end_line_number_;
277 bool operator()(
const HtmlResourceSlotPtr& p,
278 const HtmlResourceSlotPtr& q)
const;
281 typedef std::set<HtmlResourceSlotPtr,
virtual void Finished()
Definition: resource_slot.h:142
void set_disable_rendering(bool x)
Definition: resource_slot.h:91
bool was_optimized() const
Definition: resource_slot.h:112
virtual GoogleString LocationString() const
Definition: resource_slot.h:209
virtual HtmlElement * element() const
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
Definition: resource_slot.h:207
void SetResource(const ResourcePtr &resource)
static GoogleString RelativizeOrPassthrough(const RewriteOptions *options, StringPiece url, UrlRelativity url_relativity, const GoogleUrl &base_url)
Definition: resource_slot.h:53
virtual GoogleString LocationString() const
virtual bool DirectSetUrl(const StringPiece &url)
virtual bool CanDirectSetUrl()
Definition: resource_slot.h:158
Definition: resource_slot.h:240
virtual HtmlElement * element() const
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
Definition: resource_slot.h:247
void RequestDeleteElement()
Definition: resource_slot.h:100
virtual HtmlElement * element() const
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
Definition: resource_slot.h:228
virtual GoogleString LocationString() const
void set_disable_further_processing(bool x)
Definition: resource_slot.h:124
UrlRelativity url_relativity() const
Definition: resource_slot.h:257
Definition: resource_slot.h:223
Definition: rewrite_driver.h:98
RewriteContext * LastContext() const
void AddContext(RewriteContext *context)
Adds a new context to this slot.
Definition: resource_slot.h:165
Definition: resource_slot.h:204
virtual bool DirectSetUrl(const StringPiece &url)
Definition: rewrite_context.h:146
virtual GoogleString LocationString() const =0
virtual bool CanDirectSetUrl()
Definition: resource_slot.h:253
Definition: resource_slot.h:275
virtual void Render()
Definition: resource_slot.h:208
Definition: rewrite_options.h:84
void DetachContext(RewriteContext *context)
virtual HtmlElement * element() const =0
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
void set_was_optimized(bool x)
Marks the slot as having been optimized.
Definition: resource_slot.h:115
void set_preserve_urls(bool x)
Definition: resource_slot.h:85