| 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" |
| 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 Loading... |
| 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_ |
| OLD | NEW |