diff options
-rw-r--r-- | chrome/browser/debugger/devtools_manager.cc | 55 | ||||
-rw-r--r-- | chrome/browser/debugger/devtools_manager.h | 19 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.cc | 12 | ||||
-rw-r--r-- | chrome/browser/renderer_host/render_view_host.h | 4 | ||||
-rw-r--r-- | chrome/common/devtools_messages.h | 4 | ||||
-rw-r--r-- | chrome/common/devtools_messages_internal.h | 2 | ||||
-rw-r--r-- | chrome/common/render_messages_internal.h | 6 | ||||
-rw-r--r-- | chrome/renderer/devtools_agent.cc | 32 | ||||
-rw-r--r-- | chrome/renderer/devtools_agent.h | 5 |
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); |