OLD | NEW |
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/capture_web_contents_function.h" | 8 #include "chrome/browser/extensions/api/capture_web_contents_function.h" |
9 #include "chrome/browser/extensions/api/execute_code_function.h" | 9 #include "chrome/browser/extensions/api/execute_code_function.h" |
10 #include "chrome/browser/guest_view/web_view/web_view_find_helper.h" | 10 #include "chrome/browser/guest_view/web_view/web_view_find_helper.h" |
11 #include "chrome/browser/guest_view/web_view/web_view_guest.h" | 11 #include "chrome/browser/guest_view/web_view/web_view_guest.h" |
12 | 12 |
13 // WARNING: Webview could be loaded in an unblessed context, thus any new | 13 // WARNING: Webview could be loaded in an unblessed context, thus any new |
14 // APIs must extend WebviewExtensionFunction/WebviewExecuteCodeFunction which | 14 // APIs must extend WebviewExtensionFunction/WebviewExecuteCodeFunction which |
15 // do a process ID check to prevent abuse by normal renderer processes. | 15 // do a process ID check to prevent abuse by normal renderer processes. |
16 // TODO(guohui): refactor WebviewExecuteCodeFunction to also extend | 16 // TODO(guohui): refactor WebviewExecuteCodeFunction to also extend |
17 // WebviewExtensionFunction. | 17 // WebviewExtensionFunction. |
18 namespace extensions { | 18 namespace extensions { |
19 | 19 |
20 // An abstract base class for async webview APIs. It does a process ID check | 20 // An abstract base class for async webview APIs. It does a process ID check |
21 // in RunImpl, and then calls RunImplSafe which must be overriden by all | 21 // in RunAsync, and then calls RunAsyncSafe which must be overriden by all |
22 // subclasses. | 22 // subclasses. |
23 class WebviewExtensionFunction : public AsyncExtensionFunction { | 23 class WebviewExtensionFunction : public AsyncExtensionFunction { |
24 public: | 24 public: |
25 WebviewExtensionFunction() {} | 25 WebviewExtensionFunction() {} |
26 | 26 |
27 protected: | 27 protected: |
28 virtual ~WebviewExtensionFunction() {} | 28 virtual ~WebviewExtensionFunction() {} |
29 | 29 |
30 // ExtensionFunction implementation. | 30 // ExtensionFunction implementation. |
31 virtual bool RunImpl() OVERRIDE FINAL; | 31 virtual bool RunAsync() OVERRIDE FINAL; |
32 | 32 |
33 private: | 33 private: |
34 virtual bool RunImplSafe(WebViewGuest* guest) = 0; | 34 virtual bool RunAsyncSafe(WebViewGuest* guest) = 0; |
35 }; | 35 }; |
36 | 36 |
37 class WebviewContextMenusCreateFunction : public AsyncExtensionFunction { | 37 class WebviewContextMenusCreateFunction : public AsyncExtensionFunction { |
38 public: | 38 public: |
39 DECLARE_EXTENSION_FUNCTION("webview.contextMenusCreate", | 39 DECLARE_EXTENSION_FUNCTION("webview.contextMenusCreate", |
40 WEBVIEW_CONTEXTMENUSCREATE); | 40 WEBVIEW_CONTEXTMENUSCREATE); |
41 WebviewContextMenusCreateFunction() {} | 41 WebviewContextMenusCreateFunction() {} |
42 | 42 |
43 protected: | 43 protected: |
44 virtual ~WebviewContextMenusCreateFunction() {} | 44 virtual ~WebviewContextMenusCreateFunction() {} |
45 | 45 |
46 // ExtensionFunction implementation. | 46 // ExtensionFunction implementation. |
47 virtual bool RunImpl() OVERRIDE; | 47 virtual bool RunAsync() OVERRIDE; |
48 | 48 |
49 private: | 49 private: |
50 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusCreateFunction); | 50 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusCreateFunction); |
51 }; | 51 }; |
52 | 52 |
53 class WebviewContextMenusUpdateFunction : public AsyncExtensionFunction { | 53 class WebviewContextMenusUpdateFunction : public AsyncExtensionFunction { |
54 public: | 54 public: |
55 DECLARE_EXTENSION_FUNCTION("webview.contextMenusUpdate", | 55 DECLARE_EXTENSION_FUNCTION("webview.contextMenusUpdate", |
56 WEBVIEW_CONTEXTMENUSUPDATE); | 56 WEBVIEW_CONTEXTMENUSUPDATE); |
57 WebviewContextMenusUpdateFunction() {} | 57 WebviewContextMenusUpdateFunction() {} |
58 | 58 |
59 protected: | 59 protected: |
60 virtual ~WebviewContextMenusUpdateFunction() {} | 60 virtual ~WebviewContextMenusUpdateFunction() {} |
61 | 61 |
62 // ExtensionFunction implementation. | 62 // ExtensionFunction implementation. |
63 virtual bool RunImpl() OVERRIDE; | 63 virtual bool RunAsync() OVERRIDE; |
64 | 64 |
65 private: | 65 private: |
66 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusUpdateFunction); | 66 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusUpdateFunction); |
67 }; | 67 }; |
68 | 68 |
69 class WebviewContextMenusRemoveFunction : public AsyncExtensionFunction { | 69 class WebviewContextMenusRemoveFunction : public AsyncExtensionFunction { |
70 public: | 70 public: |
71 DECLARE_EXTENSION_FUNCTION("webview.contextMenusRemove", | 71 DECLARE_EXTENSION_FUNCTION("webview.contextMenusRemove", |
72 WEBVIEW_CONTEXTMENUSREMOVE); | 72 WEBVIEW_CONTEXTMENUSREMOVE); |
73 WebviewContextMenusRemoveFunction() {} | 73 WebviewContextMenusRemoveFunction() {} |
74 | 74 |
75 protected: | 75 protected: |
76 virtual ~WebviewContextMenusRemoveFunction() {} | 76 virtual ~WebviewContextMenusRemoveFunction() {} |
77 | 77 |
78 // ExtensionFunction implementation. | 78 // ExtensionFunction implementation. |
79 virtual bool RunImpl() OVERRIDE; | 79 virtual bool RunAsync() OVERRIDE; |
80 | 80 |
81 private: | 81 private: |
82 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusRemoveFunction); | 82 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusRemoveFunction); |
83 }; | 83 }; |
84 | 84 |
85 class WebviewContextMenusRemoveAllFunction : public AsyncExtensionFunction { | 85 class WebviewContextMenusRemoveAllFunction : public AsyncExtensionFunction { |
86 public: | 86 public: |
87 DECLARE_EXTENSION_FUNCTION("webview.contextMenusRemoveAll", | 87 DECLARE_EXTENSION_FUNCTION("webview.contextMenusRemoveAll", |
88 WEBVIEW_CONTEXTMENUSREMOVEALL); | 88 WEBVIEW_CONTEXTMENUSREMOVEALL); |
89 WebviewContextMenusRemoveAllFunction() {} | 89 WebviewContextMenusRemoveAllFunction() {} |
90 | 90 |
91 protected: | 91 protected: |
92 virtual ~WebviewContextMenusRemoveAllFunction() {} | 92 virtual ~WebviewContextMenusRemoveAllFunction() {} |
93 | 93 |
94 // ExtensionFunction implementation. | 94 // ExtensionFunction implementation. |
95 virtual bool RunImpl() OVERRIDE; | 95 virtual bool RunAsync() OVERRIDE; |
96 | 96 |
97 private: | 97 private: |
98 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusRemoveAllFunction); | 98 DISALLOW_COPY_AND_ASSIGN(WebviewContextMenusRemoveAllFunction); |
99 }; | 99 }; |
100 | 100 |
101 class WebviewClearDataFunction : public WebviewExtensionFunction { | 101 class WebviewClearDataFunction : public WebviewExtensionFunction { |
102 public: | 102 public: |
103 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA); | 103 DECLARE_EXTENSION_FUNCTION("webview.clearData", WEBVIEW_CLEARDATA); |
104 | 104 |
105 WebviewClearDataFunction(); | 105 WebviewClearDataFunction(); |
106 | 106 |
107 protected: | 107 protected: |
108 virtual ~WebviewClearDataFunction(); | 108 virtual ~WebviewClearDataFunction(); |
109 | 109 |
110 private: | 110 private: |
111 // WebviewExtensionFunction implementation. | 111 // WebviewExtensionFunction implementation. |
112 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 112 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
113 | 113 |
114 uint32 GetRemovalMask(); | 114 uint32 GetRemovalMask(); |
115 void ClearDataDone(); | 115 void ClearDataDone(); |
116 | 116 |
117 // Removal start time. | 117 // Removal start time. |
118 base::Time remove_since_; | 118 base::Time remove_since_; |
119 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum. | 119 // Removal mask, corresponds to StoragePartition::RemoveDataMask enum. |
120 uint32 remove_mask_; | 120 uint32 remove_mask_; |
121 // Tracks any data related or parse errors. | 121 // Tracks any data related or parse errors. |
122 bool bad_message_; | 122 bool bad_message_; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 class WebviewSetZoomFunction : public WebviewExtensionFunction { | 207 class WebviewSetZoomFunction : public WebviewExtensionFunction { |
208 public: | 208 public: |
209 DECLARE_EXTENSION_FUNCTION("webview.setZoom", WEBVIEW_SETZOOM); | 209 DECLARE_EXTENSION_FUNCTION("webview.setZoom", WEBVIEW_SETZOOM); |
210 | 210 |
211 WebviewSetZoomFunction(); | 211 WebviewSetZoomFunction(); |
212 | 212 |
213 protected: | 213 protected: |
214 virtual ~WebviewSetZoomFunction(); | 214 virtual ~WebviewSetZoomFunction(); |
215 | 215 |
216 private: | 216 private: |
217 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 217 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
218 | 218 |
219 DISALLOW_COPY_AND_ASSIGN(WebviewSetZoomFunction); | 219 DISALLOW_COPY_AND_ASSIGN(WebviewSetZoomFunction); |
220 }; | 220 }; |
221 | 221 |
222 class WebviewGetZoomFunction : public WebviewExtensionFunction { | 222 class WebviewGetZoomFunction : public WebviewExtensionFunction { |
223 public: | 223 public: |
224 DECLARE_EXTENSION_FUNCTION("webview.getZoom", WEBVIEW_GETZOOM); | 224 DECLARE_EXTENSION_FUNCTION("webview.getZoom", WEBVIEW_GETZOOM); |
225 | 225 |
226 WebviewGetZoomFunction(); | 226 WebviewGetZoomFunction(); |
227 | 227 |
228 protected: | 228 protected: |
229 virtual ~WebviewGetZoomFunction(); | 229 virtual ~WebviewGetZoomFunction(); |
230 | 230 |
231 private: | 231 private: |
232 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 232 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
233 | 233 |
234 DISALLOW_COPY_AND_ASSIGN(WebviewGetZoomFunction); | 234 DISALLOW_COPY_AND_ASSIGN(WebviewGetZoomFunction); |
235 }; | 235 }; |
236 | 236 |
237 class WebviewFindFunction : public WebviewExtensionFunction { | 237 class WebviewFindFunction : public WebviewExtensionFunction { |
238 public: | 238 public: |
239 DECLARE_EXTENSION_FUNCTION("webview.find", WEBVIEW_FIND); | 239 DECLARE_EXTENSION_FUNCTION("webview.find", WEBVIEW_FIND); |
240 | 240 |
241 WebviewFindFunction(); | 241 WebviewFindFunction(); |
242 | 242 |
243 // Exposes SendResponse() for use by WebviewFindHelper. | 243 // Exposes SendResponse() for use by WebviewFindHelper. |
244 using WebviewExtensionFunction::SendResponse; | 244 using WebviewExtensionFunction::SendResponse; |
245 | 245 |
246 protected: | 246 protected: |
247 virtual ~WebviewFindFunction(); | 247 virtual ~WebviewFindFunction(); |
248 | 248 |
249 private: | 249 private: |
250 // WebviewExtensionFunction implementation. | 250 // WebviewExtensionFunction implementation. |
251 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 251 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
252 | 252 |
253 DISALLOW_COPY_AND_ASSIGN(WebviewFindFunction); | 253 DISALLOW_COPY_AND_ASSIGN(WebviewFindFunction); |
254 }; | 254 }; |
255 | 255 |
256 class WebviewStopFindingFunction : public WebviewExtensionFunction { | 256 class WebviewStopFindingFunction : public WebviewExtensionFunction { |
257 public: | 257 public: |
258 DECLARE_EXTENSION_FUNCTION("webview.stopFinding", WEBVIEW_STOPFINDING); | 258 DECLARE_EXTENSION_FUNCTION("webview.stopFinding", WEBVIEW_STOPFINDING); |
259 | 259 |
260 WebviewStopFindingFunction(); | 260 WebviewStopFindingFunction(); |
261 | 261 |
262 protected: | 262 protected: |
263 virtual ~WebviewStopFindingFunction(); | 263 virtual ~WebviewStopFindingFunction(); |
264 | 264 |
265 private: | 265 private: |
266 // WebviewExtensionFunction implementation. | 266 // WebviewExtensionFunction implementation. |
267 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 267 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
268 | 268 |
269 DISALLOW_COPY_AND_ASSIGN(WebviewStopFindingFunction); | 269 DISALLOW_COPY_AND_ASSIGN(WebviewStopFindingFunction); |
270 }; | 270 }; |
271 | 271 |
272 class WebviewGoFunction : public WebviewExtensionFunction { | 272 class WebviewGoFunction : public WebviewExtensionFunction { |
273 public: | 273 public: |
274 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO); | 274 DECLARE_EXTENSION_FUNCTION("webview.go", WEBVIEW_GO); |
275 | 275 |
276 WebviewGoFunction(); | 276 WebviewGoFunction(); |
277 | 277 |
278 protected: | 278 protected: |
279 virtual ~WebviewGoFunction(); | 279 virtual ~WebviewGoFunction(); |
280 | 280 |
281 private: | 281 private: |
282 // WebviewExtensionFunction implementation. | 282 // WebviewExtensionFunction implementation. |
283 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 283 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
284 | 284 |
285 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction); | 285 DISALLOW_COPY_AND_ASSIGN(WebviewGoFunction); |
286 }; | 286 }; |
287 | 287 |
288 class WebviewReloadFunction : public WebviewExtensionFunction { | 288 class WebviewReloadFunction : public WebviewExtensionFunction { |
289 public: | 289 public: |
290 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD); | 290 DECLARE_EXTENSION_FUNCTION("webview.reload", WEBVIEW_RELOAD); |
291 | 291 |
292 WebviewReloadFunction(); | 292 WebviewReloadFunction(); |
293 | 293 |
294 protected: | 294 protected: |
295 virtual ~WebviewReloadFunction(); | 295 virtual ~WebviewReloadFunction(); |
296 | 296 |
297 private: | 297 private: |
298 // WebviewExtensionFunction implementation. | 298 // WebviewExtensionFunction implementation. |
299 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 299 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
300 | 300 |
301 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction); | 301 DISALLOW_COPY_AND_ASSIGN(WebviewReloadFunction); |
302 }; | 302 }; |
303 | 303 |
304 class WebviewSetPermissionFunction : public WebviewExtensionFunction { | 304 class WebviewSetPermissionFunction : public WebviewExtensionFunction { |
305 public: | 305 public: |
306 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION); | 306 DECLARE_EXTENSION_FUNCTION("webview.setPermission", WEBVIEW_SETPERMISSION); |
307 | 307 |
308 WebviewSetPermissionFunction(); | 308 WebviewSetPermissionFunction(); |
309 | 309 |
310 protected: | 310 protected: |
311 virtual ~WebviewSetPermissionFunction(); | 311 virtual ~WebviewSetPermissionFunction(); |
312 | 312 |
313 private: | 313 private: |
314 // WebviewExtensionFunction implementation. | 314 // WebviewExtensionFunction implementation. |
315 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 315 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
316 | 316 |
317 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction); | 317 DISALLOW_COPY_AND_ASSIGN(WebviewSetPermissionFunction); |
318 }; | 318 }; |
319 | 319 |
320 class WebviewOverrideUserAgentFunction: public WebviewExtensionFunction { | 320 class WebviewOverrideUserAgentFunction: public WebviewExtensionFunction { |
321 public: | 321 public: |
322 DECLARE_EXTENSION_FUNCTION("webview.overrideUserAgent", | 322 DECLARE_EXTENSION_FUNCTION("webview.overrideUserAgent", |
323 WEBVIEW_OVERRIDEUSERAGENT); | 323 WEBVIEW_OVERRIDEUSERAGENT); |
324 | 324 |
325 WebviewOverrideUserAgentFunction(); | 325 WebviewOverrideUserAgentFunction(); |
326 | 326 |
327 protected: | 327 protected: |
328 virtual ~WebviewOverrideUserAgentFunction(); | 328 virtual ~WebviewOverrideUserAgentFunction(); |
329 | 329 |
330 private: | 330 private: |
331 // WebviewExtensionFunction implementation. | 331 // WebviewExtensionFunction implementation. |
332 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 332 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
333 | 333 |
334 DISALLOW_COPY_AND_ASSIGN(WebviewOverrideUserAgentFunction); | 334 DISALLOW_COPY_AND_ASSIGN(WebviewOverrideUserAgentFunction); |
335 }; | 335 }; |
336 | 336 |
337 class WebviewStopFunction : public WebviewExtensionFunction { | 337 class WebviewStopFunction : public WebviewExtensionFunction { |
338 public: | 338 public: |
339 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP); | 339 DECLARE_EXTENSION_FUNCTION("webview.stop", WEBVIEW_STOP); |
340 | 340 |
341 WebviewStopFunction(); | 341 WebviewStopFunction(); |
342 | 342 |
343 protected: | 343 protected: |
344 virtual ~WebviewStopFunction(); | 344 virtual ~WebviewStopFunction(); |
345 | 345 |
346 private: | 346 private: |
347 // WebviewExtensionFunction implementation. | 347 // WebviewExtensionFunction implementation. |
348 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 348 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
349 | 349 |
350 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction); | 350 DISALLOW_COPY_AND_ASSIGN(WebviewStopFunction); |
351 }; | 351 }; |
352 | 352 |
353 class WebviewTerminateFunction : public WebviewExtensionFunction { | 353 class WebviewTerminateFunction : public WebviewExtensionFunction { |
354 public: | 354 public: |
355 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE); | 355 DECLARE_EXTENSION_FUNCTION("webview.terminate", WEBVIEW_TERMINATE); |
356 | 356 |
357 WebviewTerminateFunction(); | 357 WebviewTerminateFunction(); |
358 | 358 |
359 protected: | 359 protected: |
360 virtual ~WebviewTerminateFunction(); | 360 virtual ~WebviewTerminateFunction(); |
361 | 361 |
362 private: | 362 private: |
363 // WebviewExtensionFunction implementation. | 363 // WebviewExtensionFunction implementation. |
364 virtual bool RunImplSafe(WebViewGuest* guest) OVERRIDE; | 364 virtual bool RunAsyncSafe(WebViewGuest* guest) OVERRIDE; |
365 | 365 |
366 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction); | 366 DISALLOW_COPY_AND_ASSIGN(WebviewTerminateFunction); |
367 }; | 367 }; |
368 | 368 |
369 } // namespace extensions | 369 } // namespace extensions |
370 | 370 |
371 #endif // CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ | 371 #endif // CHROME_BROWSER_EXTENSIONS_API_WEBVIEW_WEBVIEW_API_H_ |
OLD | NEW |