Index: chrome/renderer/automation/automation_renderer_helper_browsertest.cc |
diff --git a/chrome/renderer/automation/automation_renderer_helper_browsertest.cc b/chrome/renderer/automation/automation_renderer_helper_browsertest.cc |
index d6149535cbb884f64aef752dcf29b70437d5d334..c75bdd15434c8fab15a22737845916104655cdec 100644 |
--- a/chrome/renderer/automation/automation_renderer_helper_browsertest.cc |
+++ b/chrome/renderer/automation/automation_renderer_helper_browsertest.cc |
@@ -4,7 +4,11 @@ |
#include "base/command_line.h" |
#include "base/file_util.h" |
+#include "base/json/json_reader.h" |
#include "base/md5.h" |
+#include "base/utf_string_conversions.h" |
+#include "chrome/common/automation_constants.h" |
+#include "chrome/common/automation_events.h" |
#include "chrome/test/base/chrome_render_view_test.h" |
#include "chrome/renderer/automation/automation_renderer_helper.h" |
#include "content/public/renderer/render_view.h" |
@@ -76,3 +80,43 @@ TEST_F(AutomationRendererHelperTest, RTLSnapshot) { |
view_->GetWebView(), &png_data, &error_msg)) << error_msg; |
CompareSnapshot(png_data, kThreeBoxesMD5); |
} |
+ |
+TEST_F(AutomationRendererHelperTest, ScriptChain) { |
+ ScriptEvaluationRequest request("({'result': 10})", ""); |
+ ScriptEvaluationRequest request_plus1( |
+ "({'result': arguments[0].result + 1})", ""); |
+ std::vector<ScriptEvaluationRequest> script_chain; |
+ script_chain.push_back(request); |
+ script_chain.push_back(request_plus1); |
+ script_chain.push_back(request_plus1); |
+ |
+ AutomationRendererHelper helper(view_); |
+ scoped_ptr<base::DictionaryValue> value; |
+ std::string error; |
+ ASSERT_TRUE(helper.EvaluateScriptChain(script_chain, &value, &error)); |
+ int result; |
+ ASSERT_TRUE(value->GetInteger("result", &result)); |
+ EXPECT_EQ(12, result); |
+} |
+ |
+TEST_F(AutomationRendererHelperTest, ScriptChainError) { |
+ ScriptEvaluationRequest request("({'result': 10})", ""); |
+ ScriptEvaluationRequest error_request( |
+ "({'result': arguments[0].result + 1, 'error': {'msg': 'some msg'}})", |
+ ""); |
+ std::vector<ScriptEvaluationRequest> script_chain; |
+ script_chain.push_back(request); |
+ script_chain.push_back(error_request); |
+ script_chain.push_back(request); |
+ |
+ AutomationRendererHelper helper(view_); |
+ scoped_ptr<base::DictionaryValue> result; |
+ std::string error; |
+ ASSERT_FALSE(helper.EvaluateScriptChain(script_chain, &result, &error)); |
+ scoped_ptr<base::Value> value(base::JSONReader::Read(error)); |
+ base::DictionaryValue* dict; |
+ ASSERT_TRUE(value->GetAsDictionary(&dict)); |
+ std::string msg; |
+ ASSERT_TRUE(dict->GetString("msg", &msg)); |
+ EXPECT_STREQ("some msg", msg.c_str()); |
+} |