def89de18109e913dd4607f5abf83c2beaa0496e
[platform/framework/web/crosswalk.git] / src / content / renderer / internal_document_state_data.h
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_RENDERER_INTERNAL_DOCUMENT_STATE_DATA_H_
6 #define CONTENT_RENDERER_INTERNAL_DOCUMENT_STATE_DATA_H_
7
8 #include <string>
9
10 #include "base/memory/scoped_ptr.h"
11 #include "base/supports_user_data.h"
12 #include "third_party/WebKit/public/platform/WebURLRequest.h"
13 #include "url/gurl.h"
14
15 namespace blink {
16 class WebDataSource;
17 }
18
19 namespace content {
20
21 class DocumentState;
22
23 // Stores internal state per WebDataSource.
24 class InternalDocumentStateData : public base::SupportsUserData::Data {
25  public:
26   InternalDocumentStateData();
27
28   static InternalDocumentStateData* FromDataSource(blink::WebDataSource* ds);
29   static InternalDocumentStateData* FromDocumentState(DocumentState* ds);
30
31   // Set to true once RenderViewImpl::didFirstVisuallyNonEmptyLayout() is
32   // invoked.
33   bool did_first_visually_non_empty_layout() const {
34     return did_first_visually_non_empty_layout_;
35   }
36   void set_did_first_visually_non_empty_layout(bool value) {
37     did_first_visually_non_empty_layout_ = value;
38   }
39
40   // Set to true once RenderViewImpl::DidFlushPaint() is inovked after
41   // RenderViewImpl::didFirstVisuallyNonEmptyLayout(). In other words after the
42   // page has painted something.
43   bool did_first_visually_non_empty_paint() const {
44     return did_first_visually_non_empty_paint_;
45   }
46   void set_did_first_visually_non_empty_paint(bool value) {
47     did_first_visually_non_empty_paint_ = value;
48   }
49
50   int http_status_code() const { return http_status_code_; }
51   void set_http_status_code(int http_status_code) {
52     http_status_code_ = http_status_code;
53   }
54
55   const GURL& searchable_form_url() const { return searchable_form_url_; }
56   void set_searchable_form_url(const GURL& url) { searchable_form_url_ = url; }
57   const std::string& searchable_form_encoding() const {
58     return searchable_form_encoding_;
59   }
60   void set_searchable_form_encoding(const std::string& encoding) {
61     searchable_form_encoding_ = encoding;
62   }
63
64   // True if an error page should be used, if the http status code also
65   // indicates an error.
66   bool use_error_page() const { return use_error_page_; }
67   void set_use_error_page(bool use_error_page) {
68     use_error_page_ = use_error_page;
69   }
70
71   // True if the user agent was overridden for this page.
72   bool is_overriding_user_agent() const { return is_overriding_user_agent_; }
73   void set_is_overriding_user_agent(bool state) {
74     is_overriding_user_agent_ = state;
75   }
76
77   // True if we have to reset the scroll and scale state of the page
78   // after the provisional load has been committed.
79   bool must_reset_scroll_and_scale_state() const {
80     return must_reset_scroll_and_scale_state_;
81   }
82   void set_must_reset_scroll_and_scale_state(bool state) {
83     must_reset_scroll_and_scale_state_ = state;
84   }
85
86   // Sets the cache policy. The cache policy is only used if explicitly set and
87   // by default is not set. You can mark a NavigationState as not having a cache
88   // state by way of clear_cache_policy_override.
89   void set_cache_policy_override(
90       blink::WebURLRequest::CachePolicy cache_policy) {
91     cache_policy_override_ = cache_policy;
92     cache_policy_override_set_ = true;
93   }
94   blink::WebURLRequest::CachePolicy cache_policy_override() const {
95     return cache_policy_override_;
96   }
97   void clear_cache_policy_override() {
98     cache_policy_override_set_ = false;
99     cache_policy_override_ = blink::WebURLRequest::UseProtocolCachePolicy;
100   }
101   bool is_cache_policy_override_set() const {
102     return cache_policy_override_set_;
103   }
104
105  protected:
106   virtual ~InternalDocumentStateData();
107
108  private:
109   bool did_first_visually_non_empty_layout_;
110   bool did_first_visually_non_empty_paint_;
111   int http_status_code_;
112   GURL searchable_form_url_;
113   std::string searchable_form_encoding_;
114   bool use_error_page_;
115   bool is_overriding_user_agent_;
116   bool must_reset_scroll_and_scale_state_;
117   bool cache_policy_override_set_;
118   blink::WebURLRequest::CachePolicy cache_policy_override_;
119
120   DISALLOW_COPY_AND_ASSIGN(InternalDocumentStateData);
121 };
122
123 }  // namespace content
124
125 #endif  // CONTENT_RENDERER_INTERNAL_DOCUMENT_STATE_DATA_H_