Chromium Code Reviews| 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/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 Loading... | |
| 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_ |
| OLD | NEW |