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

Unified Diff: chrome/browser/automation/automation_provider_json.cc

Issue 6614023: Convert ChromeDriver to use only the JSON automation interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address Pawel's additional comments Created 9 years, 9 months 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/browser/automation/automation_provider_json.cc
diff --git a/chrome/browser/automation/automation_provider_json.cc b/chrome/browser/automation/automation_provider_json.cc
index 16fd8d41f810838c055c3a23e4c89255244ab65c..2c99580a8e0623f49b8fe39c9caac07bd9db066e 100644
--- a/chrome/browser/automation/automation_provider_json.cc
+++ b/chrome/browser/automation/automation_provider_json.cc
@@ -6,8 +6,11 @@
#include "base/json/json_writer.h"
#include "base/json/string_escape.h"
+#include "base/values.h"
#include "chrome/browser/autocomplete/autocomplete_match.h"
#include "chrome/browser/automation/automation_provider.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_list.h"
#include "chrome/common/automation_messages.h"
namespace {
@@ -23,6 +26,21 @@ std::string JSONErrorString(const std::string& err) {
return prefix + no_quote_err + suffix;
}
+Browser* GetBrowserAt(int index) {
+ if (index < 0 || index >= static_cast<int>(BrowserList::size()))
+ return NULL;
+ return *(BrowserList::begin() + index);
+}
+
+TabContents* GetTabContentsAt(int browser_index, int tab_index) {
+ if (tab_index < 0)
+ return NULL;
+ Browser* browser = GetBrowserAt(browser_index);
+ if (!browser || tab_index >= browser->tab_count())
+ return NULL;
+ return browser->GetTabContentsAt(tab_index);
+}
+
} // namespace
AutomationJSONReply::AutomationJSONReply(AutomationProvider* provider,
@@ -54,3 +72,50 @@ void AutomationJSONReply::SendError(const std::string& error_message) {
provider_->Send(message_);
message_ = NULL;
}
+
+bool GetBrowserFromJSONArgs(
+ DictionaryValue* args,
+ Browser** browser,
+ std::string* error) {
+ int browser_index;
+ if (!args->GetInteger("windex", &browser_index)) {
+ *error = "'windex' missing or invalid";
+ return false;
+ }
+ *browser = GetBrowserAt(browser_index);
+ if (!*browser) {
+ *error = "Cannot locate browser from given index";
+ return false;
+ }
+ return true;
+}
+
+bool GetTabFromJSONArgs(
+ DictionaryValue* args,
+ TabContents** tab,
+ std::string* error) {
+ int browser_index, tab_index;
+ if (!args->GetInteger("windex", &browser_index)) {
+ *error = "'windex' missing or invalid";
+ return false;
+ }
+ if (!args->GetInteger("tab_index", &tab_index)) {
+ *error = "'tab_index' missing or invalid";
+ return false;
+ }
+ *tab = GetTabContentsAt(browser_index, tab_index);
+ if (!*tab) {
+ *error = "Cannot locate tab from given indices";
+ return false;
+ }
+ return true;
+}
+
+bool GetBrowserAndTabFromJSONArgs(
+ DictionaryValue* args,
+ Browser** browser,
+ TabContents** tab,
+ std::string* error) {
+ return GetBrowserFromJSONArgs(args, browser, error) &&
+ GetTabFromJSONArgs(args, tab, error);
+}
« no previous file with comments | « chrome/browser/automation/automation_provider_json.h ('k') | chrome/browser/automation/automation_provider_observers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698