summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-03 23:39:15 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-03 23:39:15 +0000
commit766a7086b0ac46dd7a7bd676da47813e5a1790bf (patch)
treeeedca5078840d057ba5a0738ca827b7379a22cf1
parent74368115e55ca8ae0b0799fd2bedcd7e8688882d (diff)
downloadchromium_src-766a7086b0ac46dd7a7bd676da47813e5a1790bf.zip
chromium_src-766a7086b0ac46dd7a7bd676da47813e5a1790bf.tar.gz
chromium_src-766a7086b0ac46dd7a7bd676da47813e5a1790bf.tar.bz2
Move DOMAutomationController code from chrome to content. This is needed by interstitial pages which are in content, and also browser tests in content.
In followup changes, I'll make interstitial pages not have to derive from a concrete class, and instead implement some sort of delegate interface like we did with WebUI. BUG=98716 Review URL: https://chromiumcodereview.appspot.com/9310094 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120441 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/automation/automation_provider.cc1
-rw-r--r--chrome/browser/automation/automation_provider_observers.cc9
-rw-r--r--chrome/browser/automation/automation_tab_helper_browsertest.cc8
-rw-r--r--chrome/browser/browser_keyevents_browsertest.cc9
-rw-r--r--chrome/browser/chrome_content_browser_client.cc1
-rw-r--r--chrome/browser/dom_operation_notification_details.h28
-rw-r--r--chrome/browser/geolocation/geolocation_browsertest.cc15
-rw-r--r--chrome/browser/renderer_host/chrome_render_view_host_observer.cc12
-rw-r--r--chrome/browser/renderer_host/chrome_render_view_host_observer.h3
-rw-r--r--chrome/browser/safe_browsing/safe_browsing_blocking_page.cc1
-rw-r--r--chrome/browser/ssl/ssl_blocking_page.cc1
-rw-r--r--chrome/browser/tab_contents/chrome_interstitial_page.cc21
-rw-r--r--chrome/browser/tab_contents/chrome_interstitial_page.h9
-rw-r--r--chrome/chrome_browser.gypi1
-rw-r--r--chrome/chrome_dll.gypi1
-rw-r--r--chrome/chrome_renderer.gypi2
-rw-r--r--chrome/chrome_tests.gypi6
-rw-r--r--chrome/common/chrome_content_client.cc12
-rw-r--r--chrome/common/chrome_content_client.h1
-rw-r--r--chrome/common/chrome_notification_types.h4
-rw-r--r--chrome/common/chrome_switches.cc10
-rw-r--r--chrome/common/chrome_switches.h1
-rw-r--r--chrome/common/render_messages.h9
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc6
-rw-r--r--chrome/renderer/chrome_render_view_observer.cc21
-rw-r--r--chrome/renderer/chrome_render_view_observer.h9
-rw-r--r--chrome/renderer/renderer_resources.grd1
-rw-r--r--chrome/test/base/ui_test_utils.cc13
-rw-r--r--content/browser/renderer_host/render_process_host_impl.cc1
-rw-r--r--content/browser/renderer_host/render_view_host.cc13
-rw-r--r--content/browser/renderer_host/render_view_host.h3
-rw-r--r--content/browser/tab_contents/interstitial_page.cc12
-rw-r--r--content/browser/tab_contents/interstitial_page.h3
-rw-r--r--content/common/swapped_out_messages.cc5
-rw-r--r--content/common/view_messages.h9
-rw-r--r--content/content.gyp1
-rw-r--r--content/content_browser.gypi1
-rw-r--r--content/content_renderer.gypi2
-rw-r--r--content/content_resources.grd9
-rw-r--r--content/public/browser/dom_operation_notification_details.h26
-rw-r--r--content/public/browser/notification_types.h5
-rw-r--r--content/public/common/content_client.h4
-rw-r--r--content/public/common/content_switches.cc10
-rw-r--r--content/public/common/content_switches.h1
-rw-r--r--content/public/renderer/render_view.h1
-rw-r--r--content/renderer/dom_automation.js (renamed from chrome/renderer/resources/dom_automation.js)0
-rw-r--r--content/renderer/dom_automation_controller.cc (renamed from chrome/renderer/automation/dom_automation_controller.cc)12
-rw-r--r--content/renderer/dom_automation_controller.h (renamed from chrome/renderer/automation/dom_automation_controller.h)16
-rw-r--r--content/renderer/render_thread_impl.cc9
-rw-r--r--content/renderer/render_view_impl.cc19
-rw-r--r--content/renderer/render_view_impl.h6
-rw-r--r--content/shell/shell_content_client.cc4
-rw-r--r--content/shell/shell_content_client.h1
-rw-r--r--content/test/test_content_client.cc5
-rw-r--r--content/test/test_content_client.h1
55 files changed, 166 insertions, 228 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc
index 352fa92..5f2dabd 100644
--- a/chrome/browser/automation/automation_provider.cc
+++ b/chrome/browser/automation/automation_provider.cc
@@ -41,7 +41,6 @@
#include "chrome/browser/browsing_data_remover.h"
#include "chrome/browser/character_encoding.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_browser_event_router.h"
#include "chrome/browser/extensions/extension_host.h"
diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc
index 0201144..ef8664b 100644
--- a/chrome/browser/automation/automation_provider_observers.cc
+++ b/chrome/browser/automation/automation_provider_observers.cc
@@ -29,7 +29,6 @@
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/extensions/crx_installer.h"
#include "chrome/browser/extensions/extension_host.h"
#include "chrome/browser/extensions/extension_process_manager.h"
@@ -76,6 +75,7 @@
#include "chrome/common/content_settings_types.h"
#include "chrome/common/extensions/extension.h"
#include "content/browser/renderer_host/render_view_host.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_process_host.h"
@@ -87,6 +87,7 @@
#include "ui/gfx/rect.h"
using content::BrowserThread;
+using content::DomOperationNotificationDetails;
using content::DownloadItem;
using content::DownloadManager;
using content::NavigationController;
@@ -1206,7 +1207,7 @@ void FindInPageNotificationObserver::Observe(
const int FindInPageNotificationObserver::kFindInPageRequestId = -1;
DomOperationObserver::DomOperationObserver() {
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
registrar_.Add(this, chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN,
content::NotificationService::AllSources());
@@ -1219,9 +1220,9 @@ DomOperationObserver::~DomOperationObserver() {}
void DomOperationObserver::Observe(
int type, const content::NotificationSource& source,
const content::NotificationDetails& details) {
- if (type == chrome::NOTIFICATION_DOM_OPERATION_RESPONSE) {
+ if (type == content::NOTIFICATION_DOM_OPERATION_RESPONSE) {
content::Details<DomOperationNotificationDetails> dom_op_details(details);
- OnDomOperationCompleted(dom_op_details->json());
+ OnDomOperationCompleted(dom_op_details->json);
} else if (type == chrome::NOTIFICATION_APP_MODAL_DIALOG_SHOWN) {
OnModalDialogShown();
} else if (type == chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED) {
diff --git a/chrome/browser/automation/automation_tab_helper_browsertest.cc b/chrome/browser/automation/automation_tab_helper_browsertest.cc
index 388d4df..e320c12 100644
--- a/chrome/browser/automation/automation_tab_helper_browsertest.cc
+++ b/chrome/browser/automation/automation_tab_helper_browsertest.cc
@@ -69,14 +69,14 @@ class AutomationTabHelperBrowserTest : public InProcessBrowserTest {
MockTabEventObserver* mock_tab_observer,
MockNotificationObserver* mock_notification_observer) {
mock_notification_observer->Register(
- chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
testing::InSequence expect_in_sequence;
EXPECT_CALL(*mock_tab_observer, OnFirstPendingLoad(_));
EXPECT_CALL(*mock_notification_observer, Observe(
testing::Eq(
- static_cast<int>(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE)),
+ static_cast<int>(content::NOTIFICATION_DOM_OPERATION_RESPONSE)),
_, _));
EXPECT_CALL(*mock_tab_observer, OnNoMorePendingLoads(_))
.WillOnce(testing::InvokeWithoutArgs(
@@ -185,7 +185,7 @@ IN_PROC_BROWSER_TEST_F(AutomationTabHelperBrowserTest,
LoadStopComesAfterOnLoad) {
MockNotificationObserver mock_notification_observer;
mock_notification_observer.Register(
- chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
MockTabEventObserver mock_tab_observer(tab_helper());
@@ -194,7 +194,7 @@ IN_PROC_BROWSER_TEST_F(AutomationTabHelperBrowserTest,
testing::InSequence expect_in_sequence;
EXPECT_CALL(mock_notification_observer, Observe(
testing::Eq(
- static_cast<int>(chrome::NOTIFICATION_DOM_OPERATION_RESPONSE)),
+ static_cast<int>(content::NOTIFICATION_DOM_OPERATION_RESPONSE)),
_, _));
EXPECT_CALL(mock_tab_observer, OnNoMorePendingLoads(_));
}
diff --git a/chrome/browser/browser_keyevents_browsertest.cc b/chrome/browser/browser_keyevents_browsertest.cc
index 6ba0dcd..df3145a 100644
--- a/chrome/browser/browser_keyevents_browsertest.cc
+++ b/chrome/browser/browser_keyevents_browsertest.cc
@@ -10,7 +10,6 @@
#include "base/stringprintf.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/chrome_paths.h"
@@ -18,6 +17,7 @@
#include "chrome/test/base/ui_test_utils.h"
#include "content/browser/renderer_host/render_view_host.h"
#include "content/browser/renderer_host/render_widget_host_view.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/web_contents.h"
@@ -25,6 +25,7 @@
#include "net/test/test_server.h"
#include "ui/base/keycodes/keyboard_codes.h"
+using content::DomOperationNotificationDetails;
using content::NavigationController;
namespace {
@@ -88,7 +89,7 @@ class TestFinishObserver : public content::NotificationObserver {
public:
explicit TestFinishObserver(RenderViewHost* render_view_host)
: finished_(false), waiting_(false) {
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::Source<RenderViewHost>(render_view_host));
}
@@ -104,11 +105,11 @@ class TestFinishObserver : public content::NotificationObserver {
virtual void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) {
- DCHECK(type == chrome::NOTIFICATION_DOM_OPERATION_RESPONSE);
+ DCHECK(type == content::NOTIFICATION_DOM_OPERATION_RESPONSE);
content::Details<DomOperationNotificationDetails> dom_op_details(details);
// We might receive responses for other script execution, but we only
// care about the test finished message.
- if (dom_op_details->json() == "\"FINISHED\"") {
+ if (dom_op_details->json == "\"FINISHED\"") {
finished_ = true;
if (waiting_)
MessageLoopForUI::current()->Quit();
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 2c91df3..86ef1e2 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -636,7 +636,6 @@ void ChromeContentBrowserClient::AppendExtraCommandLineSwitches(
switches::kAppsGalleryURL,
switches::kCloudPrintServiceURL,
switches::kDebugPrint,
- switches::kDomAutomationController,
switches::kDumpHistogramsOnExit,
switches::kEnableBenchmarking,
switches::kEnableCrxlessWebApps,
diff --git a/chrome/browser/dom_operation_notification_details.h b/chrome/browser/dom_operation_notification_details.h
deleted file mode 100644
index fc56394..0000000
--- a/chrome/browser/dom_operation_notification_details.h
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) 2011 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.
-//
-// A class to hold the parameters we get back from the
-// ViewHostMsg_DomOperationResponse IPC call. This is used when passing
-// parameters through the notification service.
-
-#ifndef CHROME_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H__
-#define CHROME_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H__
-#pragma once
-
-class DomOperationNotificationDetails {
- public:
- DomOperationNotificationDetails(const std::string& json, int automation_id)
- : json_(json), automation_id_(automation_id) { }
-
- ~DomOperationNotificationDetails() { }
-
- std::string json() const { return json_; }
- int automation_id() const { return automation_id_; }
-
- private:
- std::string json_;
- int automation_id_;
-};
-
-#endif // CHROME_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H__
diff --git a/chrome/browser/geolocation/geolocation_browsertest.cc b/chrome/browser/geolocation/geolocation_browsertest.cc
index c9c8141..3d8d924 100644
--- a/chrome/browser/geolocation/geolocation_browsertest.cc
+++ b/chrome/browser/geolocation/geolocation_browsertest.cc
@@ -10,7 +10,6 @@
#include "base/utf_string_conversions.h"
#include "chrome/browser/content_settings/host_content_settings_map.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/geolocation/geolocation_settings_state.h"
#include "chrome/browser/infobars/infobar.h"
#include "chrome/browser/infobars/infobar_tab_helper.h"
@@ -25,6 +24,7 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "content/browser/renderer_host/render_view_host.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_details.h"
@@ -33,6 +33,7 @@
#include "net/base/net_util.h"
#include "net/test/test_server.h"
+using content::DomOperationNotificationDetails;
using content::NavigationController;
using content::WebContents;
@@ -51,7 +52,7 @@ class IFrameLoader : public content::NotificationObserver {
&browser->GetSelectedWebContents()->GetController();
registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
content::Source<NavigationController>(controller));
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
std::string script = base::StringPrintf(
"window.domAutomationController.setAutomationId(0);"
@@ -81,9 +82,9 @@ class IFrameLoader : public content::NotificationObserver {
const content::NotificationDetails& details) {
if (type == content::NOTIFICATION_LOAD_STOP) {
navigation_completed_ = true;
- } else if (type == chrome::NOTIFICATION_DOM_OPERATION_RESPONSE) {
+ } else if (type == content::NOTIFICATION_DOM_OPERATION_RESPONSE) {
content::Details<DomOperationNotificationDetails> dom_op_details(details);
- javascript_response_ = dom_op_details->json();
+ javascript_response_ = dom_op_details->json;
javascript_completed_ = true;
}
if (javascript_completed_ && navigation_completed_)
@@ -117,7 +118,7 @@ class GeolocationNotificationObserver : public content::NotificationObserver {
infobar_(NULL),
navigation_started_(false),
navigation_completed_(false) {
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
if (wait_for_infobar) {
registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED,
@@ -159,9 +160,9 @@ class GeolocationNotificationObserver : public content::NotificationObserver {
infobar_ = content::Details<InfoBarAddedDetails>(details).ptr();
ASSERT_TRUE(infobar_->GetIcon());
ASSERT_TRUE(infobar_->AsConfirmInfoBarDelegate());
- } else if (type == chrome::NOTIFICATION_DOM_OPERATION_RESPONSE) {
+ } else if (type == content::NOTIFICATION_DOM_OPERATION_RESPONSE) {
content::Details<DomOperationNotificationDetails> dom_op_details(details);
- javascript_response_ = dom_op_details->json();
+ javascript_response_ = dom_op_details->json;
LOG(WARNING) << "javascript_response " << javascript_response_;
} else if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED ||
type == content::NOTIFICATION_LOAD_START) {
diff --git a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
index 26cd431..4618346 100644
--- a/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
+++ b/chrome/browser/renderer_host/chrome_render_view_host_observer.cc
@@ -5,7 +5,6 @@
#include "chrome/browser/renderer_host/chrome_render_view_host_observer.h"
#include "base/command_line.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/net/predictor.h"
#include "chrome/browser/profiles/profile.h"
@@ -59,8 +58,6 @@ bool ChromeRenderViewHostObserver::OnMessageReceived(
const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(ChromeRenderViewHostObserver, message)
- IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DomOperationResponse,
- OnDomOperationResponse)
IPC_MESSAGE_HANDLER(ChromeViewHostMsg_FocusedEditableNodeTouched,
OnFocusedEditableNodeTouched)
IPC_MESSAGE_UNHANDLED(handled = false)
@@ -164,15 +161,6 @@ void ChromeRenderViewHostObserver::RemoveRenderViewHostForExtensions(
process_manager->UnregisterRenderViewHost(rvh);
}
-void ChromeRenderViewHostObserver::OnDomOperationResponse(
- const std::string& json_string, int automation_id) {
- DomOperationNotificationDetails details(json_string, automation_id);
- content::NotificationService::current()->Notify(
- chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
- content::Source<RenderViewHost>(render_view_host()),
- content::Details<DomOperationNotificationDetails>(&details));
-}
-
void ChromeRenderViewHostObserver::OnFocusedEditableNodeTouched() {
content::NotificationService::current()->Notify(
chrome::NOTIFICATION_FOCUSED_EDITABLE_NODE_TOUCHED,
diff --git a/chrome/browser/renderer_host/chrome_render_view_host_observer.h b/chrome/browser/renderer_host/chrome_render_view_host_observer.h
index 5a933e0..a7ab2d6 100644
--- a/chrome/browser/renderer_host/chrome_render_view_host_observer.h
+++ b/chrome/browser/renderer_host/chrome_render_view_host_observer.h
@@ -40,9 +40,6 @@ class ChromeRenderViewHostObserver : public content::RenderViewHostObserver {
const Extension* GetExtension();
// Cleans up when a RenderViewHost is removed, or on destruction.
void RemoveRenderViewHostForExtensions(RenderViewHost* rvh);
-
- void OnDomOperationResponse(const std::string& json_string,
- int automation_id);
void OnFocusedEditableNodeTouched();
Profile* profile_;
diff --git a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
index 89c2dd2..ea1c2ee 100644
--- a/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
+++ b/chrome/browser/safe_browsing/safe_browsing_blocking_page.cc
@@ -17,7 +17,6 @@
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/ssl/ssl_blocking_page.cc b/chrome/browser/ssl/ssl_blocking_page.cc
index 23c0cfa..3d96c05 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -9,7 +9,6 @@
#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
#include "base/values.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/ssl/ssl_error_info.h"
#include "chrome/browser/tab_contents/tab_util.h"
#include "chrome/common/jstemplate_builder.h"
diff --git a/chrome/browser/tab_contents/chrome_interstitial_page.cc b/chrome/browser/tab_contents/chrome_interstitial_page.cc
index ef1c194..8b5f1b7 100644
--- a/chrome/browser/tab_contents/chrome_interstitial_page.cc
+++ b/chrome/browser/tab_contents/chrome_interstitial_page.cc
@@ -4,14 +4,10 @@
#include "chrome/browser/tab_contents/chrome_interstitial_page.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/renderer_preferences_util.h"
-#include "chrome/common/chrome_notification_types.h"
#include "chrome/common/render_messages.h"
#include "content/browser/renderer_host/render_view_host.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_source.h"
#include "content/public/browser/web_contents.h"
using content::WebContents;
@@ -32,23 +28,6 @@ ChromeInterstitialPage::~ChromeInterstitialPage() {
void ChromeInterstitialPage::Show() {
InterstitialPage::Show();
- notification_registrar_.Add(
- this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
- content::Source<RenderViewHost>(render_view_host()));
render_view_host()->Send(
new ChromeViewMsg_SetAsInterstitial(render_view_host()->routing_id()));
}
-
-void ChromeInterstitialPage::Observe(
- int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (chrome::NOTIFICATION_DOM_OPERATION_RESPONSE == type) {
- if (enabled()) {
- content::Details<DomOperationNotificationDetails> dom_op_details(details);
- CommandReceived(dom_op_details->json());
- }
- return;
- }
- InterstitialPage::Observe(type, source, details);
-}
diff --git a/chrome/browser/tab_contents/chrome_interstitial_page.h b/chrome/browser/tab_contents/chrome_interstitial_page.h
index 2fdd646..0692e56 100644
--- a/chrome/browser/tab_contents/chrome_interstitial_page.h
+++ b/chrome/browser/tab_contents/chrome_interstitial_page.h
@@ -25,15 +25,6 @@ class ChromeInterstitialPage : public InterstitialPage {
// Shows the interstitial page in the tab.
virtual void Show() OVERRIDE;
- protected:
- // content::NotificationObserver method:
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE;
-
- // Invoked when the page sent a command through DOMAutomation.
- virtual void CommandReceived(const std::string& command) {}
-
private:
DISALLOW_COPY_AND_ASSIGN(ChromeInterstitialPage);
};
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index afaae77..78f03cc 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -915,7 +915,6 @@
'browser/diagnostics/recon_diagnostics.h',
'browser/diagnostics/sqlite_diagnostics.cc',
'browser/diagnostics/sqlite_diagnostics.h',
- 'browser/dom_operation_notification_details.h',
'browser/download/chrome_download_manager_delegate.cc',
'browser/download/chrome_download_manager_delegate.h',
'browser/download/download_crx_util.cc',
diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi
index 7964ed5..b234e04 100644
--- a/chrome/chrome_dll.gypi
+++ b/chrome/chrome_dll.gypi
@@ -100,6 +100,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/renderer_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/gfx/gfx_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi
index 030233e..ca2cd03 100644
--- a/chrome/chrome_renderer.gypi
+++ b/chrome/chrome_renderer.gypi
@@ -56,8 +56,6 @@
'renderer/autofill/password_autofill_manager.h',
'renderer/automation/automation_renderer_helper.cc',
'renderer/automation/automation_renderer_helper.h',
- 'renderer/automation/dom_automation_controller.cc',
- 'renderer/automation/dom_automation_controller.h',
'renderer/benchmarking_extension.cc',
'renderer/benchmarking_extension.h',
'renderer/extensions/app_bindings.cc',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 0ed1ff8..b4bcac5 100644
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -703,6 +703,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
@@ -2344,6 +2345,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
@@ -2967,6 +2969,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
@@ -3220,6 +3223,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
@@ -3353,6 +3357,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
@@ -4071,6 +4076,7 @@
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome/theme_resources_standard.rc',
'<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
+ '<(SHARED_INTERMEDIATE_DIR)/content/content_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/net/net_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_resources.rc',
'<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources_standard/ui_resources_standard.rc',
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc
index 1a0c7c8..9478cd1 100644
--- a/chrome/common/chrome_content_client.cc
+++ b/chrome/common/chrome_content_client.cc
@@ -317,18 +317,6 @@ void ChromeContentClient::AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) {
}
-bool ChromeContentClient::CanSendWhileSwappedOut(const IPC::Message* msg) {
- // Any Chrome-specific messages that must be allowed to be sent from swapped
- // out renderers.
- switch (msg->type()) {
- case ChromeViewHostMsg_DomOperationResponse::ID:
- return true;
- default:
- break;
- }
- return false;
-}
-
bool ChromeContentClient::CanHandleWhileSwappedOut(
const IPC::Message& msg) {
// Any Chrome-specific messages (apart from those listed in
diff --git a/chrome/common/chrome_content_client.h b/chrome/common/chrome_content_client.h
index d925c34..deb2d8e 100644
--- a/chrome/common/chrome_content_client.h
+++ b/chrome/common/chrome_content_client.h
@@ -23,7 +23,6 @@ class ChromeContentClient : public content::ContentClient {
std::vector<content::PepperPluginInfo>* plugins) OVERRIDE;
virtual void AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) OVERRIDE;
- virtual bool CanSendWhileSwappedOut(const IPC::Message* msg) OVERRIDE;
virtual bool CanHandleWhileSwappedOut(const IPC::Message& msg) OVERRIDE;
virtual std::string GetUserAgent(bool* overriding) const OVERRIDE;
virtual string16 GetLocalizedString(int message_id) const OVERRIDE;
diff --git a/chrome/common/chrome_notification_types.h b/chrome/common/chrome_notification_types.h
index d63d0b9..625b72c 100644
--- a/chrome/common/chrome_notification_types.h
+++ b/chrome/common/chrome_notification_types.h
@@ -137,10 +137,6 @@ enum NotificationType {
// Stuff inside the tabs ---------------------------------------------------
- // Notification from TabContents that we have received a response from the
- // renderer in response to a dom automation controller action.
- NOTIFICATION_DOM_OPERATION_RESPONSE,
-
// Sent when the bookmark bubble hides. The source is the profile, the
// details unused.
NOTIFICATION_BOOKMARK_BUBBLE_HIDDEN,
diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc
index 808877e..66bdf5d 100644
--- a/chrome/common/chrome_switches.cc
+++ b/chrome/common/chrome_switches.cc
@@ -434,16 +434,6 @@ const char kDnsPrefetchDisable[] = "dns-prefetch-disable";
// Use the specified DNS server for raw DNS resolution.
const char kDnsServer[] = "dns-server";
-// Specifies if the |DOMAutomationController| needs to be bound in the
-// renderer. This binding happens on per-frame basis and hence can potentially
-// be a performance bottleneck. One should only enable it when automating dom
-// based tests. Also enables sending/receiving renderer automation messages
-// through the |AutomationRenderViewHelper|.
-//
-// TODO(kkania): Rename this to enable-renderer-automation after moving the
-// |DOMAutomationController| to the |AutomationRenderViewHelper|.
-const char kDomAutomationController[] = "dom-automation";
-
// Replaces the download shelf with a new experimental UI.
const char kDownloadsNewUI[] = "downloads-new-ui";
diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h
index 1760ed1..cf38de6 100644
--- a/chrome/common/chrome_switches.h
+++ b/chrome/common/chrome_switches.h
@@ -128,7 +128,6 @@ extern const char kDiskCacheSize[];
extern const char kDnsLogDetails[];
extern const char kDnsPrefetchDisable[];
extern const char kDnsServer[];
-extern const char kDomAutomationController[];
extern const char kDownloadsNewUI[];
extern const char kDumpHistogramsOnExit[];
extern const char kEnableAeroPeekTabs[];
diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h
index 4792706..327f2f5 100644
--- a/chrome/common/render_messages.h
+++ b/chrome/common/render_messages.h
@@ -476,15 +476,6 @@ IPC_MESSAGE_ROUTED3(ChromeViewHostMsg_Thumbnail,
IPC_MESSAGE_ROUTED1(ChromeViewHostMsg_Snapshot,
SkBitmap /* bitmap */)
-// Following message is used to communicate the values received by the
-// callback binding the JS to Cpp.
-// An instance of browser that has an automation host listening to it can
-// have a javascript send a native value (string, number, boolean) to the
-// listener in Cpp. (DomAutomationController)
-IPC_MESSAGE_ROUTED2(ChromeViewHostMsg_DomOperationResponse,
- std::string /* json_string */,
- int /* automation_id */)
-
// A message for an external host.
IPC_MESSAGE_ROUTED3(ChromeViewHostMsg_ForwardMessageToExternalHost,
std::string /* message */,
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index e260d4e..e565ee4 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -191,12 +191,6 @@ void ChromeContentRendererClient::RenderThreadStarted() {
thread->RegisterExtension(search_extension);
if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDomAutomationController)) {
- thread->RegisterExtension(new ChromeV8Extension(
- "dom_automation.js", IDR_DOM_AUTOMATION_JS, NULL));
- }
-
- if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableBenchmarking))
thread->RegisterExtension(extensions_v8::BenchmarkingExtension::Get());
diff --git a/chrome/renderer/chrome_render_view_observer.cc b/chrome/renderer/chrome_render_view_observer.cc
index 9f29c66..9db1c9c 100644
--- a/chrome/renderer/chrome_render_view_observer.cc
+++ b/chrome/renderer/chrome_render_view_observer.cc
@@ -18,7 +18,6 @@
#include "chrome/common/thumbnail_score.h"
#include "chrome/common/url_constants.h"
#include "chrome/renderer/about_handler.h"
-#include "chrome/renderer/automation/dom_automation_controller.h"
#include "chrome/renderer/chrome_render_process_observer.h"
#include "chrome/renderer/content_settings_observer.h"
#include "chrome/renderer/extensions/extension_dispatcher.h"
@@ -232,11 +231,6 @@ ChromeRenderViewObserver::ChromeRenderViewObserver(
allow_running_insecure_content_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
- if (command_line.HasSwitch(switches::kDomAutomationController)) {
- int old_bindings = render_view->GetEnabledBindings();
- render_view->SetEnabledBindings(
- old_bindings |= content::BINDINGS_POLICY_DOM_AUTOMATION);
- }
render_view->GetWebView()->setPermissionClient(this);
if (!command_line.HasSwitch(switches::kDisableClientSidePhishingDetection))
OnSetClientSidePhishingDetection(true);
@@ -728,11 +722,6 @@ void ChromeRenderViewObserver::DidCommitProvisionalLoad(
void ChromeRenderViewObserver::DidClearWindowObject(WebFrame* frame) {
if (render_view()->GetEnabledBindings() &
- content::BINDINGS_POLICY_DOM_AUTOMATION) {
- BindDOMAutomationController(frame);
- }
-
- if (render_view()->GetEnabledBindings() &
content::BINDINGS_POLICY_EXTERNAL_HOST) {
GetExternalHostBindings()->BindToJavascript(frame, "externalHost");
}
@@ -1011,16 +1000,6 @@ bool ChromeRenderViewObserver::CaptureSnapshot(WebView* view,
return true;
}
-void ChromeRenderViewObserver::BindDOMAutomationController(WebFrame* frame) {
- if (!dom_automation_controller_.get()) {
- dom_automation_controller_.reset(new DomAutomationController());
- }
- dom_automation_controller_->set_message_sender(this);
- dom_automation_controller_->set_routing_id(routing_id());
- dom_automation_controller_->BindToJavascript(frame,
- "domAutomationController");
-}
-
ExternalHostBindings* ChromeRenderViewObserver::GetExternalHostBindings() {
if (!external_host_bindings_.get()) {
external_host_bindings_.reset(new ExternalHostBindings(
diff --git a/chrome/renderer/chrome_render_view_observer.h b/chrome/renderer/chrome_render_view_observer.h
index fe97f5d..877ac1b 100644
--- a/chrome/renderer/chrome_render_view_observer.h
+++ b/chrome/renderer/chrome_render_view_observer.h
@@ -19,7 +19,6 @@
class ChromeRenderProcessObserver;
class ContentSettingsObserver;
-class DomAutomationController;
class ExtensionDispatcher;
class ExternalHostBindings;
class SkBitmap;
@@ -161,10 +160,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver,
// to get a snapshot of a tab using chrome.tabs.captureVisibleTab().
bool CaptureSnapshot(WebKit::WebView* view, SkBitmap* snapshot);
- // Exposes the DOMAutomationController object that allows JS to send
- // information to the browser process.
- void BindDOMAutomationController(WebKit::WebFrame* webframe);
-
ExternalHostBindings* GetExternalHostBindings();
// This callback is triggered when DownloadFavicon completes, either
@@ -213,10 +208,6 @@ class ChromeRenderViewObserver : public content::RenderViewObserver,
bool allow_running_insecure_content_;
std::set<std::string> strict_security_hosts_;
- // Allows JS to access DOM automation. The JS object is only exposed when the
- // DOM automation bindings are enabled.
- scoped_ptr<DomAutomationController> dom_automation_controller_;
-
// External host exposed through automation controller.
scoped_ptr<ExternalHostBindings> external_host_bindings_;
diff --git a/chrome/renderer/renderer_resources.grd b/chrome/renderer/renderer_resources.grd
index 533ea8c..18d5fde 100644
--- a/chrome/renderer/renderer_resources.grd
+++ b/chrome/renderer/renderer_resources.grd
@@ -14,7 +14,6 @@ without changes to the corresponding grd file. fb9 -->
<include name="IDR_BLOCKED_PLUGIN_HTML" file="resources\blocked_plugin.html" flattenhtml="true" type="BINDATA" />
<include name="IDR_CLICK_TO_PLAY_PLUGIN_HTML" file="resources\click_to_play_plugin.html" flattenhtml="true" type="BINDATA" />
<include name="IDR_DISABLED_PLUGIN_HTML" file="resources\disabled_plugin.html" flattenhtml="true" type="BINDATA" />
- <include name="IDR_DOM_AUTOMATION_JS" file="resources\dom_automation.js" type="BINDATA" />
<include name="IDR_EXTENSION_APITEST_JS" file="resources\extensions\apitest.js" type="BINDATA" />
<include name="IDR_APP_BINDINGS_JS" file="resources\extensions\app.js" type="BINDATA" />
<include name="IDR_EVENT_BINDINGS_JS" file="resources\extensions\event.js" type="BINDATA" />
diff --git a/chrome/test/base/ui_test_utils.cc b/chrome/test/base/ui_test_utils.cc
index 999c5f4..dc68764 100644
--- a/chrome/test/base/ui_test_utils.cc
+++ b/chrome/test/base/ui_test_utils.cc
@@ -26,7 +26,6 @@
#include "chrome/browser/automation/ui_controls.h"
#include "chrome/browser/bookmarks/bookmark_model.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/dom_operation_notification_details.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search_engines/template_url_service.h"
#include "chrome/browser/search_engines/template_url_service_test_util.h"
@@ -44,6 +43,7 @@
#include "chrome/test/automation/javascript_execution_controller.h"
#include "chrome/test/base/bookmark_load_observer.h"
#include "content/browser/renderer_host/render_view_host.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/download_item.h"
#include "content/public/browser/download_manager.h"
#include "content/public/browser/navigation_controller.h"
@@ -69,6 +69,7 @@
#include "ui/aura/root_window.h"
#endif
+using content::DomOperationNotificationDetails;
using content::NavigationController;
using content::NavigationEntry;
using content::OpenURLParams;
@@ -88,7 +89,7 @@ class DOMOperationObserver : public content::NotificationObserver,
: content::WebContentsObserver(
render_view_host->delegate()->GetAsWebContents()),
did_respond_(false) {
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::Source<RenderViewHost>(render_view_host));
ui_test_utils::RunMessageLoop();
}
@@ -96,9 +97,9 @@ class DOMOperationObserver : public content::NotificationObserver,
virtual void Observe(int type,
const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE {
- DCHECK(type == chrome::NOTIFICATION_DOM_OPERATION_RESPONSE);
+ DCHECK(type == content::NOTIFICATION_DOM_OPERATION_RESPONSE);
content::Details<DomOperationNotificationDetails> dom_op_details(details);
- response_ = dom_op_details->json();
+ response_ = dom_op_details->json;
did_respond_ = true;
MessageLoopForUI::current()->Quit();
}
@@ -998,7 +999,7 @@ void TitleWatcher::Observe(int type,
}
DOMMessageQueue::DOMMessageQueue() {
- registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
content::NotificationService::AllSources());
}
@@ -1009,7 +1010,7 @@ void DOMMessageQueue::Observe(int type,
const content::NotificationDetails& details) {
content::Details<DomOperationNotificationDetails> dom_op_details(details);
content::Source<RenderViewHost> sender(source);
- message_queue_.push(dom_op_details->json());
+ message_queue_.push(dom_op_details->json);
if (waiting_for_message_) {
waiting_for_message_ = false;
MessageLoopForUI::current()->Quit();
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 0ed84fb..7e32b8d 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -652,6 +652,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer(
switches::kDisableSpeechInput,
switches::kDisableWebAudio,
switches::kDisableWebSockets,
+ switches::kDomAutomationController,
switches::kEnableAccessibilityLogging,
switches::kEnableDCHECK,
switches::kEnableGamepad,
diff --git a/content/browser/renderer_host/render_view_host.cc b/content/browser/renderer_host/render_view_host.cc
index d0d5720..9ae93a4 100644
--- a/content/browser/renderer_host/render_view_host.cc
+++ b/content/browser/renderer_host/render_view_host.cc
@@ -35,6 +35,7 @@
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_message_filter.h"
#include "content/public/browser/content_browser_client.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/native_web_keyboard_event.h"
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_service.h"
@@ -58,6 +59,7 @@
using base::TimeDelta;
using content::BrowserMessageFilter;
using content::BrowserThread;
+using content::DomOperationNotificationDetails;
using content::RenderViewHostDelegate;
using content::SiteInstance;
using content::UserMetricsAction;
@@ -782,6 +784,8 @@ bool RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
#endif
IPC_MESSAGE_HANDLER(ViewHostMsg_RunFileChooser, OnRunFileChooser)
IPC_MESSAGE_HANDLER(ViewHostMsg_WebUISend, OnWebUISend)
+ IPC_MESSAGE_HANDLER(ViewHostMsg_DomOperationResponse,
+ OnDomOperationResponse)
// Have the super handle all other messages.
IPC_MESSAGE_UNHANDLED(handled = RenderWidgetHost::OnMessageReceived(msg))
IPC_END_MESSAGE_MAP_EX()
@@ -1559,6 +1563,15 @@ void RenderViewHost::OnWebUISend(const GURL& source_url,
delegate_->WebUISend(this, source_url, name, args);
}
+void RenderViewHost::OnDomOperationResponse(
+ const std::string& json_string, int automation_id) {
+ DomOperationNotificationDetails details(json_string, automation_id);
+ content::NotificationService::current()->Notify(
+ content::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ content::Source<RenderViewHost>(this),
+ content::Details<DomOperationNotificationDetails>(&details));
+}
+
void RenderViewHost::ClearPowerSaveBlockers() {
STLDeleteValues(&power_save_blockers_);
}
diff --git a/content/browser/renderer_host/render_view_host.h b/content/browser/renderer_host/render_view_host.h
index aa12e85..f979d40 100644
--- a/content/browser/renderer_host/render_view_host.h
+++ b/content/browser/renderer_host/render_view_host.h
@@ -596,9 +596,10 @@ class CONTENT_EXPORT RenderViewHost : public RenderWidgetHost {
const content::ShowDesktopNotificationHostMsgParams& params);
void OnCancelDesktopNotification(int notification_id);
void OnRunFileChooser(const content::FileChooserParams& params);
-
void OnWebUISend(const GURL& source_url, const std::string& name,
const base::ListValue& args);
+ void OnDomOperationResponse(const std::string& json_string,
+ int automation_id);
#if defined(OS_MACOSX)
void OnMsgShowPopup(const ViewHostMsg_ShowPopup_Params& params);
diff --git a/content/browser/tab_contents/interstitial_page.cc b/content/browser/tab_contents/interstitial_page.cc
index 19f1643..676522c 100644
--- a/content/browser/tab_contents/interstitial_page.cc
+++ b/content/browser/tab_contents/interstitial_page.cc
@@ -24,6 +24,7 @@
#include "content/common/view_messages.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
+#include "content/public/browser/dom_operation_notification_details.h"
#include "content/public/browser/invalidate_type.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
@@ -35,6 +36,7 @@
#include "net/url_request/url_request_context_getter.h"
using content::BrowserThread;
+using content::DomOperationNotificationDetails;
using content::NavigationController;
using content::NavigationEntry;
using content::NavigationEntryImpl;
@@ -219,6 +221,9 @@ void InterstitialPage::Show() {
content::Source<NavigationController>(&tab_->GetController()));
notification_registrar_.Add(this, content::NOTIFICATION_NAV_ENTRY_PENDING,
content::Source<NavigationController>(&tab_->GetController()));
+ notification_registrar_.Add(
+ this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
+ content::Source<RenderViewHost>(render_view_host_));
}
void InterstitialPage::Hide() {
@@ -302,6 +307,13 @@ void InterstitialPage::Observe(int type,
// WARNING: we are now deleted!
}
break;
+ case content::NOTIFICATION_DOM_OPERATION_RESPONSE:
+ if (enabled()) {
+ content::Details<DomOperationNotificationDetails> dom_op_details(
+ details);
+ CommandReceived(dom_op_details->json);
+ }
+ break;
default:
NOTREACHED();
}
diff --git a/content/browser/tab_contents/interstitial_page.h b/content/browser/tab_contents/interstitial_page.h
index bd047100..fcbc6f2 100644
--- a/content/browser/tab_contents/interstitial_page.h
+++ b/content/browser/tab_contents/interstitial_page.h
@@ -80,6 +80,9 @@ class CONTENT_EXPORT InterstitialPage : public content::NotificationObserver,
// Sub-classes should return the HTML that should be displayed in the page.
virtual std::string GetHTMLContents();
+ // Invoked when the page sent a command through DOMAutomation.
+ virtual void CommandReceived(const std::string& command) {}
+
// Reverts to the page showing before the interstitial.
// Sub-classes should call this method when the user has chosen NOT to proceed
// to the target URL.
diff --git a/content/common/swapped_out_messages.cc b/content/common/swapped_out_messages.cc
index 16c58e1..c350bc3 100644
--- a/content/common/swapped_out_messages.cc
+++ b/content/common/swapped_out_messages.cc
@@ -23,14 +23,13 @@ bool SwappedOutMessages::CanSendWhileSwappedOut(const IPC::Message* msg) {
case ViewHostMsg_ShouldClose_ACK::ID:
case ViewHostMsg_SwapOut_ACK::ID:
case ViewHostMsg_ClosePage_ACK::ID:
+ case ViewHostMsg_DomOperationResponse::ID:
return true;
default:
break;
}
- // Check with the embedder as well.
- ContentClient* client = GetContentClient();
- return client->CanSendWhileSwappedOut(msg);
+ return false;
}
bool SwappedOutMessages::CanHandleWhileSwappedOut(
diff --git a/content/common/view_messages.h b/content/common/view_messages.h
index 248c18c..e5625da 100644
--- a/content/common/view_messages.h
+++ b/content/common/view_messages.h
@@ -2003,3 +2003,12 @@ IPC_MESSAGE_ROUTED0(ViewHostMsg_LockMouse)
// whenever the mouse is unlocked (which may or may not be caused by
// ViewHostMsg_UnlockMouse).
IPC_MESSAGE_ROUTED0(ViewHostMsg_UnlockMouse)
+
+// Following message is used to communicate the values received by the
+// callback binding the JS to Cpp.
+// An instance of browser that has an automation host listening to it can
+// have a javascript send a native value (string, number, boolean) to the
+// listener in Cpp. (DomAutomationController)
+IPC_MESSAGE_ROUTED2(ViewHostMsg_DomOperationResponse,
+ std::string /* json_string */,
+ int /* automation_id */)
diff --git a/content/content.gyp b/content/content.gyp
index 1973d1f..d2f1c16 100644
--- a/content/content.gyp
+++ b/content/content.gyp
@@ -106,6 +106,7 @@
],
'dependencies': [
'content_common',
+ 'content_resources.gyp:content_resources',
],
},
{'target_name': 'content_utility',
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index 380a09e..5fde4f3 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -50,6 +50,7 @@
'public/browser/devtools_http_handler.h',
'public/browser/devtools_http_handler_delegate.h',
'public/browser/devtools_manager.h',
+ 'public/browser/dom_operation_notification_details.h',
'public/browser/download_item.h',
'public/browser/download_manager.h',
'public/browser/download_manager_delegate.cc',
diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi
index b79234f..95e4977 100644
--- a/content/content_renderer.gypi
+++ b/content/content_renderer.gypi
@@ -50,6 +50,8 @@
'renderer/devtools_agent_filter.h',
'renderer/devtools_client.cc',
'renderer/devtools_client.h',
+ 'renderer/dom_automation_controller.cc',
+ 'renderer/dom_automation_controller.h',
'renderer/external_popup_menu.cc',
'renderer/external_popup_menu.h',
'renderer/gamepad_shared_memory_reader.cc',
diff --git a/content/content_resources.grd b/content/content_resources.grd
index c60c3a7..44c4e1c 100644
--- a/content/content_resources.grd
+++ b/content/content_resources.grd
@@ -1,13 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!--
-This file contains resources required by each embedder of content.
-
-Currently, the resources are only included on Linux and Mac. If you add
-resources that need to be available on windows as well, you'll need to add
-content_resources.rc file to the respective targets.
--->
-
<grit latest_public_release="0" current_release="1">
<outputs>
<output filename="grit/content_resources.h" type="rc_header">
@@ -19,6 +11,7 @@ content_resources.rc file to the respective targets.
<translations />
<release seq="1">
<includes>
+ <include name="IDR_DOM_AUTOMATION_JS" file="renderer/dom_automation.js" type="BINDATA" />
<if expr="is_macosx">
<include name="IDR_GPU_SANDBOX_PROFILE" file="browser/gpu.sb" type="BINDATA" />
<include name="IDR_WORKER_SANDBOX_PROFILE" file="browser/worker.sb" type="BINDATA" />
diff --git a/content/public/browser/dom_operation_notification_details.h b/content/public/browser/dom_operation_notification_details.h
new file mode 100644
index 0000000..13626a1
--- /dev/null
+++ b/content/public/browser/dom_operation_notification_details.h
@@ -0,0 +1,26 @@
+// Copyright (c) 2011 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.
+//
+// A class to hold the parameters we get back from the
+// ViewHostMsg_DomOperationResponse IPC call. This is used when passing
+// parameters through the notification service.
+
+#ifndef CONTENT_PUBLIC_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H_
+#define CONTENT_PUBLIC_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H_
+#pragma once
+
+namespace content {
+
+struct DomOperationNotificationDetails {
+ public:
+ DomOperationNotificationDetails(const std::string& json, int automation_id)
+ : json(json), automation_id(automation_id) { }
+
+ std::string json;
+ int automation_id;
+};
+
+} // namespace content
+
+#endif // CONTENT_PUBLIC_BROWSER_DOM_OPERATION_NOTIFICATION_DETAILS_H_
diff --git a/content/public/browser/notification_types.h b/content/public/browser/notification_types.h
index bb8f64a..057e190 100644
--- a/content/public/browser/notification_types.h
+++ b/content/public/browser/notification_types.h
@@ -364,6 +364,11 @@ enum NotificationType {
// V8HeapStatsDetails object.
NOTIFICATION_RENDERER_V8_HEAP_STATS_COMPUTED,
+ // Notification from WebContents that we have received a response from the
+ // renderer in response to a dom automation controller action. The source is
+ // the RenderViewHost, and hte details is a DomOperationNotificationDetails.
+ NOTIFICATION_DOM_OPERATION_RESPONSE,
+
// Child Processes ---------------------------------------------------------
// This notification is sent when a child process host has connected to a
diff --git a/content/public/common/content_client.h b/content/public/common/content_client.h
index 5721265..4e6612d 100644
--- a/content/public/common/content_client.h
+++ b/content/public/common/content_client.h
@@ -94,10 +94,6 @@ class CONTENT_EXPORT ContentClient {
virtual void AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) = 0;
- // Returns whether the given message should be allowed to be sent from a
- // swapped out renderer.
- virtual bool CanSendWhileSwappedOut(const IPC::Message* msg) = 0;
-
// Returns whether the given message should be processed in the browser on
// behalf of a swapped out renderer.
virtual bool CanHandleWhileSwappedOut(const IPC::Message& msg) = 0;
diff --git a/content/public/common/content_switches.cc b/content/public/common/content_switches.cc
index ea8f680..f84eeec 100644
--- a/content/public/common/content_switches.cc
+++ b/content/public/common/content_switches.cc
@@ -174,6 +174,16 @@ const char kDisableWebAudio[] = "disable-webaudio";
// Disable Web Sockets support.
const char kDisableWebSockets[] = "disable-web-sockets";
+// Specifies if the |DOMAutomationController| needs to be bound in the
+// renderer. This binding happens on per-frame basis and hence can potentially
+// be a performance bottleneck. One should only enable it when automating dom
+// based tests. Also enables sending/receiving renderer automation messages
+// through the |AutomationRenderViewHelper|.
+//
+// TODO(kkania): Rename this to enable-renderer-automation after moving the
+// |DOMAutomationController| to the |AutomationRenderViewHelper|.
+const char kDomAutomationController[] = "dom-automation";
+
// Enable gpu-accelerated 2d canvas.
const char kEnableAccelerated2dCanvas[] = "enable-accelerated-2d-canvas";
diff --git a/content/public/common/content_switches.h b/content/public/common/content_switches.h
index cc631ee..9fcaad6 100644
--- a/content/public/common/content_switches.h
+++ b/content/public/common/content_switches.h
@@ -65,6 +65,7 @@ CONTENT_EXPORT extern const char kDisableSpeechInput[];
extern const char kDisableSpellcheckAPI[];
CONTENT_EXPORT extern const char kDisableWebAudio[];
extern const char kDisableWebSockets[];
+CONTENT_EXPORT extern const char kDomAutomationController[];
extern const char kEnableAccelerated2dCanvas[];
CONTENT_EXPORT extern const char kEnableAcceleratedPainting[];
CONTENT_EXPORT extern const char kEnableAcceleratedFilters[];
diff --git a/content/public/renderer/render_view.h b/content/public/renderer/render_view.h
index 764e837..14020aeb 100644
--- a/content/public/renderer/render_view.h
+++ b/content/public/renderer/render_view.h
@@ -101,7 +101,6 @@ class CONTENT_EXPORT RenderView : public IPC::Message::Sender {
// Bitwise-ORed set of extra bindings that have been enabled. See
// BindingsPolicy for details.
virtual int GetEnabledBindings() = 0;
- virtual void SetEnabledBindings(int enabled_bindings) = 0;
// Whether content state (such as form state, scroll position and page
// contents) should be sent to the browser immediately. This is normally
diff --git a/chrome/renderer/resources/dom_automation.js b/content/renderer/dom_automation.js
index 0af645b..0af645b 100644
--- a/chrome/renderer/resources/dom_automation.js
+++ b/content/renderer/dom_automation.js
diff --git a/chrome/renderer/automation/dom_automation_controller.cc b/content/renderer/dom_automation_controller.cc
index 81b2be6..b1c4fee 100644
--- a/chrome/renderer/automation/dom_automation_controller.cc
+++ b/content/renderer/dom_automation_controller.cc
@@ -2,13 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/renderer/automation/dom_automation_controller.h"
+#include "content/renderer/dom_automation_controller.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/json/json_value_serializer.h"
#include "base/string_util.h"
-#include "chrome/common/render_messages.h"
+#include "content/common/view_messages.h"
DomAutomationController::DomAutomationController()
: sender_(NULL),
@@ -84,9 +84,7 @@ void DomAutomationController::Send(const CppArgumentList& args,
}
bool succeeded = sender_->Send(
- new ChromeViewHostMsg_DomOperationResponse(routing_id_,
- json,
- automation_id_));
+ new ViewHostMsg_DomOperationResponse(routing_id_, json, automation_id_));
result->Set(succeeded);
automation_id_ = MSG_ROUTING_NONE;
@@ -118,9 +116,7 @@ void DomAutomationController::SendJSON(const CppArgumentList& args,
std::string json = args[0].ToString();
result->Set(sender_->Send(
- new ChromeViewHostMsg_DomOperationResponse(routing_id_,
- json,
- automation_id_)));
+ new ViewHostMsg_DomOperationResponse(routing_id_, json, automation_id_)));
automation_id_ = MSG_ROUTING_NONE;
}
diff --git a/chrome/renderer/automation/dom_automation_controller.h b/content/renderer/dom_automation_controller.h
index d6cb8f3..576e09d 100644
--- a/chrome/renderer/automation/dom_automation_controller.h
+++ b/content/renderer/dom_automation_controller.h
@@ -1,9 +1,9 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// 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_DOM_AUTOMATION_CONTROLLER_H__
-#define CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_CONTROLLER_H__
+#ifndef CONTENT_RENDERER_DOM_AUTOMATION_CONTROLLER_H_
+#define CONTENT_RENDERER_DOM_AUTOMATION_CONTROLLER_H_
#pragma once
#include "ipc/ipc_message.h"
@@ -103,11 +103,11 @@ class DomAutomationController : public CppBoundClass {
}
private:
- IPC::Message::Sender* sender_;
+ IPC::Message::Sender* sender_;
- // Refer to the comments at the top of the file for more details.
- int routing_id_; // routing id to be used by first channel.
- int automation_id_; // routing id to be used by the next channel.
+ // Refer to the comments at the top of the file for more details.
+ int routing_id_; // routing id to be used by first channel.
+ int automation_id_; // routing id to be used by the next channel.
};
-#endif // CHROME_RENDERER_AUTOMATION_DOM_AUTOMATION_CONTROLLER_H__
+#endif // CONTENT_RENDERER_DOM_AUTOMATION_CONTROLLER_H_
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc
index 00c405f..578d6aa 100644
--- a/content/renderer/render_thread_impl.cc
+++ b/content/renderer/render_thread_impl.cc
@@ -52,6 +52,7 @@
#include "content/renderer/render_process_impl.h"
#include "content/renderer/render_view_impl.h"
#include "content/renderer/renderer_webkitplatformsupport_impl.h"
+#include "grit/content_resources.h"
#include "ipc/ipc_channel_handle.h"
#include "ipc/ipc_platform_file.h"
#include "net/base/net_errors.h"
@@ -475,6 +476,14 @@ void RenderThreadImpl::EnsureWebKitInitialized() {
RegisterExtension(extensions_v8::PlaybackExtension::Get());
}
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDomAutomationController)) {
+ base::StringPiece extension = content::GetContentClient()->GetDataResource(
+ IDR_DOM_AUTOMATION_JS);
+ RegisterExtension(new v8::Extension(
+ "dom_automation.js", extension.data(), 0, NULL, extension.size()));
+ }
+
web_database_observer_impl_.reset(new WebDatabaseObserverImpl(Get()));
WebKit::WebDatabase::setObserver(web_database_observer_impl_.get());
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 767523e..2b9c197 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -50,6 +50,7 @@
#include "content/public/renderer/render_view_visitor.h"
#include "content/renderer/device_orientation_dispatcher.h"
#include "content/renderer/devtools_agent.h"
+#include "content/renderer/dom_automation_controller.h"
#include "content/renderer/external_popup_menu.h"
#include "content/renderer/geolocation_dispatcher.h"
#include "content/renderer/gpu/webgraphicscontext3d_command_buffer_impl.h"
@@ -496,6 +497,10 @@ RenderViewImpl::RenderViewImpl(
new IdleUserDetector(this);
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (command_line.HasSwitch(switches::kDomAutomationController))
+ enabled_bindings_ |= content::BINDINGS_POLICY_DOM_AUTOMATION;
+
content::GetContentClient()->renderer()->RenderViewCreated(this);
}
@@ -2746,6 +2751,16 @@ void RenderViewImpl::didClearWindowObject(WebFrame* frame) {
frame_url.SchemeIs(chrome::kDataScheme))) {
GetWebUIBindings()->BindToJavascript(frame, "chrome");
}
+
+ if (enabled_bindings_ & content::BINDINGS_POLICY_DOM_AUTOMATION) {
+ if (!dom_automation_controller_.get())
+ dom_automation_controller_.reset(new DomAutomationController());
+ dom_automation_controller_->set_message_sender(
+ static_cast<content::RenderView*>(this));
+ dom_automation_controller_->set_routing_id(routing_id());
+ dom_automation_controller_->BindToJavascript(frame,
+ "domAutomationController");
+ }
}
void RenderViewImpl::didCreateDocumentElement(WebFrame* frame) {
@@ -3397,10 +3412,6 @@ int RenderViewImpl::GetEnabledBindings() {
return enabled_bindings_;
}
-void RenderViewImpl::SetEnabledBindings(int enabled_bindings) {
- enabled_bindings_ = enabled_bindings;
-}
-
bool RenderViewImpl::GetContentStateImmediately() {
return send_content_state_immediately_;
}
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index b892a80..1d9963a 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -60,6 +60,7 @@
class DeviceOrientationDispatcher;
class DevToolsAgent;
+class DomAutomationController;
class ExternalPopupMenu;
class GeolocationDispatcher;
class GURL;
@@ -588,7 +589,6 @@ class RenderViewImpl : public RenderWidget,
bool notify_result) OVERRIDE;
virtual bool ShouldDisplayScrollbars(int width, int height) const OVERRIDE;
virtual int GetEnabledBindings() OVERRIDE;
- virtual void SetEnabledBindings(int enabled_bindings) OVERRIDE;
virtual bool GetContentStateImmediately() OVERRIDE;
virtual float GetFilteredTimePerFrame() OVERRIDE;
virtual void ShowContextMenu(WebKit::WebFrame* frame,
@@ -1250,6 +1250,10 @@ class RenderViewImpl : public RenderWidget,
int focused_plugin_id_;
#endif
+ // Allows JS to access DOM automation. The JS object is only exposed when the
+ // DOM automation bindings are enabled.
+ scoped_ptr<DomAutomationController> dom_automation_controller_;
+
// NOTE: pepper_delegate_ should be last member because its constructor calls
// AddObservers method of RenderViewImpl from c-tor.
PepperPluginDelegateImpl pepper_delegate_;
diff --git a/content/shell/shell_content_client.cc b/content/shell/shell_content_client.cc
index 145a7fe..5870451 100644
--- a/content/shell/shell_content_client.cc
+++ b/content/shell/shell_content_client.cc
@@ -27,10 +27,6 @@ void ShellContentClient::AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) {
}
-bool ShellContentClient::CanSendWhileSwappedOut(const IPC::Message* msg) {
- return false;
-}
-
bool ShellContentClient::CanHandleWhileSwappedOut(const IPC::Message& msg) {
return false;
}
diff --git a/content/shell/shell_content_client.h b/content/shell/shell_content_client.h
index a4ef244..21ea340 100644
--- a/content/shell/shell_content_client.h
+++ b/content/shell/shell_content_client.h
@@ -21,7 +21,6 @@ class ShellContentClient : public ContentClient {
std::vector<content::PepperPluginInfo>* plugins) OVERRIDE;
virtual void AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) OVERRIDE;
- virtual bool CanSendWhileSwappedOut(const IPC::Message* msg) OVERRIDE;
virtual bool CanHandleWhileSwappedOut(const IPC::Message& msg) OVERRIDE;
virtual std::string GetUserAgent(bool* overriding) const OVERRIDE;
virtual string16 GetLocalizedString(int message_id) const OVERRIDE;
diff --git a/content/test/test_content_client.cc b/content/test/test_content_client.cc
index 954958f..fb572ce 100644
--- a/content/test/test_content_client.cc
+++ b/content/test/test_content_client.cc
@@ -35,11 +35,6 @@ void TestContentClient::AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) {
}
-bool TestContentClient::CanSendWhileSwappedOut(const IPC::Message* msg) {
- // TestContentClient does not need to send any additional messages.
- return false;
-}
-
bool TestContentClient::CanHandleWhileSwappedOut(const IPC::Message& msg) {
// TestContentClient does not need to handle any additional messages.
return false;
diff --git a/content/test/test_content_client.h b/content/test/test_content_client.h
index 44399a7..0ff830f 100644
--- a/content/test/test_content_client.h
+++ b/content/test/test_content_client.h
@@ -22,7 +22,6 @@ class TestContentClient : public content::ContentClient {
std::vector<content::PepperPluginInfo>* plugins) OVERRIDE;
virtual void AddNPAPIPlugins(
webkit::npapi::PluginList* plugin_list) OVERRIDE;
- virtual bool CanSendWhileSwappedOut(const IPC::Message* msg) OVERRIDE;
virtual bool CanHandleWhileSwappedOut(const IPC::Message& msg) OVERRIDE;
virtual std::string GetUserAgent(bool* overriding) const OVERRIDE;
virtual string16 GetLocalizedString(int message_id) const OVERRIDE;