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

Unified Diff: chrome/test/automation/automation_json_requests.h

Issue 8806030: Add commands to Chrome WebDriver for installing and manipulating extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/automation/automation_json_requests.h
diff --git a/chrome/test/automation/automation_json_requests.h b/chrome/test/automation/automation_json_requests.h
index 28d607d334d6a466747a8cb020b6b1f32b4359e9..be3187994178929daf7fd28a4e1b9dadeeed5996 100644
--- a/chrome/test/automation/automation_json_requests.h
+++ b/chrome/test/automation/automation_json_requests.h
@@ -11,7 +11,9 @@
#include "base/compiler_specific.h"
#include "base/file_path.h"
+#include "base/string_number_conversions.h"
#include "chrome/common/automation_constants.h"
+#include "chrome/common/automation_id.h"
#include "ui/base/keycodes/keyboard_codes.h"
class AutomationMessageSender;
@@ -37,6 +39,112 @@ struct WebKeyEvent {
int modifiers;
};
+// Uniquely identifies a particular WebView.
+// This is needed because Chrome used to accept just tab IDs, while
+// now it accepts IDs for other types of WebViews.
+// TOOD(kkania): Remove this abstraction once Chrome 16 is unsupported.
+class WebViewId {
+ public:
+ // Creates an ID for the given view ID.
+ static WebViewId ForView(const AutomationId& view_id);
+
+ // Creates an ID for the given tab ID.
+ static WebViewId ForOldStyleTab(int tab_id);
+
+ // Creates an invalid ID.
+ WebViewId();
+
+ // Updates the given dictionary to include this ID. If the ID refers to a
+ // view ID, |view_id_key| will be the key modified in the dictionary.
+ void UpdateDictionary(base::DictionaryValue* dictionary,
+ const std::string& view_id_key) const;
+
+ // Returns whether this ID is valid. Even if it is valid, the object it
+ // refers to may not exist.
+ bool IsValid() const;
+
+ // Returns an |AutomationId| made from this ID.
+ AutomationId GetId() const;
+
+ // Returns whether this ID refers to a tab.
+ bool IsTab() const;
+
+ int tab_id() const;
+
+ // The old style is to use a single integer ID for a tab. The new style is
+ // to use an automation ID which may refer to a number of different object
+ // types.
+ bool old_style() const;
+
+ private:
+ // Whether this ID is an old-style integer tab ID.
+ bool old_style_;
+
+ AutomationId id_;
+ int tab_id_;
+};
+
+// Used to locate a WebView. The same locator may locate different WebViews
+// at different times. This is needed because Chrome used to only accept
+// browser/tab indices, while the new Chrome accepts a unique ID.
+// TOOD(kkania): Simplify this once Chrome 16 is unsupported.
+class WebViewLocator {
+ public:
+ // Creates a locator for locating the given tab.
+ static WebViewLocator ForIndexPair(int browser_index, int tab_index);
+
+ // Creates a locator for locating the given view.
+ static WebViewLocator ForViewId(const AutomationId& view_id);
+
+ // Creates an invalid locator.
+ WebViewLocator();
+ ~WebViewLocator();
+
+ // Updates the given dictionary to include the given locator information.
+ // If this locator is a view ID, |view_id_key| will be the name of the key
+ // to update.
+ void UpdateDictionary(base::DictionaryValue* dict,
+ const std::string& view_id_key) const;
+
+ int browser_index() const;
+ int tab_index() const;
+
+ private:
+ enum Type {
+ kTypeIndexPair,
+ kTypeViewId,
+ };
+
+ struct IndexPair {
+ int browser_index;
+ int tab_index;
+ };
+
+ struct Locator {
+ Locator();
+ ~Locator();
+
+ IndexPair index_pair;
+ AutomationId view_id;
+ };
+
+ Type type_;
+ Locator locator_;
+};
+
+// Collection of info about a given WebView.
+struct WebViewInfo {
+ WebViewInfo(const WebViewId& view_id,
+ const std::string& extension_id);
+ ~WebViewInfo();
+
+ // The view's unique ID.
+ WebViewId view_id;
+
+ // If this view belongs to an extension, this ID will be set to it.
+ std::string extension_id;
+};
+
// Sends a JSON request to the chrome automation provider. Returns true
// if the JSON request was successfully sent and the reply was received.
// If true, |success| will be set to whether the JSON request was
@@ -77,8 +185,7 @@ bool SendGetIndicesFromTabHandleJSONRequest(
// navigations to complete. Returns true on success.
bool SendNavigateToURLJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
const std::string& url,
int navigation_count,
AutomationMsg_NavigationResponseValues* nav_response,
@@ -89,35 +196,31 @@ bool SendNavigateToURLJSONRequest(
// result of the execution and ownership will be given to the caller.
bool SendExecuteJavascriptJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
const std::string& frame_xpath,
const std::string& javascript,
base::Value** result,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests the specified tab to go forward. Waits for the load to complete.
+// Requests the specified view to go forward. Waits for the load to complete.
// Returns true on success.
bool SendGoForwardJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests the specified tab to go back. Waits for the load to complete.
+// Requests the specified view to go back. Waits for the load to complete.
// Returns true on success.
bool SendGoBackJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests the specified tab to reload. Waits for the load to complete.
+// Requests the specified view to reload. Waits for the load to complete.
// Returns true on success.
bool SendReloadJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests a snapshot of the entire page to be saved to the given path
@@ -125,27 +228,10 @@ bool SendReloadJSONRequest(
// Returns true on success.
bool SendCaptureEntirePageJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
const FilePath& path,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests the url of the specified tab. Returns true on success.
-bool SendGetTabURLJSONRequest(
- AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
- std::string* url,
- std::string* error_msg) WARN_UNUSED_RESULT;
-
-// Requests the title of the specified tab. Returns true on success.
-bool SendGetTabTitleJSONRequest(
- AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
- std::string* tab_title,
- std::string* error_msg) WARN_UNUSED_RESULT;
-
// Requests all the cookies for the given URL. On success returns true and
// caller takes ownership of |cookies|, which is a list of all the cookies in
// dictionary format.
@@ -174,50 +260,60 @@ bool SendSetCookieJSONRequest(
// Requests the IDs for all open tabs. Returns true on success.
bool SendGetTabIdsJSONRequest(
AutomationMessageSender* sender,
- std::vector<int>* tab_ids,
+ std::vector<WebViewInfo>* views,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests info for all open views. Returns true on success.
+bool SendGetWebViewsJSONRequest(
+ AutomationMessageSender* sender,
+ std::vector<WebViewInfo>* views,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests whether the given tab ID is valid. Returns true on success.
bool SendIsTabIdValidJSONRequest(
AutomationMessageSender* sender,
- int tab_id,
+ const WebViewId& view_id,
bool* is_valid,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests to close the given tab. Returns true on success.
-bool SendCloseTabJSONRequest(
+// Requests whether the given automation ID refers to an actual automation
+// object. Returns true on success.
+bool SendDoesAutomationObjectExistJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewId& view_id,
+ bool* does_exist,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests to close the given view. Returns true on success.
+bool SendCloseViewJSONRequest(
+ AutomationMessageSender* sender,
+ const WebViewLocator& locator,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit event for a mouse move to the given
-// coordinate in the specified tab. Returns true on success.
+// coordinate in the specified view. Returns true on success.
bool SendMouseMoveJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int x,
int y,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit events for a mouse click at the given
-// coordinate in the specified tab. Returns true on success.
+// coordinate in the specified view. Returns true on success.
bool SendMouseClickJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
automation::MouseButton button,
int x,
int y,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit events for a mouse drag from the start to end
-// coordinates given in the specified tab. Returns true on success.
+// coordinates given in the specified view. Returns true on success.
bool SendMouseDragJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int start_x,
int start_y,
int end_x,
@@ -225,60 +321,54 @@ bool SendMouseDragJSONRequest(
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit event for a mouse button down at the given
-// coordinate in the specified tab. Returns true on success.
+// coordinate in the specified view. Returns true on success.
bool SendMouseButtonDownJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int x,
int y,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit event for a mouse button up at the given
-// coordinate in the specified tab. Returns true on success.
+// coordinate in the specified view. Returns true on success.
bool SendMouseButtonUpJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int x,
int y,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit event for a mouse double click at the given
-// coordinate in the specified tab. Returns true on success.
+// coordinate in the specified view. Returns true on success.
bool SendMouseDoubleClickJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int x,
int y,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the WebKit event for the given |WebKeyEvent| in a
-// specified tab. Returns true on success.
+// specified view. Returns true on success.
bool SendWebKeyEventJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
const WebKeyEvent& key_event,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to send the key event for the given keycode+modifiers to a
-// browser window containing the specified tab. Returns true on success.
+// browser window containing the specified view. Returns true on success.
bool SendNativeKeyEventJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
ui::KeyboardCode key_code,
int modifiers,
std::string* error_msg) WARN_UNUSED_RESULT;
// Requests to drag and drop the file paths at the given coordinate in the
-// specified tab. Returns true on success.
+// specified view. Returns true on success.
bool SendDragAndDropFilePathsJSONRequest(
AutomationMessageSender* sender,
- int browser_index,
- int tab_index,
+ const WebViewLocator& locator,
int x,
int y,
const std::vector<FilePath::StringType>& paths,
@@ -305,8 +395,8 @@ bool SendAcceptPromptAppModalDialogJSONRequest(
const std::string& prompt_text,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests to wait for all tabs to stop loading. Returns true on success.
-bool SendWaitForAllTabsToStopLoadingJSONRequest(
+// Requests to wait for all views to stop loading. Returns true on success.
+bool SendWaitForAllViewsToStopLoadingJSONRequest(
AutomationMessageSender* sender,
std::string* error_msg) WARN_UNUSED_RESULT;
@@ -317,12 +407,6 @@ bool SendGetChromeDriverAutomationVersion(
int* version,
std::string* error_msg) WARN_UNUSED_RESULT;
-// Requests info about all installed extensions. Returns true on success.
-bool SendGetExtensionsInfoJSONRequest(
- AutomationMessageSender* sender,
- base::ListValue* extensions_list,
- std::string* error_msg) WARN_UNUSED_RESULT;
-
// Requests that the given extension be installed. If |with_ui| is false,
// the extension will be installed silently. Returns true on success.
bool SendInstallExtensionJSONRequest(
@@ -332,4 +416,42 @@ bool SendInstallExtensionJSONRequest(
std::string* extension_id,
std::string* error_msg) WARN_UNUSED_RESULT;
+// Requests info about all installed extensions. Returns true on success.
+bool SendGetExtensionsInfoJSONRequest(
+ AutomationMessageSender* sender,
+ base::ListValue* extensions_list,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests whether the given extension's page action is visible in the
+// given tab.
+bool SendIsPageActionVisibleJSONRequest(
+ AutomationMessageSender* sender,
+ const WebViewId& tab_id,
+ const std::string& extension_id,
+ bool* is_visible,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests a modification of the given extension state. Returns true on
+// success.
+bool SendSetExtensionStateJSONRequest(
+ AutomationMessageSender* sender,
+ const std::string& extension_id,
+ bool enable,
+ bool allow_in_incognito,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests the given extension's action button be pressed. Returns true on
+// success.
+bool SendClickExtensionButtonJSONRequest(
+ AutomationMessageSender* sender,
+ const std::string& extension_id,
+ bool browser_action,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
+// Requests the given extension be uninstalled. Returns true on success.
+bool SendUninstallExtensionJSONRequest(
+ AutomationMessageSender* sender,
+ const std::string& extension_id,
+ std::string* error_msg) WARN_UNUSED_RESULT;
+
#endif // CHROME_TEST_AUTOMATION_AUTOMATION_JSON_REQUESTS_H_
« no previous file with comments | « no previous file | chrome/test/automation/automation_json_requests.cc » ('j') | chrome/test/automation/automation_json_requests.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698