summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/debugger/devtools_manager.cc55
-rw-r--r--chrome/browser/debugger/devtools_manager.h19
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc12
-rw-r--r--chrome/browser/renderer_host/render_view_host.h4
-rw-r--r--chrome/common/devtools_messages.h4
-rw-r--r--chrome/common/devtools_messages_internal.h2
-rw-r--r--chrome/common/render_messages_internal.h6
-rw-r--r--chrome/renderer/devtools_agent.cc32
-rw-r--r--chrome/renderer/devtools_agent.h5
9 files changed, 79 insertions, 60 deletions
diff --git a/chrome/browser/debugger/devtools_manager.cc b/chrome/browser/debugger/devtools_manager.cc
index 823761f..d86e810 100644
--- a/chrome/browser/debugger/devtools_manager.cc
+++ b/chrome/browser/debugger/devtools_manager.cc
@@ -18,7 +18,6 @@
#include "chrome/browser/renderer_host/render_view_host.h"
#include "chrome/browser/renderer_host/site_instance.h"
#include "chrome/browser/tab_contents/tab_contents.h"
-#include "chrome/common/devtools_messages.h"
#include "chrome/common/pref_names.h"
#include "googleurl/src/gurl.h"
@@ -64,8 +63,8 @@ void DevToolsManager::RegisterDevToolsClientHostFor(
DevToolsClientHost* client_host) {
DCHECK(!GetDevToolsClientHostFor(inspected_rvh));
- RuntimeFeatures initial_features;
- BindClientHost(inspected_rvh, client_host, initial_features);
+ DevToolsRuntimeProperties initial_properties;
+ BindClientHost(inspected_rvh, client_host, initial_properties);
client_host->set_close_listener(this);
SendAttachToAgent(inspected_rvh);
}
@@ -143,20 +142,17 @@ void DevToolsManager::ToggleDevToolsWindow(
ToggleDevToolsWindow(inspected_rvh, false, action);
}
-void DevToolsManager::RuntimeFeatureStateChanged(RenderViewHost* inspected_rvh,
- const std::string& feature,
- bool enabled) {
- RuntimeFeaturesMap::iterator it = runtime_features_map_.find(inspected_rvh);
- if (it == runtime_features_map_.end()) {
- std::pair<RenderViewHost*, std::set<std::string> > value(
+void DevToolsManager::RuntimePropertyChanged(RenderViewHost* inspected_rvh,
+ const std::string& name,
+ const std::string& value) {
+ RuntimePropertiesMap::iterator it = runtime_properties_map_.find(inspected_rvh);
+ if (it == runtime_properties_map_.end()) {
+ std::pair<RenderViewHost*, DevToolsRuntimeProperties> value(
inspected_rvh,
- std::set<std::string>());
- it = runtime_features_map_.insert(value).first;
+ DevToolsRuntimeProperties());
+ it = runtime_properties_map_.insert(value).first;
}
- if (enabled)
- it->second.insert(feature);
- else
- it->second.erase(feature);
+ it->second[name] = value;
}
void DevToolsManager::InspectElement(RenderViewHost* inspected_rvh,
@@ -267,8 +263,8 @@ int DevToolsManager::DetachClientHost(RenderViewHost* from_rvh) {
int cookie = last_orphan_cookie_++;
orphan_client_hosts_[cookie] =
- std::pair<DevToolsClientHost*, RuntimeFeatures>(
- client_host, runtime_features_map_[from_rvh]);
+ std::pair<DevToolsClientHost*, DevToolsRuntimeProperties>(
+ client_host, runtime_properties_map_[from_rvh]);
UnbindClientHost(from_rvh, client_host);
return cookie;
@@ -293,14 +289,14 @@ void DevToolsManager::SendAttachToAgent(RenderViewHost* inspected_rvh) {
ChildProcessSecurityPolicy::GetInstance()->GrantReadRawCookies(
inspected_rvh->process()->id());
- std::vector<std::string> features;
- RuntimeFeaturesMap::iterator it =
- runtime_features_map_.find(inspected_rvh);
- if (it != runtime_features_map_.end()) {
- features = std::vector<std::string>(it->second.begin(),
- it->second.end());
+ DevToolsRuntimeProperties properties;
+ RuntimePropertiesMap::iterator it =
+ runtime_properties_map_.find(inspected_rvh);
+ if (it != runtime_properties_map_.end()) {
+ properties = DevToolsRuntimeProperties(it->second.begin(),
+ it->second.end());
}
- IPC::Message* m = new DevToolsAgentMsg_Attach(features);
+ IPC::Message* m = new DevToolsAgentMsg_Attach(properties);
m->set_routing_id(inspected_rvh->routing_id());
inspected_rvh->Send(m);
}
@@ -381,9 +377,10 @@ void DevToolsManager::ToggleDevToolsWindow(
}
}
-void DevToolsManager::BindClientHost(RenderViewHost* inspected_rvh,
- DevToolsClientHost* client_host,
- const RuntimeFeatures& runtime_features) {
+void DevToolsManager::BindClientHost(
+ RenderViewHost* inspected_rvh,
+ DevToolsClientHost* client_host,
+ const DevToolsRuntimeProperties& runtime_properties) {
DCHECK(inspected_rvh_to_client_host_.find(inspected_rvh) ==
inspected_rvh_to_client_host_.end());
DCHECK(client_host_to_inspected_rvh_.find(client_host) ==
@@ -391,7 +388,7 @@ void DevToolsManager::BindClientHost(RenderViewHost* inspected_rvh,
inspected_rvh_to_client_host_[inspected_rvh] = client_host;
client_host_to_inspected_rvh_[client_host] = inspected_rvh;
- runtime_features_map_[inspected_rvh] = runtime_features;
+ runtime_properties_map_[inspected_rvh] = runtime_properties;
}
void DevToolsManager::UnbindClientHost(RenderViewHost* inspected_rvh,
@@ -403,5 +400,5 @@ void DevToolsManager::UnbindClientHost(RenderViewHost* inspected_rvh,
inspected_rvh_to_client_host_.erase(inspected_rvh);
client_host_to_inspected_rvh_.erase(client_host);
- runtime_features_map_.erase(inspected_rvh);
+ runtime_properties_map_.erase(inspected_rvh);
}
diff --git a/chrome/browser/debugger/devtools_manager.h b/chrome/browser/debugger/devtools_manager.h
index 3fb5bf4..90144e1 100644
--- a/chrome/browser/debugger/devtools_manager.h
+++ b/chrome/browser/debugger/devtools_manager.h
@@ -13,6 +13,7 @@
#include "base/ref_counted.h"
#include "chrome/browser/debugger/devtools_client_host.h"
#include "chrome/browser/debugger/devtools_toggle_action.h"
+#include "chrome/common/devtools_messages.h"
namespace IPC {
class Message;
@@ -58,9 +59,9 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
void OpenDevToolsWindow(RenderViewHost* inspected_rvh);
void ToggleDevToolsWindow(RenderViewHost* inspected_rvh,
DevToolsToggleAction action);
- void RuntimeFeatureStateChanged(RenderViewHost* inspected_rvh,
- const std::string& feature,
- bool enabled);
+ void RuntimePropertyChanged(RenderViewHost* inspected_rvh,
+ const std::string& name,
+ const std::string& value);
// Starts element inspection in the devtools client.
// Creates one by means of OpenDevToolsWindow if no client
@@ -83,7 +84,6 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
private:
friend class base::RefCounted<DevToolsManager>;
- typedef std::set<std::string> RuntimeFeatures;
virtual ~DevToolsManager();
@@ -112,7 +112,7 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
void BindClientHost(RenderViewHost* inspected_rvh,
DevToolsClientHost* client_host,
- const RuntimeFeatures& runtime_features);
+ const DevToolsRuntimeProperties& runtime_properties);
void UnbindClientHost(RenderViewHost* inspected_rvh,
DevToolsClientHost* client_host);
@@ -133,14 +133,15 @@ class DevToolsManager : public DevToolsClientHost::CloseListener,
ClientHostToInspectedRvhMap;
ClientHostToInspectedRvhMap client_host_to_inspected_rvh_;
- typedef std::map<RenderViewHost*, RuntimeFeatures>
- RuntimeFeaturesMap;
- RuntimeFeaturesMap runtime_features_map_;
+ typedef std::map<RenderViewHost*, DevToolsRuntimeProperties>
+ RuntimePropertiesMap;
+ RuntimePropertiesMap runtime_properties_map_;
RenderViewHost* inspected_rvh_for_reopen_;
bool in_initial_show_;
- typedef std::map<int, std::pair<DevToolsClientHost*, RuntimeFeatures> >
+ typedef std::map<int,
+ std::pair<DevToolsClientHost*, DevToolsRuntimeProperties> >
OrphanClientHosts;
OrphanClientHosts orphan_client_hosts_;
int last_orphan_cookie_;
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index baa7de7..b5bb1cb 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -796,8 +796,8 @@ void RenderViewHost::OnMessageReceived(const IPC::Message& msg) {
OnRequestDockDevToolsWindow);
IPC_MESSAGE_HANDLER(ViewHostMsg_RequestUndockDevToolsWindow,
OnRequestUndockDevToolsWindow);
- IPC_MESSAGE_HANDLER(ViewHostMsg_DevToolsRuntimeFeatureStateChanged,
- OnDevToolsRuntimeFeatureStateChanged);
+ IPC_MESSAGE_HANDLER(ViewHostMsg_DevToolsRuntimePropertyChanged,
+ OnDevToolsRuntimePropertyChanged);
IPC_MESSAGE_HANDLER(ViewHostMsg_UserMetricsRecordAction,
OnUserMetricsRecordAction)
IPC_MESSAGE_HANDLER(ViewHostMsg_MissingPluginStatus, OnMissingPluginStatus);
@@ -1502,11 +1502,11 @@ void RenderViewHost::OnRequestUndockDevToolsWindow() {
DevToolsManager::GetInstance()->RequestUndockWindow(this);
}
-void RenderViewHost::OnDevToolsRuntimeFeatureStateChanged(
- const std::string& feature,
- bool enabled) {
+void RenderViewHost::OnDevToolsRuntimePropertyChanged(
+ const std::string& name,
+ const std::string& value) {
DevToolsManager::GetInstance()->
- RuntimeFeatureStateChanged(this, feature, enabled);
+ RuntimePropertyChanged(this, name, value);
}
void RenderViewHost::OnUserMetricsRecordAction(const std::string& action) {
diff --git a/chrome/browser/renderer_host/render_view_host.h b/chrome/browser/renderer_host/render_view_host.h
index 7196756..d94ae8d 100644
--- a/chrome/browser/renderer_host/render_view_host.h
+++ b/chrome/browser/renderer_host/render_view_host.h
@@ -592,8 +592,8 @@ class RenderViewHost : public RenderWidgetHost {
void OnCloseDevToolsWindow();
void OnRequestDockDevToolsWindow();
void OnRequestUndockDevToolsWindow();
- void OnDevToolsRuntimeFeatureStateChanged(const std::string& feature,
- bool enabled);
+ void OnDevToolsRuntimePropertyChanged(const std::string& name,
+ const std::string& value);
void OnUserMetricsRecordAction(const std::string& action);
void OnMissingPluginStatus(int status);
diff --git a/chrome/common/devtools_messages.h b/chrome/common/devtools_messages.h
index 4a09d43..060c4d9 100644
--- a/chrome/common/devtools_messages.h
+++ b/chrome/common/devtools_messages.h
@@ -6,8 +6,12 @@
#define CHROME_COMMON_DEVTOOLS_MESSAGES_H_
#pragma once
+#include <map>
+
#include "ipc/ipc_message_utils.h"
+typedef std::map<std::string, std::string> DevToolsRuntimeProperties;
+
#define MESSAGES_INTERNAL_FILE "chrome/common/devtools_messages_internal.h"
#include "ipc/ipc_message_macros.h"
diff --git a/chrome/common/devtools_messages_internal.h b/chrome/common/devtools_messages_internal.h
index 4eb9cca..ac8dbce 100644
--- a/chrome/common/devtools_messages_internal.h
+++ b/chrome/common/devtools_messages_internal.h
@@ -70,7 +70,7 @@ IPC_BEGIN_MESSAGES(DevToolsAgent)
// Tells agent that there is a client host connected to it.
IPC_MESSAGE_CONTROL1(DevToolsAgentMsg_Attach,
- std::vector<std::string> /* runtime_features */)
+ DevToolsRuntimeProperties /* properties */)
// Tells agent that there is no longer a client host connected to it.
IPC_MESSAGE_CONTROL0(DevToolsAgentMsg_Detach)
diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h
index 55d3a66..2838579 100644
--- a/chrome/common/render_messages_internal.h
+++ b/chrome/common/render_messages_internal.h
@@ -1660,9 +1660,9 @@ IPC_BEGIN_MESSAGES(ViewHost)
// Updates runtime features store in devtools manager in order to support
// cross-navigation instrumentation.
- IPC_MESSAGE_ROUTED2(ViewHostMsg_DevToolsRuntimeFeatureStateChanged,
- std::string /* feature */,
- bool /* enabled */)
+ IPC_MESSAGE_ROUTED2(ViewHostMsg_DevToolsRuntimePropertyChanged,
+ std::string /* name */,
+ std::string /* value */)
// Send back a string to be recorded by UserMetrics.
IPC_MESSAGE_ROUTED1(ViewHostMsg_UserMetricsRecordAction,
diff --git a/chrome/renderer/devtools_agent.cc b/chrome/renderer/devtools_agent.cc
index 4f90d02..2b7bb04 100644
--- a/chrome/renderer/devtools_agent.cc
+++ b/chrome/renderer/devtools_agent.cc
@@ -4,9 +4,10 @@
#include "chrome/renderer/devtools_agent.h"
+#include <map>
+
#include "base/command_line.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/devtools_messages.h"
#include "chrome/common/render_messages.h"
#include "chrome/renderer/devtools_agent_filter.h"
#include "chrome/renderer/render_view.h"
@@ -119,12 +120,22 @@ void DevToolsAgent::forceRepaint() {
render_view_->GenerateFullRepaint();
}
-void DevToolsAgent::runtimeFeatureStateChanged(const WebKit::WebString& feature,
- bool enabled) {
- render_view_->Send(new ViewHostMsg_DevToolsRuntimeFeatureStateChanged(
+void DevToolsAgent::runtimeFeatureStateChanged(
+ const WebKit::WebString& feature,
+ bool enabled) {
+ render_view_->Send(new ViewHostMsg_DevToolsRuntimePropertyChanged(
routing_id_,
feature.utf8(),
- enabled));
+ enabled ? "true" : "false"));
+}
+
+void DevToolsAgent::runtimePropertyChanged(
+ const WebKit::WebString& name,
+ const WebKit::WebString& value) {
+ render_view_->Send(new ViewHostMsg_DevToolsRuntimePropertyChanged(
+ routing_id_,
+ name.utf8(),
+ value.utf8()));
}
WebCString DevToolsAgent::injectedScriptSource() {
@@ -159,13 +170,16 @@ DevToolsAgent* DevToolsAgent::FromHostId(int host_id) {
return NULL;
}
-void DevToolsAgent::OnAttach(const std::vector<std::string>& runtime_features) {
+void DevToolsAgent::OnAttach(
+ const DevToolsRuntimeProperties& runtime_properties) {
WebDevToolsAgent* web_agent = GetWebAgent();
if (web_agent) {
web_agent->attach();
- for (std::vector<std::string>::const_iterator it = runtime_features.begin();
- it != runtime_features.end(); ++it) {
- web_agent->setRuntimeFeatureEnabled(WebString::fromUTF8(*it), true);
+ for (DevToolsRuntimeProperties::const_iterator it =
+ runtime_properties.begin();
+ it != runtime_properties.end(); ++it) {
+ web_agent->setRuntimeFeatureEnabled(WebString::fromUTF8(it->first),
+ it->second == "true");
}
}
}
diff --git a/chrome/renderer/devtools_agent.h b/chrome/renderer/devtools_agent.h
index 6ed81d6..6bfbd25 100644
--- a/chrome/renderer/devtools_agent.h
+++ b/chrome/renderer/devtools_agent.h
@@ -11,6 +11,7 @@
#include <vector>
#include "base/basictypes.h"
+#include "chrome/common/devtools_messages.h"
#include "third_party/WebKit/WebKit/chromium/public/WebDevToolsAgentClient.h"
namespace IPC {
@@ -47,6 +48,8 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient {
virtual void forceRepaint();
virtual void runtimeFeatureStateChanged(const WebKit::WebString& feature,
bool enabled);
+ virtual void runtimePropertyChanged(const WebKit::WebString& name,
+ const WebKit::WebString& value);
virtual WebKit::WebCString injectedScriptSource();
virtual WebKit::WebCString debuggerScriptSource();
virtual WebKit::WebDevToolsAgentClient::WebKitClientMessageLoop*
@@ -63,7 +66,7 @@ class DevToolsAgent : public WebKit::WebDevToolsAgentClient {
private:
friend class DevToolsAgentFilter;
- void OnAttach(const std::vector<std::string>& runtime_features);
+ void OnAttach(const DevToolsRuntimeProperties& runtime_properties);
void OnDetach();
void OnFrontendLoaded();
void OnDispatchOnInspectorBackend(const std::string& message);