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 {
36 class HtmlResourceSlot;
42 typedef RefCountedPtr<ResourceSlot> ResourceSlotPtr;
43 typedef RefCountedPtr<HtmlResourceSlot> HtmlResourceSlotPtr;
44 typedef std::vector<ResourceSlotPtr> ResourceSlotVector;
55 : resource_(resource),
56 disable_rendering_(
false),
57 should_delete_element_(
false),
58 disable_further_processing_(
false),
59 was_optimized_(
false) {
62 ResourcePtr resource()
const {
return resource_; }
64 virtual HtmlElement*
element()
const = 0;
85 bool disable_rendering()
const {
return disable_rendering_; }
94 should_delete_element_ =
true;
95 disable_further_processing_ =
true;
97 bool should_delete_element()
const {
return should_delete_element_; }
118 disable_further_processing_ = x;
121 bool disable_further_processing()
const {
122 return disable_further_processing_;
130 virtual void Render() = 0;
173 UrlRelativity url_relativity,
174 const GoogleUrl& base_url);
181 ResourcePtr resource_;
182 bool disable_rendering_;
183 bool should_delete_element_;
184 bool disable_further_processing_;
189 VectorDeque<RewriteContext*> contexts_;
201 virtual HtmlElement*
element()
const {
return NULL; }
217 HtmlElement::Attribute* attribute,
220 virtual HtmlElement*
element()
const {
return element_; }
221 HtmlElement::Attribute* attribute()
const {
return attribute_; }
237 HtmlElement* element_;
238 HtmlElement::Attribute* attribute_;
240 UrlRelativity url_relativity_;
242 int begin_line_number_;
243 int end_line_number_;
250 bool operator()(
const HtmlResourceSlotPtr& p,
251 const HtmlResourceSlotPtr& q)
const;
254 typedef std::set<HtmlResourceSlotPtr,
virtual void Finished()
Definition: resource_slot.h:135
void set_disable_rendering(bool x)
Definition: resource_slot.h:84
bool was_optimized() const
Definition: resource_slot.h:105
virtual GoogleString LocationString()
void SetResource(const ResourcePtr &resource)
static GoogleString RelativizeOrPassthrough(const RewriteOptions *options, StringPiece url, UrlRelativity url_relativity, const GoogleUrl &base_url)
Definition: resource_slot.h:52
virtual bool DirectSetUrl(const StringPiece &url)
virtual bool CanDirectSetUrl()
Definition: resource_slot.h:151
Definition: resource_slot.h:213
virtual GoogleString LocationString()
virtual HtmlElement * element() const
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
Definition: resource_slot.h:220
void RequestDeleteElement()
Definition: resource_slot.h:93
virtual HtmlElement * element() const
Return HTML element associated with slot, or NULL if none (CSS, IPRO)
Definition: resource_slot.h:201
void set_disable_further_processing(bool x)
Definition: resource_slot.h:117
UrlRelativity url_relativity() const
Definition: resource_slot.h:230
Definition: resource_slot.h:196
Definition: rewrite_driver.h:98
RewriteContext * LastContext() const
void AddContext(RewriteContext *context)
Adds a new context to this slot.
Definition: resource_slot.h:158
virtual bool DirectSetUrl(const StringPiece &url)
Definition: rewrite_context.h:144
virtual bool CanDirectSetUrl()
Definition: resource_slot.h:226
Definition: resource_slot.h:248
virtual GoogleString LocationString()=0
Definition: rewrite_options.h:83
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:108