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

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: add abstract class and fix comments 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"
10
11 // WARNING: Webview could be loaded in an unblessed context, thus any new
12 // APIs must extend WebviewExtensionFunction/WebviewExecuteCodeFunction which
not at google - send to devlin 2013/09/25 23:46:46 FWIW, it's not totally clear to me (i.e. not clear
guohui 2013/09/26 13:58:00 TODO added.
13 // do a process ID check to prevent abuse by normal renderer processes.
9 14
10 namespace extensions { 15 namespace extensions {
11 16
12 class WebviewClearDataFunction : public AsyncExtensionFunction { 17 // An abstract base class for async webview APIs. It does a process ID check
18 // in RunImpl, and then calls RunImplSafe which must be overriden by all
19 // subclasses.
20 class WebviewExtensionFunction : public AsyncExtensionFunction {
21 public:
22 WebviewExtensionFunction() {}
23
24 protected:
25 virtual ~WebviewExtensionFunction() {}
26
27 // ExtensionFunction implementation.
28 virtual bool RunImpl() OVERRIDE FINAL;
29
30 private:
31 virtual bool RunImplSafe(WebViewGuest* guest) = 0;
32 };
33
34 class WebviewClearDataFunction : public WebviewExtensionFunction {
13 public: 35 public:
14 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA); 36 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA);
15 37
16 WebviewClearDataFunction(); 38 WebviewClearDataFunction();
17 39
18 protected: 40 protected:
19 virtual ~WebviewClearDataFunction(); 41 virtual ~WebviewClearDataFunction();
20 42
21 // ExtensionFunction implementation. 43 private:
22 virtual bool RunImpl() OVERRIDE; 44 virtual bool RunImplSafe(WebViewGuest* guest);
23 45
24 private:
25 uint32 GetRemovalMask(); 46 uint32 GetRemovalMask();
26 void ClearDataDone(); 47 void ClearDataDone();
27 48
28 // Removal start time. 49 // Removal start time.
29 base::Time remove_since_; 50 base::Time remove_since_;
30 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum. 51 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum.
31 uint32 remove_mask_; 52 uint32 remove_mask_;
32 // Tracks any data related or parse errors. 53 // Tracks any data related or parse errors.
33 bool bad_message_; 54 bool bad_message_;
34 55
35 DISALLOW_COPY_AND_ASSIGN(WebviewClearDataFunction); 56 DISALLOW_COPY_AND_ASSIGN(WebviewClearDataFunction);
36 }; 57 };
37 58
38 class WebviewExecuteCodeFunction : public extensions::ExecuteCodeFunction { 59 class WebviewExecuteCodeFunction : public extensions::ExecuteCodeFunction {
39 public: 60 public:
40 WebviewExecuteCodeFunction(); 61 WebviewExecuteCodeFunction();
41 62
42 protected: 63 protected:
43 virtual ~WebviewExecuteCodeFunction(); 64 virtual ~WebviewExecuteCodeFunction();
44 65
45 // Initialize |details_| if it hasn't already been. 66 // Initialize |details_| if it hasn't already been.
46 virtual bool Init() OVERRIDE; 67 virtual bool Init() OVERRIDE;
47 virtual bool ShouldInsertCSS() const OVERRIDE; 68 virtual bool ShouldInsertCSS() const OVERRIDE;
48 virtual bool CanExecuteScriptOnPage() OVERRIDE; 69 virtual bool CanExecuteScriptOnPage() OVERRIDE;
49 virtual extensions::ScriptExecutor* GetScriptExecutor() OVERRIDE; 70 // Guarded by a process ID check.
71 virtual extensions::ScriptExecutor* GetScriptExecutor() OVERRIDE FINAL;
50 virtual bool IsWebView() const OVERRIDE; 72 virtual bool IsWebView() const OVERRIDE;
51 73
52 private: 74 private:
53 // Contains extension resource built from path of file which is 75 // Contains extension resource built from path of file which is
54 // specified in JSON arguments. 76 // specified in JSON arguments.
55 extensions::ExtensionResource resource_; 77 extensions::ExtensionResource resource_;
56 78
57 int guest_instance_id_; 79 int guest_instance_id_;
58 80
59 DISALLOW_COPY_AND_ASSIGN(WebviewExecuteCodeFunction); 81 DISALLOW_COPY_AND_ASSIGN(WebviewExecuteCodeFunction);
(...skipping 25 matching lines...) Expand all
85 virtual ~WebviewInsertCSSFunction() {} 107 virtual ~WebviewInsertCSSFunction() {}
86 108
87 virtual bool ShouldInsertCSS() const OVERRIDE; 109 virtual bool ShouldInsertCSS() const OVERRIDE;
88 110
89 DECLARE_EXTENSION_FUNCTION("webview.insertCSS", WEBVIEW_INSERTCSS) 111 DECLARE_EXTENSION_FUNCTION("webview.insertCSS", WEBVIEW_INSERTCSS)
90 112
91 private: 113 private:
92 DISALLOW_COPY_AND_ASSIGN(WebviewInsertCSSFunction); 114 DISALLOW_COPY_AND_ASSIGN(WebviewInsertCSSFunction);
93 }; 115 };
94 116
95 class WebviewGoFunction : public AsyncExtensionFunction { 117 class WebviewGoFunction : public WebviewExtensionFunction {
96 public: 118 public:
97 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO); 119 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO);
98 120
99 WebviewGoFunction(); 121 WebviewGoFunction();
100 122
101 protected: 123 protected:
102 virtual ~WebviewGoFunction(); 124 virtual ~WebviewGoFunction();
103 125
104 // ExtensionFunction implementation. 126 private:
105 virtual bool RunImpl() OVERRIDE; 127 virtual bool RunImplSafe(WebViewGuest* guest);
106 128
107 private:
108 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction); 129 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction);
109 }; 130 };
110 131
111 class WebviewReloadFunction : public AsyncExtensionFunction { 132 class WebviewReloadFunction : public WebviewExtensionFunction {
112 public: 133 public:
113 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD); 134 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD);
114 135
115 WebviewReloadFunction(); 136 WebviewReloadFunction();
116 137
117 protected: 138 protected:
118 virtual ~WebviewReloadFunction(); 139 virtual ~WebviewReloadFunction();
119 140
120 // ExtensionFunction implementation. 141 private:
121 virtual bool RunImpl() OVERRIDE; 142 virtual bool RunImplSafe(WebViewGuest* guest);
122 143
123 private:
124 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction); 144 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction);
125 }; 145 };
126 146
127 class WebviewSetPermissionFunction : public AsyncExtensionFunction { 147 class WebviewSetPermissionFunction : public WebviewExtensionFunction {
128 public: 148 public:
129 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION); 149 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION);
130 150
131 WebviewSetPermissionFunction(); 151 WebviewSetPermissionFunction();
132 152
133 protected: 153 protected:
134 virtual ~WebviewSetPermissionFunction(); 154 virtual ~WebviewSetPermissionFunction();
135 155
136 // ExtensionFunction implementation. 156 private:
137 virtual bool RunImpl() OVERRIDE; 157 virtual bool RunImplSafe(WebViewGuest* guest);
138 158
139 private:
140 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction); 159 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction);
141 }; 160 };
142 161
143 class WebviewStopFunction : public AsyncExtensionFunction { 162 class WebviewStopFunction : public WebviewExtensionFunction {
144 public: 163 public:
145 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP); 164 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP);
146 165
147 WebviewStopFunction(); 166 WebviewStopFunction();
148 167
149 protected: 168 protected:
150 virtual ~WebviewStopFunction(); 169 virtual ~WebviewStopFunction();
151 170
152 // ExtensionFunction implementation. 171 private:
153 virtual bool RunImpl() OVERRIDE; 172 virtual bool RunImplSafe(WebViewGuest* guest);
154 173
155 private:
156 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction); 174 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction);
157 }; 175 };
158 176
159 class WebviewTerminateFunction : public AsyncExtensionFunction { 177 class WebviewTerminateFunction : public WebviewExtensionFunction {
160 public: 178 public:
161 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE); 179 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE);
162 180
163 WebviewTerminateFunction(); 181 WebviewTerminateFunction();
164 182
165 protected: 183 protected:
166 virtual ~WebviewTerminateFunction(); 184 virtual ~WebviewTerminateFunction();
167 185
168 // ExtensionFunction implementation. 186 private:
169 virtual bool RunImpl() OVERRIDE; 187 virtual bool RunImplSafe(WebViewGuest* guest);
170 188
171 private:
172 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction); 189 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction);
173 }; 190 };
174 191
175 } // namespace extensions 192 } // namespace extensions
176 193
177 #endif // CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ 194 #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