Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(653)

Unified Diff: android_webview/browser/aw_dev_tools_manager_delegate.cc

Issue 560323005: [DevTools] Move target-related methods from DevToolsHttpHandlerDelegate to DevToolsManagerDelegate. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/browser/aw_dev_tools_manager_delegate.cc
diff --git a/android_webview/browser/aw_dev_tools_manager_delegate.cc b/android_webview/browser/aw_dev_tools_manager_delegate.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6e9f0ce0fa47cea0646ca71496991ff273932990
--- /dev/null
+++ b/android_webview/browser/aw_dev_tools_manager_delegate.cc
@@ -0,0 +1,134 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "android_webview/browser/aw_dev_tools_manager_delegate.h"
+
+#include "android_webview/native/aw_contents.h"
+#include "base/bind.h"
+#include "base/json/json_writer.h"
+#include "base/strings/stringprintf.h"
+#include "base/strings/utf_string_conversions.h"
+#include "base/values.h"
+#include "content/public/browser/devtools_agent_host.h"
+#include "content/public/browser/devtools_target.h"
+#include "content/public/browser/web_contents.h"
+
+using content::DevToolsAgentHost;
+using content::RenderViewHost;
+using content::WebContents;
+
+namespace {
+
+const char kTargetTypePage[] = "page";
+const char kTargetTypeServiceWorker[] = "service_worker";
+const char kTargetTypeOther[] = "other";
+
+std::string GetViewDescription(WebContents* web_contents);
+
+class Target : public content::DevToolsTarget {
+ public:
+ explicit Target(scoped_refptr<DevToolsAgentHost> agent_host);
+
+ virtual std::string GetId() const OVERRIDE { return agent_host_->GetId(); }
+ virtual std::string GetParentId() const OVERRIDE { return std::string(); }
+ virtual std::string GetType() const OVERRIDE {
+ switch (agent_host_->GetType()) {
+ case DevToolsAgentHost::TYPE_WEB_CONTENTS:
+ return kTargetTypePage;
+ case DevToolsAgentHost::TYPE_SERVICE_WORKER:
+ return kTargetTypeServiceWorker;
+ default:
+ break;
+ }
+ return kTargetTypeOther;
+ }
+ virtual std::string GetTitle() const OVERRIDE {
+ return agent_host_->GetTitle();
+ }
+ virtual std::string GetDescription() const OVERRIDE { return description_; }
+ virtual GURL GetURL() const OVERRIDE { return agent_host_->GetURL(); }
+ virtual GURL GetFaviconURL() const OVERRIDE { return GURL(); }
+ virtual base::TimeTicks GetLastActivityTime() const OVERRIDE {
+ return last_activity_time_;
+ }
+ virtual bool IsAttached() const OVERRIDE {
+ return agent_host_->IsAttached();
+ }
+ virtual scoped_refptr<DevToolsAgentHost> GetAgentHost() const OVERRIDE {
+ return agent_host_;
+ }
+ virtual bool Activate() const OVERRIDE { return agent_host_->Activate(); }
+ virtual bool Close() const OVERRIDE { return agent_host_->Close(); }
+
+ private:
+ scoped_refptr<DevToolsAgentHost> agent_host_;
+ std::string description_;
+ base::TimeTicks last_activity_time_;
+};
+
+Target::Target(scoped_refptr<DevToolsAgentHost> agent_host)
+ : agent_host_(agent_host) {
+ if (WebContents* web_contents = agent_host->GetWebContents()) {
+ description_ = GetViewDescription(web_contents);
+ last_activity_time_ = web_contents->GetLastActiveTime();
+ }
+}
+
+std::string GetViewDescription(WebContents* web_contents) {
+ const android_webview::BrowserViewRenderer* bvr =
+ android_webview::AwContents::FromWebContents(web_contents)
+ ->GetBrowserViewRenderer();
+ if (!bvr) return "";
+ base::DictionaryValue description;
+ description.SetBoolean("attached", bvr->attached_to_window());
+ description.SetBoolean("visible", bvr->IsVisible());
+ gfx::Rect screen_rect = bvr->GetScreenRect();
+ description.SetInteger("screenX", screen_rect.x());
+ description.SetInteger("screenY", screen_rect.y());
+ description.SetBoolean("empty", screen_rect.size().IsEmpty());
+ if (!screen_rect.size().IsEmpty()) {
+ description.SetInteger("width", screen_rect.width());
+ description.SetInteger("height", screen_rect.height());
+ }
+ std::string json;
+ base::JSONWriter::Write(&description, &json);
+ return json;
+}
+
+} // namespace
+
+namespace android_webview {
+
+AwDevToolsManagerDelegate::AwDevToolsManagerDelegate() {
+}
+
+AwDevToolsManagerDelegate::~AwDevToolsManagerDelegate() {
+}
+
+base::DictionaryValue* AwDevToolsManagerDelegate::HandleCommand(
+ content::DevToolsAgentHost* agent_host,
+ base::DictionaryValue* command_dict) {
+ return NULL;
+}
+
+void AwDevToolsManagerDelegate::EnumerateTargets(TargetCallback callback) {
+ TargetList targets;
+ DevToolsAgentHost::List agents = DevToolsAgentHost::GetOrCreateAll();
+ for (DevToolsAgentHost::List::iterator it = agents.begin();
+ it != agents.end(); ++it) {
+ targets.push_back(new Target(*it));
+ }
+ callback.Run(targets);
+}
+
+std::string AwDevToolsManagerDelegate::GetPageThumbnailData(const GURL&) {
+ return "";
+}
+
+scoped_ptr<content::DevToolsTarget> AwDevToolsManagerDelegate::CreateNewTarget(
+ const GURL&) {
+ return scoped_ptr<content::DevToolsTarget>();
+}
+
+} // namespace android_webview
« no previous file with comments | « android_webview/browser/aw_dev_tools_manager_delegate.h ('k') | android_webview/native/aw_dev_tools_server.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698