Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: chrome/browser/extensions/api/webview/webview_api.h

Issue 24243007: Allow webview API in an unblessed extension process (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed style error Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/extensions/api/webview/webview_api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_
6 #define CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ 6 #define CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_
7 7
8 #include "chrome/browser/extensions/api/execute_code_function.h" 8 #include "chrome/browser/extensions/api/execute_code_function.h"
9 #include "chrome/browser/guestview/webview/webview_guest.h"
9 10
11 // WARNING: Webview could be loaded in an unblessed context, thus any new
12 // APIs must extend WebviewExtensionFunction/WebviewExecuteCodeFunction which
13 // do a process ID check to prevent abuse by normal renderer processes.
14 // TODO(guohui): refactor WebviewExecuteCodeFunction to also extend
15 // WebviewExtensionFunction.
10 namespace extensions { 16 namespace extensions {
11 17
12 class WebviewClearDataFunction : public AsyncExtensionFunction { 18 // An abstract base class for async webview APIs. It does a process ID check
19 // in RunImpl, and then calls RunImplSafe which must be overriden by all
20 // subclasses.
21 class WebviewExtensionFunction : public AsyncExtensionFunction {
22 public:
23 WebviewExtensionFunction() {}
24
25 protected:
26 virtual ~WebviewExtensionFunction() {}
27
28 // ExtensionFunction implementation.
29 virtual bool RunImpl() OVERRIDE FINAL;
30
31 private:
32 virtual bool RunImplSafe(WebViewGuest* guest) = 0;
33 };
34
35 class WebviewClearDataFunction : public WebviewExtensionFunction {
13 public: 36 public:
14 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA); 37 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA);
15 38
16 WebviewClearDataFunction(); 39 WebviewClearDataFunction();
17 40
18 protected: 41 protected:
19 virtual ~WebviewClearDataFunction(); 42 virtual ~WebviewClearDataFunction();
20 43
21 // ExtensionFunction implementation. 44 private:
22 virtual bool RunImpl() OVERRIDE; 45 // WebviewExtensionFunction implementation.
46 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
23 47
24 private:
25 uint32 GetRemovalMask(); 48 uint32 GetRemovalMask();
26 void ClearDataDone(); 49 void ClearDataDone();
27 50
28 // Removal start time. 51 // Removal start time.
29 base::Time remove_since_; 52 base::Time remove_since_;
30 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum. 53 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum.
31 uint32 remove_mask_; 54 uint32 remove_mask_;
32 // Tracks any data related or parse errors. 55 // Tracks any data related or parse errors.
33 bool bad_message_; 56 bool bad_message_;
34 57
35 DISALLOW_COPY_AND_ASSIGN(WebviewClearDataFunction); 58 DISALLOW_COPY_AND_ASSIGN(WebviewClearDataFunction);
36 }; 59 };
37 60
38 class WebviewExecuteCodeFunction : public extensions::ExecuteCodeFunction { 61 class WebviewExecuteCodeFunction : public extensions::ExecuteCodeFunction {
39 public: 62 public:
40 WebviewExecuteCodeFunction(); 63 WebviewExecuteCodeFunction();
41 64
42 protected: 65 protected:
43 virtual ~WebviewExecuteCodeFunction(); 66 virtual ~WebviewExecuteCodeFunction();
44 67
45 // Initialize |details_| if it hasn't already been. 68 // Initialize |details_| if it hasn't already been.
46 virtual bool Init() OVERRIDE; 69 virtual bool Init() OVERRIDE;
47 virtual bool ShouldInsertCSS() const OVERRIDE; 70 virtual bool ShouldInsertCSS() const OVERRIDE;
48 virtual bool CanExecuteScriptOnPage() OVERRIDE; 71 virtual bool CanExecuteScriptOnPage() OVERRIDE;
49 virtual extensions::ScriptExecutor* GetScriptExecutor() OVERRIDE; 72 // Guarded by a process ID check.
73 virtual extensions::ScriptExecutor* GetScriptExecutor() OVERRIDE FINAL;
50 virtual bool IsWebView() const OVERRIDE; 74 virtual bool IsWebView() const OVERRIDE;
51 75
52 private: 76 private:
53 // Contains extension resource built from path of file which is 77 // Contains extension resource built from path of file which is
54 // specified in JSON arguments. 78 // specified in JSON arguments.
55 extensions::ExtensionResource resource_; 79 extensions::ExtensionResource resource_;
56 80
57 int guest_instance_id_; 81 int guest_instance_id_;
58 82
59 DISALLOW_COPY_AND_ASSIGN(WebviewExecuteCodeFunction); 83 DISALLOW_COPY_AND_ASSIGN(WebviewExecuteCodeFunction);
(...skipping 25 matching lines...) Expand all
85 virtual ~WebviewInsertCSSFunction() {} 109 virtual ~WebviewInsertCSSFunction() {}
86 110
87 virtual bool ShouldInsertCSS() const OVERRIDE; 111 virtual bool ShouldInsertCSS() const OVERRIDE;
88 112
89 DECLARE_EXTENSION_FUNCTION("webview.insertCSS", WEBVIEW_INSERTCSS) 113 DECLARE_EXTENSION_FUNCTION("webview.insertCSS", WEBVIEW_INSERTCSS)
90 114
91 private: 115 private:
92 DISALLOW_COPY_AND_ASSIGN(WebviewInsertCSSFunction); 116 DISALLOW_COPY_AND_ASSIGN(WebviewInsertCSSFunction);
93 }; 117 };
94 118
95 class WebviewGoFunction : public AsyncExtensionFunction { 119 class WebviewGoFunction : public WebviewExtensionFunction {
96 public: 120 public:
97 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO); 121 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO);
98 122
99 WebviewGoFunction(); 123 WebviewGoFunction();
100 124
101 protected: 125 protected:
102 virtual ~WebviewGoFunction(); 126 virtual ~WebviewGoFunction();
103 127
104 // ExtensionFunction implementation. 128 private:
105 virtual bool RunImpl() OVERRIDE; 129 // WebviewExtensionFunction implementation.
130 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
106 131
107 private:
108 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction); 132 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction);
109 }; 133 };
110 134
111 class WebviewReloadFunction : public AsyncExtensionFunction { 135 class WebviewReloadFunction : public WebviewExtensionFunction {
112 public: 136 public:
113 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD); 137 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD);
114 138
115 WebviewReloadFunction(); 139 WebviewReloadFunction();
116 140
117 protected: 141 protected:
118 virtual ~WebviewReloadFunction(); 142 virtual ~WebviewReloadFunction();
119 143
120 // ExtensionFunction implementation. 144 private:
121 virtual bool RunImpl() OVERRIDE; 145 // WebviewExtensionFunction implementation.
146 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
122 147
123 private:
124 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction); 148 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction);
125 }; 149 };
126 150
127 class WebviewSetPermissionFunction : public AsyncExtensionFunction { 151 class WebviewSetPermissionFunction : public WebviewExtensionFunction {
128 public: 152 public:
129 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION); 153 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION);
130 154
131 WebviewSetPermissionFunction(); 155 WebviewSetPermissionFunction();
132 156
133 protected: 157 protected:
134 virtual ~WebviewSetPermissionFunction(); 158 virtual ~WebviewSetPermissionFunction();
135 159
136 // ExtensionFunction implementation. 160 private:
137 virtual bool RunImpl() OVERRIDE; 161 // WebviewExtensionFunction implementation.
162 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
138 163
139 private:
140 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction); 164 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction);
141 }; 165 };
142 166
143 class WebviewOverrideUserAgentFunction: public AsyncExtensionFunction { 167 class WebviewOverrideUserAgentFunction: public AsyncExtensionFunction {
144 public: 168 public:
145 DECLARE_EXTENSION_FUNCTION("webview.overrideUserAgent", 169 DECLARE_EXTENSION_FUNCTION("webview.overrideUserAgent",
146 WEBVIEW_OVERRIDEUSERAGENT); 170 WEBVIEW_OVERRIDEUSERAGENT);
147 171
148 WebviewOverrideUserAgentFunction(); 172 WebviewOverrideUserAgentFunction();
149 173
150 protected: 174 protected:
151 virtual ~WebviewOverrideUserAgentFunction(); 175 virtual ~WebviewOverrideUserAgentFunction();
152 176
153 // ExtensionFunction implementation. 177 // ExtensionFunction implementation.
154 virtual bool RunImpl() OVERRIDE; 178 virtual bool RunImpl() OVERRIDE;
155 179
156 private: 180 private:
157 DISALLOW_COPY_AND_ASSIGN(WebviewOverrideUserAgentFunction); 181 DISALLOW_COPY_AND_ASSIGN(WebviewOverrideUserAgentFunction);
158 }; 182 };
159 183
160 class WebviewStopFunction : public AsyncExtensionFunction { 184 class WebviewStopFunction : public WebviewExtensionFunction {
161 public: 185 public:
162 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP); 186 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP);
163 187
164 WebviewStopFunction(); 188 WebviewStopFunction();
165 189
166 protected: 190 protected:
167 virtual ~WebviewStopFunction(); 191 virtual ~WebviewStopFunction();
168 192
169 // ExtensionFunction implementation. 193 private:
170 virtual bool RunImpl() OVERRIDE; 194 // WebviewExtensionFunction implementation.
195 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
171 196
172 private:
173 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction); 197 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction);
174 }; 198 };
175 199
176 class WebviewTerminateFunction : public AsyncExtensionFunction { 200 class WebviewTerminateFunction : public WebviewExtensionFunction {
177 public: 201 public:
178 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE); 202 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE);
179 203
180 WebviewTerminateFunction(); 204 WebviewTerminateFunction();
181 205
182 protected: 206 protected:
183 virtual ~WebviewTerminateFunction(); 207 virtual ~WebviewTerminateFunction();
184 208
185 // ExtensionFunction implementation. 209 private:
186 virtual bool RunImpl() OVERRIDE; 210 // WebviewExtensionFunction implementation.
211 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE;
187 212
188 private:
189 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction); 213 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction);
190 }; 214 };
191 215
192 } // namespace extensions 216 } // namespace extensions
193 217
194 #endif // CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ 218 #endif // CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/api/webview/webview_api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698