Index: chrome/browser/extensions/api/tabs/tabs_api.h |
diff --git a/chrome/browser/extensions/api/tabs/tabs.h b/chrome/browser/extensions/api/tabs/tabs_api.h |
similarity index 50% |
rename from chrome/browser/extensions/api/tabs/tabs.h |
rename to chrome/browser/extensions/api/tabs/tabs_api.h |
index 5011c3f18b02368872cf493f3ca23b8cca8bf709..db362ccd70ffe5d5a207281a3515c8657c061a34 100644 |
--- a/chrome/browser/extensions/api/tabs/tabs.h |
+++ b/chrome/browser/extensions/api/tabs/tabs_api.h |
@@ -2,14 +2,16 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_H__ |
-#define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_H__ |
+#ifndef CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_API_H_ |
+#define CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_API_H_ |
#include <string> |
#include <vector> |
#include "base/compiler_specific.h" |
#include "chrome/browser/extensions/extension_function.h" |
+#include "chrome/common/extensions/extension_resource.h" |
+#include "chrome/common/extensions/user_script.h" |
#include "content/public/browser/notification_observer.h" |
#include "content/public/browser/notification_registrar.h" |
#include "googleurl/src/gurl.h" |
@@ -27,33 +29,41 @@ namespace content { |
class WebContents; |
} |
+namespace extensions { |
+namespace api { |
+namespace tabs { |
+struct InjectDetails; |
+} // namespace tabs |
+} // namespace api |
+} // namespace extensions |
+ |
namespace skia { |
class PlatformBitmap; |
} |
// Windows |
-class GetWindowFunction : public SyncExtensionFunction { |
- virtual ~GetWindowFunction() {} |
+class WindowsGetFunction : public SyncExtensionFunction { |
+ virtual ~WindowsGetFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.get") |
}; |
-class GetCurrentWindowFunction : public SyncExtensionFunction { |
- virtual ~GetCurrentWindowFunction() {} |
+class WindowsGetCurrentFunction : public SyncExtensionFunction { |
+ virtual ~WindowsGetCurrentFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.getCurrent") |
}; |
-class GetLastFocusedWindowFunction : public SyncExtensionFunction { |
- virtual ~GetLastFocusedWindowFunction() {} |
+class WindowsGetLastFocusedFunction : public SyncExtensionFunction { |
+ virtual ~WindowsGetLastFocusedFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.getLastFocused") |
}; |
-class GetAllWindowsFunction : public SyncExtensionFunction { |
- virtual ~GetAllWindowsFunction() {} |
+class WindowsGetAllFunction : public SyncExtensionFunction { |
+ virtual ~WindowsGetAllFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.getAll") |
}; |
-class CreateWindowFunction : public SyncExtensionFunction { |
- virtual ~CreateWindowFunction() {} |
+class WindowsCreateFunction : public SyncExtensionFunction { |
+ virtual ~WindowsCreateFunction() {} |
virtual bool RunImpl() OVERRIDE; |
// Returns whether the window should be created in incognito mode. |
// |urls| is the list of urls to open. If we are creating an incognito window, |
@@ -66,64 +76,64 @@ class CreateWindowFunction : public SyncExtensionFunction { |
bool* is_error); |
DECLARE_EXTENSION_FUNCTION_NAME("windows.create") |
}; |
-class UpdateWindowFunction : public SyncExtensionFunction { |
- virtual ~UpdateWindowFunction() {} |
+class WindowsUpdateFunction : public SyncExtensionFunction { |
+ virtual ~WindowsUpdateFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.update") |
}; |
-class RemoveWindowFunction : public SyncExtensionFunction { |
- virtual ~RemoveWindowFunction() {} |
+class WindowsRemoveFunction : public SyncExtensionFunction { |
+ virtual ~WindowsRemoveFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("windows.remove") |
}; |
// Tabs |
-class GetTabFunction : public SyncExtensionFunction { |
- virtual ~GetTabFunction() {} |
+class TabsGetFunction : public SyncExtensionFunction { |
+ virtual ~TabsGetFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.get") |
}; |
-class GetCurrentTabFunction : public SyncExtensionFunction { |
- virtual ~GetCurrentTabFunction() {} |
+class TabsGetCurrentFunction : public SyncExtensionFunction { |
+ virtual ~TabsGetCurrentFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.getCurrent") |
}; |
-class GetSelectedTabFunction : public SyncExtensionFunction { |
- virtual ~GetSelectedTabFunction() {} |
+class TabsGetSelectedFunction : public SyncExtensionFunction { |
+ virtual ~TabsGetSelectedFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.getSelected") |
}; |
-class GetAllTabsInWindowFunction : public SyncExtensionFunction { |
- virtual ~GetAllTabsInWindowFunction() {} |
+class TabsGetAllInWindowFunction : public SyncExtensionFunction { |
+ virtual ~TabsGetAllInWindowFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.getAllInWindow") |
}; |
-class QueryTabsFunction : public SyncExtensionFunction { |
- virtual ~QueryTabsFunction() {} |
+class TabsQueryFunction : public SyncExtensionFunction { |
+ virtual ~TabsQueryFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.query") |
}; |
-class CreateTabFunction : public SyncExtensionFunction { |
- virtual ~CreateTabFunction() {} |
+class TabsCreateFunction : public SyncExtensionFunction { |
+ virtual ~TabsCreateFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.create") |
}; |
-class DuplicateTabFunction : public SyncExtensionFunction { |
- virtual ~DuplicateTabFunction() {} |
+class TabsDuplicateFunction : public SyncExtensionFunction { |
+ virtual ~TabsDuplicateFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.duplicate") |
}; |
-class HighlightTabsFunction : public SyncExtensionFunction { |
- virtual ~HighlightTabsFunction() {} |
+class TabsHighlightFunction : public SyncExtensionFunction { |
+ virtual ~TabsHighlightFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.highlight") |
}; |
-class UpdateTabFunction : public AsyncExtensionFunction { |
+class TabsUpdateFunction : public AsyncExtensionFunction { |
public: |
- UpdateTabFunction(); |
+ TabsUpdateFunction(); |
protected: |
- virtual ~UpdateTabFunction() {} |
+ virtual ~TabsUpdateFunction() {} |
virtual bool UpdateURLIfPresent(base::DictionaryValue* update_props, |
int tab_id, |
bool* is_async); |
@@ -140,25 +150,25 @@ class UpdateTabFunction : public AsyncExtensionFunction { |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.update") |
}; |
-class MoveTabsFunction : public SyncExtensionFunction { |
- virtual ~MoveTabsFunction() {} |
+class TabsMoveFunction : public SyncExtensionFunction { |
+ virtual ~TabsMoveFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.move") |
}; |
-class ReloadTabFunction : public SyncExtensionFunction { |
- virtual ~ReloadTabFunction() {} |
+class TabsReloadFunction : public SyncExtensionFunction { |
+ virtual ~TabsReloadFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.reload") |
}; |
-class RemoveTabsFunction : public SyncExtensionFunction { |
- virtual ~RemoveTabsFunction() {} |
+class TabsRemoveFunction : public SyncExtensionFunction { |
+ virtual ~TabsRemoveFunction() {} |
virtual bool RunImpl() OVERRIDE; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.remove") |
}; |
-class DetectTabLanguageFunction : public AsyncExtensionFunction, |
+class TabsDetectLanguageFunction : public AsyncExtensionFunction, |
public content::NotificationObserver { |
private: |
- virtual ~DetectTabLanguageFunction() {} |
+ virtual ~TabsDetectLanguageFunction() {} |
virtual bool RunImpl() OVERRIDE; |
virtual void Observe(int type, |
@@ -168,7 +178,7 @@ class DetectTabLanguageFunction : public AsyncExtensionFunction, |
content::NotificationRegistrar registrar_; |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.detectLanguage") |
}; |
-class CaptureVisibleTabFunction : public AsyncExtensionFunction, |
+class TabsCaptureVisibleTabFunction : public AsyncExtensionFunction, |
public content::NotificationObserver { |
public: |
static void RegisterUserPrefs(PrefServiceSyncable* service); |
@@ -182,7 +192,7 @@ class CaptureVisibleTabFunction : public AsyncExtensionFunction, |
// The default quality setting used when encoding jpegs. |
static const int kDefaultQuality; |
- virtual ~CaptureVisibleTabFunction() {} |
+ virtual ~TabsCaptureVisibleTabFunction() {} |
virtual bool RunImpl() OVERRIDE; |
virtual bool GetTabToCapture(content::WebContents** web_contents); |
virtual void Observe(int type, |
@@ -205,4 +215,76 @@ class CaptureVisibleTabFunction : public AsyncExtensionFunction, |
DECLARE_EXTENSION_FUNCTION_NAME("tabs.captureVisibleTab") |
}; |
-#endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_H__ |
+// Implement API call tabs.executeScript and tabs.insertCSS. |
+class ExecuteCodeInTabFunction : public AsyncExtensionFunction { |
+ public: |
+ ExecuteCodeInTabFunction(); |
+ |
+ protected: |
+ virtual ~ExecuteCodeInTabFunction(); |
+ |
+ // ExtensionFunction: |
+ virtual bool HasPermission() OVERRIDE; |
+ virtual bool RunImpl() OVERRIDE; |
+ |
+ // Message handler. |
+ virtual void OnExecuteCodeFinished(const std::string& error, |
+ int32 on_page_id, |
+ const GURL& on_url, |
+ const ListValue& script_result); |
+ |
+ private: |
+ // Initialize the |execute_tab_id_| and |details_| if they haven't already |
+ // been. Returns whether initialization was successful. |
+ bool Init(); |
+ |
+ // Called when contents from the file whose path is specified in JSON |
+ // arguments has been loaded. |
+ void DidLoadFile(bool success, const std::string& data); |
+ |
+ // Runs on FILE thread. Loads message bundles for the extension and |
+ // localizes the CSS data. Calls back DidLoadAndLocalizeFile on the UI thread. |
+ void LocalizeCSS( |
+ const std::string& data, |
+ const std::string& extension_id, |
+ const FilePath& extension_path, |
+ const std::string& extension_default_locale); |
+ |
+ // Called when contents from the loaded file have been localized. |
+ void DidLoadAndLocalizeFile(bool success, const std::string& data); |
+ |
+ // Run in UI thread. Code string contains the code to be executed. Returns |
+ // true on success. If true is returned, this does an AddRef. |
+ bool Execute(const std::string& code_string); |
+ |
+ // Id of tab which executes code. |
+ int execute_tab_id_; |
+ |
+ // The injection details. |
+ scoped_ptr<extensions::api::tabs::InjectDetails> details_; |
+ |
+ // Contains extension resource built from path of file which is |
+ // specified in JSON arguments. |
+ ExtensionResource resource_; |
+}; |
+ |
+class TabsExecuteScriptFunction : public ExecuteCodeInTabFunction { |
+ private: |
+ virtual ~TabsExecuteScriptFunction() {} |
+ |
+ virtual void OnExecuteCodeFinished(const std::string& error, |
+ int32 on_page_id, |
+ const GURL& on_url, |
+ const ListValue& script_result) OVERRIDE; |
+ |
+ DECLARE_EXTENSION_FUNCTION_NAME("tabs.executeScript") |
+}; |
+ |
+class TabsInsertCSSFunction : public ExecuteCodeInTabFunction { |
+ private: |
+ virtual ~TabsInsertCSSFunction() {} |
+ |
+ DECLARE_EXTENSION_FUNCTION_NAME("tabs.insertCSS") |
+}; |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_API_TABS_TABS_API_H_ |