1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "android_webview/browser/aw_devtools_manager_delegate.h"
6 
7 #include "android_webview/browser/gfx/browser_view_renderer.h"
8 #include "android_webview/common/aw_content_client.h"
9 #include "base/json/json_writer.h"
10 #include "base/memory/ptr_util.h"
11 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h"
13 #include "content/public/browser/devtools_agent_host.h"
14 #include "content/public/browser/web_contents.h"
15 
16 using content::DevToolsAgentHost;
17 
18 namespace android_webview {
19 
AwDevToolsManagerDelegate()20 AwDevToolsManagerDelegate::AwDevToolsManagerDelegate() {
21 }
22 
~AwDevToolsManagerDelegate()23 AwDevToolsManagerDelegate::~AwDevToolsManagerDelegate() {
24 }
25 
GetTargetDescription(content::WebContents * web_contents)26 std::string AwDevToolsManagerDelegate::GetTargetDescription(
27     content::WebContents* web_contents) {
28   android_webview::BrowserViewRenderer* bvr =
29       android_webview::BrowserViewRenderer::FromWebContents(web_contents);
30   if (!bvr)
31     return "";
32   base::DictionaryValue description;
33   description.SetBoolean("attached", bvr->attached_to_window());
34   description.SetBoolean("never_attached", !bvr->was_attached());
35   description.SetBoolean("visible", bvr->IsVisible());
36   gfx::Rect screen_rect = bvr->GetScreenRect();
37   description.SetInteger("screenX", screen_rect.x());
38   description.SetInteger("screenY", screen_rect.y());
39   description.SetBoolean("empty", screen_rect.size().IsEmpty());
40   if (!screen_rect.size().IsEmpty()) {
41     description.SetInteger("width", screen_rect.width());
42     description.SetInteger("height", screen_rect.height());
43   }
44   std::string json;
45   base::JSONWriter::Write(description, &json);
46   return json;
47 }
48 
GetDiscoveryPageHTML()49 std::string AwDevToolsManagerDelegate::GetDiscoveryPageHTML() {
50   const char html[] =
51       "<html>"
52       "<head><title>WebView remote debugging</title></head>"
53       "<body>Please use <a href=\'chrome://inspect\'>chrome://inspect</a>"
54       "</body>"
55       "</html>";
56   return html;
57 }
58 
IsBrowserTargetDiscoverable()59 bool AwDevToolsManagerDelegate::IsBrowserTargetDiscoverable() {
60   return true;
61 }
62 
63 }  // namespace android_webview
64