summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 22:34:02 +0000
committerkkania@chromium.org <kkania@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 22:34:02 +0000
commitc631bda4938bf52fa5485065f696ee9d5e842d78 (patch)
tree8a57a6d34f19cc7ea18e93f4f8a04f9d24e3a0d7 /chrome/renderer
parent848fc2c2dc9e452bcc849b42bb6ad71b008edca8 (diff)
downloadchromium_src-c631bda4938bf52fa5485065f696ee9d5e842d78.zip
chromium_src-c631bda4938bf52fa5485065f696ee9d5e842d78.tar.gz
chromium_src-c631bda4938bf52fa5485065f696ee9d5e842d78.tar.bz2
Delete Automation[Tab/Renderer]Helper and fix users.
For Chrome Endure, use the memory benchmarking V8 extension instead. For the old ChromeDriver, just mark the messages as deprecated on the client side. I'll remove all the old ChromeDriver code later. I want to keep it here since we release ChromeDriver from HEAD, and we might need to do critical fixes for Chrome 28 and below still. BUG=240580 Review URL: https://chromiumcodereview.appspot.com/14977013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@202205 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/automation/OWNERS3
-rw-r--r--chrome/renderer/automation/automation_renderer_helper.cc288
-rw-r--r--chrome/renderer/automation/automation_renderer_helper.h75
-rw-r--r--chrome/renderer/automation/automation_renderer_helper_browsertest.cc124
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc10
5 files changed, 0 insertions, 500 deletions
diff --git a/chrome/renderer/automation/OWNERS b/chrome/renderer/automation/OWNERS
deleted file mode 100644
index adbc71c..0000000
--- a/chrome/renderer/automation/OWNERS
+++ /dev/null
@@ -1,3 +0,0 @@
-darin@chromium.org
-jam@chromium.org
-phajdan.jr@chromium.org
diff --git a/chrome/renderer/automation/automation_renderer_helper.cc b/chrome/renderer/automation/automation_renderer_helper.cc
deleted file mode 100644
index e856f63..0000000
--- a/chrome/renderer/automation/automation_renderer_helper.cc
+++ /dev/null
@@ -1,288 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/renderer/automation/automation_renderer_helper.h"
-
-#include <algorithm>
-
-#include "base/basictypes.h"
-#include "base/json/json_writer.h"
-#include "base/stringprintf.h"
-#include "base/strings/string_split.h"
-#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/common/automation_events.h"
-#include "chrome/common/automation_messages.h"
-#include "content/public/renderer/render_view.h"
-#include "content/public/renderer/v8_value_converter.h"
-#include "ipc/ipc_channel.h"
-#include "ipc/ipc_message.h"
-#include "skia/ext/platform_canvas.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebURL.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebScriptSource.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
-#include "ui/gfx/codec/png_codec.h"
-#include "ui/gfx/point.h"
-#include "ui/gfx/rect.h"
-#include "v8/include/v8.h"
-#include "webkit/glue/webkit_glue.h"
-
-#if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-#include "third_party/tcmalloc/chromium/src/gperftools/heap-profiler.h"
-#endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-
-using WebKit::WebFrame;
-using WebKit::WebSize;
-using WebKit::WebURL;
-using WebKit::WebView;
-
-AutomationRendererHelper::AutomationRendererHelper(
- content::RenderView* render_view)
- : content::RenderViewObserver(render_view) {
-}
-
-AutomationRendererHelper::~AutomationRendererHelper() { }
-
-bool AutomationRendererHelper::SnapshotEntirePage(
- WebView* view,
- std::vector<unsigned char>* png_data,
- std::string* error_msg) {
- WebFrame* frame = view->mainFrame();
- WebSize old_size = view->size();
- WebSize new_size = frame->contentsSize();
- WebSize old_scroll = frame->scrollOffset();
- bool fixed_layout_enabled = view->isFixedLayoutModeEnabled();
- WebSize fixed_size = view->fixedLayoutSize();
-
- frame->setCanHaveScrollbars(false);
- view->setFixedLayoutSize(old_size);
- view->enableFixedLayoutMode(true);
- view->resize(new_size);
- view->layout();
- frame->setScrollOffset(frame->minimumScrollOffset());
-
- skia::RefPtr<SkCanvas> canvas = skia::AdoptRef(
- skia::CreatePlatformCanvas(new_size.width, new_size.height, true));
-
- view->paint(webkit_glue::ToWebCanvas(canvas.get()),
- gfx::Rect(0, 0, new_size.width, new_size.height));
-
- frame->setCanHaveScrollbars(true);
- view->setFixedLayoutSize(fixed_size);
- view->enableFixedLayoutMode(fixed_layout_enabled);
- view->resize(old_size);
- view->layout();
- frame->setScrollOffset(old_scroll);
-
- const SkBitmap& bmp = skia::GetTopDevice(*canvas)->accessBitmap(false);
- SkAutoLockPixels lock_pixels(bmp);
- // EncodeBGRA uses FORMAT_SkBitmap, which doesn't work on windows for some
- // cases dealing with transparency. See crbug.com/96317. Use FORMAT_BGRA.
- bool encode_success = gfx::PNGCodec::Encode(
- reinterpret_cast<unsigned char*>(bmp.getPixels()),
- gfx::PNGCodec::FORMAT_BGRA,
- gfx::Size(bmp.width(), bmp.height()),
- bmp.rowBytes(),
- true, // discard_transparency
- std::vector<gfx::PNGCodec::Comment>(),
- png_data);
- if (!encode_success)
- *error_msg = "failed to encode image as png";
- return encode_success;
-}
-
-void AutomationRendererHelper::OnSnapshotEntirePage() {
- std::vector<unsigned char> png_data;
- std::string error_msg;
- bool success = false;
- if (render_view()->GetWebView()) {
- success = SnapshotEntirePage(
- render_view()->GetWebView(), &png_data, &error_msg);
- } else {
- error_msg = "cannot snapshot page because webview is null";
- }
-
- // Check that the image is not too large, allowing a 1kb buffer for other
- // message data.
- if (success && png_data.size() > IPC::Channel::kMaximumMessageSize - 1024) {
- png_data.clear();
- success = false;
- error_msg = "image is too large to be transferred over ipc";
- }
- Send(new AutomationMsg_SnapshotEntirePageACK(
- routing_id(), success, png_data, error_msg));
-}
-
-namespace {
-
-scoped_ptr<base::Value> EvaluateScriptInFrame(WebFrame* web_frame,
- const std::string& script) {
- v8::HandleScope handle_scope;
- v8::Local<v8::Value> result = v8::Local<v8::Value>::New(
- web_frame->executeScriptAndReturnValue(
- WebKit::WebScriptSource(UTF8ToUTF16(script))));
- if (!result.IsEmpty()) {
- v8::Local<v8::Context> context = web_frame->mainWorldScriptContext();
- v8::Context::Scope context_scope(context);
- scoped_ptr<content::V8ValueConverter> converter(
- content::V8ValueConverter::create());
- return scoped_ptr<base::Value>(converter->FromV8Value(result, context));
- } else {
- return scoped_ptr<base::Value>(base::Value::CreateNullValue());
- }
-}
-
-WebFrame* FrameFromXPath(WebView* view, const string16& frame_xpath) {
- WebFrame* frame = view->mainFrame();
- if (frame_xpath.empty())
- return frame;
-
- std::vector<string16> xpaths;
- base::SplitString(frame_xpath, '\n', &xpaths);
- for (std::vector<string16>::const_iterator i = xpaths.begin();
- frame && i != xpaths.end(); ++i) {
- frame = frame->findChildByExpression(*i);
- }
- return frame;
-}
-
-bool EvaluateScriptChainHelper(
- WebView* web_view,
- const std::string& script,
- const std::string& frame_xpath,
- scoped_ptr<base::DictionaryValue>* result,
- std::string* error_msg) {
- WebFrame* web_frame = FrameFromXPath(web_view, UTF8ToUTF16(frame_xpath));
- if (!web_frame) {
- *error_msg = "Failed to locate frame by xpath: " + frame_xpath;
- return false;
- }
- scoped_ptr<base::Value> script_value =
- EvaluateScriptInFrame(web_frame, script);
- base::DictionaryValue* dict;
- if (!script_value.get() || !script_value->GetAsDictionary(&dict)) {
- *error_msg = "Script did not return an object";
- return false;
- }
- base::Value* error_value;
- if (dict->Get("error", &error_value)) {
- base::JSONWriter::Write(error_value, error_msg);
- return false;
- }
- result->reset(static_cast<base::DictionaryValue*>(script_value.release()));
- return true;
-}
-
-} // namespace
-
-bool AutomationRendererHelper::EvaluateScriptChain(
- const std::vector<ScriptEvaluationRequest>& script_chain,
- scoped_ptr<base::DictionaryValue>* result,
- std::string* error_msg) {
- CHECK(!script_chain.empty());
- WebView* web_view = render_view()->GetWebView();
- scoped_ptr<base::DictionaryValue> temp_result;
- for (size_t i = 0; i < script_chain.size(); ++i) {
- std::string args_utf8 = "null";
- if (temp_result.get())
- base::JSONWriter::Write(temp_result.get(), &args_utf8);
- std::string wrapper_script = base::StringPrintf(
- "(function(){return %s\n}).apply(null, [%s])",
- script_chain[i].script.c_str(), args_utf8.c_str());
- if (!EvaluateScriptChainHelper(web_view, wrapper_script,
- script_chain[i].frame_xpath,
- &temp_result, error_msg)) {
- return false;
- }
- }
- std::string result_str;
- base::JSONWriter::Write(temp_result.get(), &result_str);
- result->reset(temp_result.release());
- return true;
-}
-
-bool AutomationRendererHelper::ProcessMouseEvent(
- const AutomationMouseEvent& event,
- std::string* error_msg) {
- WebView* web_view = render_view()->GetWebView();
- if (!web_view) {
- *error_msg = "Failed to process mouse event because webview does not exist";
- return false;
- }
- WebKit::WebMouseEvent mouse_event = event.mouse_event;
- if (!event.location_script_chain.empty()) {
- scoped_ptr<base::DictionaryValue> result;
- if (!EvaluateScriptChain(event.location_script_chain, &result, error_msg))
- return false;
- int x, y;
- if (!result->GetInteger("x", &x) ||
- !result->GetInteger("y", &y)) {
- *error_msg = "Script did not return an (x,y) location";
- return false;
- }
- mouse_event.x = x;
- mouse_event.y = y;
- }
- Send(new AutomationMsg_WillProcessMouseEventAt(
- routing_id(),
- gfx::Point(mouse_event.x, mouse_event.y)));
- web_view->handleInputEvent(mouse_event);
- return true;
-}
-
-#if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-void AutomationRendererHelper::OnHeapProfilerDump(const std::string& reason) {
- if (!::IsHeapProfilerRunning()) {
- return;
- }
- ::HeapProfilerDump(reason.c_str());
-}
-#endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
-
-bool AutomationRendererHelper::OnMessageReceived(const IPC::Message& message) {
- bool handled = true;
- bool deserialize_success = true;
- IPC_BEGIN_MESSAGE_MAP_EX(AutomationRendererHelper, message,
- deserialize_success)
- IPC_MESSAGE_HANDLER(AutomationMsg_SnapshotEntirePage, OnSnapshotEntirePage)
-#if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
- IPC_MESSAGE_HANDLER(AutomationMsg_HeapProfilerDump, OnHeapProfilerDump)
-#endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
- IPC_MESSAGE_HANDLER(AutomationMsg_ProcessMouseEvent, OnProcessMouseEvent)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP_EX()
- if (!deserialize_success) {
- LOG(ERROR) << "Failed to deserialize an IPC message";
- }
- return handled;
-}
-
-void AutomationRendererHelper::WillPerformClientRedirect(
- WebFrame* frame, const WebURL& from, const WebURL& to, double interval,
- double fire_time) {
- Send(new AutomationMsg_WillPerformClientRedirect(
- routing_id(), frame->identifier(), interval));
-}
-
-void AutomationRendererHelper::DidCancelClientRedirect(WebFrame* frame) {
- Send(new AutomationMsg_DidCompleteOrCancelClientRedirect(
- routing_id(), frame->identifier()));
-}
-
-void AutomationRendererHelper::DidCompleteClientRedirect(
- WebFrame* frame, const WebURL& from) {
- Send(new AutomationMsg_DidCompleteOrCancelClientRedirect(
- routing_id(), frame->identifier()));
-}
-
-void AutomationRendererHelper::OnProcessMouseEvent(
- const AutomationMouseEvent& event) {
- std::string error_msg;
- bool success = ProcessMouseEvent(event, &error_msg);
- Send(new AutomationMsg_ProcessMouseEventACK(
- routing_id(), success, error_msg));
-}
diff --git a/chrome/renderer/automation/automation_renderer_helper.h b/chrome/renderer/automation/automation_renderer_helper.h
deleted file mode 100644
index f063096..0000000
--- a/chrome/renderer/automation/automation_renderer_helper.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_RENDERER_AUTOMATION_AUTOMATION_RENDERER_HELPER_H_
-#define CHROME_RENDERER_AUTOMATION_AUTOMATION_RENDERER_HELPER_H_
-
-#include <string>
-#include <vector>
-
-#include "base/memory/scoped_ptr.h"
-#include "content/public/renderer/render_view_observer.h"
-#include "content/public/renderer/render_view_observer_tracker.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace WebKit {
-class WebFrame;
-class WebURL;
-class WebView;
-}
-
-struct AutomationMouseEvent;
-struct ScriptEvaluationRequest;
-
-// Filters automation/testing messages sent to a |RenderView| and sends
-// automation/testing messages to the browser.
-class AutomationRendererHelper : public content::RenderViewObserver {
- public:
- explicit AutomationRendererHelper(content::RenderView* render_view);
- virtual ~AutomationRendererHelper();
-
- // Takes a snapshot of the entire page without changing layout size.
- bool SnapshotEntirePage(WebKit::WebView* view,
- std::vector<unsigned char>* png_data,
- std::string* error_msg);
-
- // Evaluates a list of scripts. Each script must result in exactly
- // one JavaScript object, which is passed to the next script as input.
- // The final output is returned in |result|. If any JavaScript object
- // contains an 'error' key, |error_msg| will be set to the corresponding
- // value and the method will return false. If any script throws an exception,
- // this method will return false with an appropriate error message.
- // |script_chain| must not be empty.
- bool EvaluateScriptChain(
- const std::vector<ScriptEvaluationRequest>& script_chain,
- scoped_ptr<base::DictionaryValue>* result,
- std::string* error_msg);
-
- // Processes the given event. On error, returns false and sets |error_msg|.
- bool ProcessMouseEvent(const AutomationMouseEvent& event,
- std::string* error_msg);
-
- private:
- void OnSnapshotEntirePage();
-#if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
- void OnHeapProfilerDump(const std::string& reason);
-#endif
-
- // RenderViewObserver implementation.
- virtual bool OnMessageReceived(const IPC::Message& message);
- virtual void WillPerformClientRedirect(
- WebKit::WebFrame* frame, const WebKit::WebURL& from,
- const WebKit::WebURL& to, double interval, double fire_time);
- virtual void DidCancelClientRedirect(WebKit::WebFrame* frame);
- virtual void DidCompleteClientRedirect(WebKit::WebFrame* frame,
- const WebKit::WebURL& from);
- virtual void OnProcessMouseEvent(const AutomationMouseEvent& event);
-
- DISALLOW_COPY_AND_ASSIGN(AutomationRendererHelper);
-};
-
-#endif // CHROME_RENDERER_AUTOMATION_AUTOMATION_RENDERER_HELPER_H_
diff --git a/chrome/renderer/automation/automation_renderer_helper_browsertest.cc b/chrome/renderer/automation/automation_renderer_helper_browsertest.cc
deleted file mode 100644
index 65bd018..0000000
--- a/chrome/renderer/automation/automation_renderer_helper_browsertest.cc
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#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 "base/values.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"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/WebKit/Source/Platform/chromium/public/WebSize.h"
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebWidget.h"
-
-namespace {
-
-const char kThreeBoxesHTML[] =
- "<style> * { margin:0px; padding:0px } </style>"
- "<body>"
- " <div style='background:red;width:100;height:100'></div>"
- " <div style='background:green;width:100;height:100'></div>"
- " <div style='background:blue;width:100;height:100'></div>"
- "</body>";
-
-const char kThreeBoxesMD5[] = "3adefecb4472e6ba1812f9af1fdea3e4";
-
-void CompareSnapshot(const std::vector<unsigned char>& png_data,
- const std::string& reference_md5) {
- std::string png_data_str(reinterpret_cast<const char*>(&png_data[0]),
- png_data.size());
- if (CommandLine::ForCurrentProcess()->HasSwitch("dump-test-image")) {
- base::FilePath path =
- base::FilePath().AppendASCII("snapshot" + reference_md5 + ".png");
- EXPECT_EQ(file_util::WriteFile(path, png_data_str.c_str(), png_data.size()),
- static_cast<int>(png_data.size()));
- }
- EXPECT_STREQ(reference_md5.c_str(), base::MD5String(png_data_str).c_str());
-}
-
-} // namespace
-
-typedef ChromeRenderViewTest AutomationRendererHelperTest;
-
-TEST_F(AutomationRendererHelperTest, BasicSnapshot) {
- GetWebWidget()->resize(WebKit::WebSize(100, 300));
- LoadHTML(kThreeBoxesHTML);
- std::vector<unsigned char> png_data;
- std::string error_msg;
- ASSERT_TRUE(AutomationRendererHelper(view_).SnapshotEntirePage(
- view_->GetWebView(), &png_data, &error_msg)) << error_msg;
- CompareSnapshot(png_data, kThreeBoxesMD5);
-}
-
-TEST_F(AutomationRendererHelperTest, ScrollingSnapshot) {
- GetWebWidget()->resize(WebKit::WebSize(40, 90));
- LoadHTML(kThreeBoxesHTML);
- std::vector<unsigned char> png_data;
- std::string error_msg;
- ASSERT_TRUE(AutomationRendererHelper(view_).SnapshotEntirePage(
- view_->GetWebView(), &png_data, &error_msg)) << error_msg;
- CompareSnapshot(png_data, kThreeBoxesMD5);
-}
-
-TEST_F(AutomationRendererHelperTest, RTLSnapshot) {
- GetWebWidget()->resize(WebKit::WebSize(40, 90));
- const char kThreeBoxesRTLHTML[] =
- "<style> * { margin:0px; padding:0px } </style>"
- "<body dir='rtl'>"
- " <div style='background:red;width:100;height:100'></div>"
- " <div style='background:green;width:100;height:100'></div>"
- " <div style='background:blue;width:100;height:100'></div>"
- "</body>";
- LoadHTML(kThreeBoxesRTLHTML);
- std::vector<unsigned char> png_data;
- std::string error_msg;
- ASSERT_TRUE(AutomationRendererHelper(view_).SnapshotEntirePage(
- view_->GetWebView(), &png_data, &error_msg)) << error_msg;
- CompareSnapshot(png_data, kThreeBoxesMD5);
-}
-
-TEST_F(AutomationRendererHelperTest, ScriptChain) {
- ScriptEvaluationRequest request("({'result': 10})", std::string());
- ScriptEvaluationRequest request_plus1("({'result': arguments[0].result + 1})",
- std::string());
- 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})", std::string());
- ScriptEvaluationRequest error_request(
- "({'result': arguments[0].result + 1, 'error': {'msg': 'some msg'}})",
- std::string());
- 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());
-}
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index 2ace978..61683ff 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -99,10 +99,6 @@
#include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
-#if defined(ENABLE_AUTOMATION)
-#include "chrome/renderer/automation/automation_renderer_helper.h"
-#endif
-
using autofill::AutofillAgent;
using autofill::PasswordAutofillAgent;
using autofill::PasswordGenerationManager;
@@ -358,12 +354,6 @@ void ChromeContentRendererClient::RenderViewCreated(
new NetErrorHelper(render_view);
-#if defined(ENABLE_AUTOMATION)
- // Used only for testing/automation.
- if (command_line->HasSwitch(switches::kDomAutomationController))
- new AutomationRendererHelper(render_view);
-#endif
-
#if defined(ENABLE_ONE_CLICK_SIGNIN)
new OneClickSigninAgent(render_view);
#endif