| 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
|
|
|