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

Side by Side Diff: chrome/browser/ui/webui/inspect_ui.cc

Issue 2502863002: Add UI DevTools under chrome://inspect/#other (Closed)
Patch Set: feedback Created 4 years, 1 month 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/webui/inspect_ui.h ('k') | components/ui_devtools/devtools_server.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/inspect_ui.h" 5 #include "chrome/browser/ui/webui/inspect_ui.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "chrome/browser/devtools/devtools_targets_ui.h" 9 #include "chrome/browser/devtools/devtools_targets_ui.h"
10 #include "chrome/browser/devtools/devtools_ui_bindings.h" 10 #include "chrome/browser/devtools/devtools_ui_bindings.h"
11 #include "chrome/browser/devtools/devtools_window.h" 11 #include "chrome/browser/devtools/devtools_window.h"
12 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
13 #include "chrome/browser/ui/browser_navigator_params.h" 13 #include "chrome/browser/ui/browser_navigator_params.h"
14 #include "chrome/browser/ui/singleton_tabs.h" 14 #include "chrome/browser/ui/singleton_tabs.h"
15 #include "chrome/browser/ui/webui/theme_source.h" 15 #include "chrome/browser/ui/webui/theme_source.h"
16 #include "chrome/common/pref_names.h" 16 #include "chrome/common/pref_names.h"
17 #include "chrome/common/url_constants.h" 17 #include "chrome/common/url_constants.h"
18 #include "chrome/grit/browser_resources.h" 18 #include "chrome/grit/browser_resources.h"
19 #include "components/prefs/pref_service.h" 19 #include "components/prefs/pref_service.h"
20 #include "components/ui_devtools/devtools_server.h"
20 #include "content/public/browser/devtools_agent_host.h" 21 #include "content/public/browser/devtools_agent_host.h"
21 #include "content/public/browser/navigation_entry.h" 22 #include "content/public/browser/navigation_entry.h"
22 #include "content/public/browser/notification_service.h" 23 #include "content/public/browser/notification_service.h"
23 #include "content/public/browser/notification_source.h" 24 #include "content/public/browser/notification_source.h"
24 #include "content/public/browser/notification_types.h" 25 #include "content/public/browser/notification_types.h"
25 #include "content/public/browser/user_metrics.h" 26 #include "content/public/browser/user_metrics.h"
26 #include "content/public/browser/web_contents.h" 27 #include "content/public/browser/web_contents.h"
27 #include "content/public/browser/web_contents_delegate.h" 28 #include "content/public/browser/web_contents_delegate.h"
28 #include "content/public/browser/web_contents_observer.h" 29 #include "content/public/browser/web_contents_observer.h"
29 #include "content/public/browser/web_ui.h" 30 #include "content/public/browser/web_ui.h"
30 #include "content/public/browser/web_ui_data_source.h" 31 #include "content/public/browser/web_ui_data_source.h"
31 #include "content/public/browser/web_ui_message_handler.h" 32 #include "content/public/browser/web_ui_message_handler.h"
32 #include "content/public/common/frame_navigate_params.h" 33 #include "content/public/common/frame_navigate_params.h"
33 34
34 using content::DevToolsAgentHost; 35 using content::DevToolsAgentHost;
35 using content::WebContents; 36 using content::WebContents;
36 using content::WebUIMessageHandler; 37 using content::WebUIMessageHandler;
37 38
38 namespace { 39 namespace {
39 40
40 const char kInitUICommand[] = "init-ui"; 41 const char kInitUICommand[] = "init-ui";
41 const char kInspectCommand[] = "inspect"; 42 const char kInspectCommand[] = "inspect";
43 const char kInspectAdditionalCommand[] = "inspect-additional";
42 const char kActivateCommand[] = "activate"; 44 const char kActivateCommand[] = "activate";
43 const char kCloseCommand[] = "close"; 45 const char kCloseCommand[] = "close";
44 const char kReloadCommand[] = "reload"; 46 const char kReloadCommand[] = "reload";
45 const char kOpenCommand[] = "open"; 47 const char kOpenCommand[] = "open";
46 const char kInspectBrowser[] = "inspect-browser"; 48 const char kInspectBrowser[] = "inspect-browser";
47 const char kLocalHost[] = "localhost"; 49 const char kLocalHost[] = "localhost";
48 50
49 const char kDiscoverUsbDevicesEnabledCommand[] = 51 const char kDiscoverUsbDevicesEnabledCommand[] =
50 "set-discover-usb-devices-enabled"; 52 "set-discover-usb-devices-enabled";
51 const char kPortForwardingEnabledCommand[] = 53 const char kPortForwardingEnabledCommand[] =
52 "set-port-forwarding-enabled"; 54 "set-port-forwarding-enabled";
53 const char kPortForwardingConfigCommand[] = "set-port-forwarding-config"; 55 const char kPortForwardingConfigCommand[] = "set-port-forwarding-config";
54 const char kDiscoverTCPTargetsEnabledCommand[] = 56 const char kDiscoverTCPTargetsEnabledCommand[] =
55 "set-discover-tcp-targets-enabled"; 57 "set-discover-tcp-targets-enabled";
56 const char kTCPDiscoveryConfigCommand[] = "set-tcp-discovery-config"; 58 const char kTCPDiscoveryConfigCommand[] = "set-tcp-discovery-config";
57 59
58 const char kPortForwardingDefaultPort[] = "8080"; 60 const char kPortForwardingDefaultPort[] = "8080";
59 const char kPortForwardingDefaultLocation[] = "localhost:8080"; 61 const char kPortForwardingDefaultLocation[] = "localhost:8080";
60 62
63 const char kNameField[] = "name";
64 const char kUrlField[] = "url";
65 const char kIsAdditionalField[] = "isAdditional";
66
67 void GetUiDevToolsTargets(base::ListValue& targets) {
68 for (const auto& client_pair :
69 ui::devtools::UiDevToolsServer::GetClientNamesAndUrls()) {
70 auto target_data = base::MakeUnique<base::DictionaryValue>();
71 target_data->SetString(kNameField, client_pair.first);
72 target_data->SetString(kUrlField, client_pair.second);
73 target_data->SetBoolean(kIsAdditionalField, true);
74 targets.Append(std::move(target_data));
75 }
76 }
77
61 // InspectMessageHandler -------------------------------------------- 78 // InspectMessageHandler --------------------------------------------
62 79
63 class InspectMessageHandler : public WebUIMessageHandler { 80 class InspectMessageHandler : public WebUIMessageHandler {
64 public: 81 public:
65 explicit InspectMessageHandler(InspectUI* inspect_ui) 82 explicit InspectMessageHandler(InspectUI* inspect_ui)
66 : inspect_ui_(inspect_ui) {} 83 : inspect_ui_(inspect_ui) {}
67 ~InspectMessageHandler() override {} 84 ~InspectMessageHandler() override {}
68 85
69 private: 86 private:
70 // WebUIMessageHandler implementation. 87 // WebUIMessageHandler implementation.
71 void RegisterMessages() override; 88 void RegisterMessages() override;
72 89
73 void HandleInitUICommand(const base::ListValue* args); 90 void HandleInitUICommand(const base::ListValue* args);
74 void HandleInspectCommand(const base::ListValue* args); 91 void HandleInspectCommand(const base::ListValue* args);
92 void HandleInspectAdditionalCommand(const base::ListValue* args);
75 void HandleActivateCommand(const base::ListValue* args); 93 void HandleActivateCommand(const base::ListValue* args);
76 void HandleCloseCommand(const base::ListValue* args); 94 void HandleCloseCommand(const base::ListValue* args);
77 void HandleReloadCommand(const base::ListValue* args); 95 void HandleReloadCommand(const base::ListValue* args);
78 void HandleOpenCommand(const base::ListValue* args); 96 void HandleOpenCommand(const base::ListValue* args);
79 void HandleInspectBrowserCommand(const base::ListValue* args); 97 void HandleInspectBrowserCommand(const base::ListValue* args);
80 void HandleBooleanPrefChanged(const char* pref_name, 98 void HandleBooleanPrefChanged(const char* pref_name,
81 const base::ListValue* args); 99 const base::ListValue* args);
82 void HandlePortForwardingConfigCommand(const base::ListValue* args); 100 void HandlePortForwardingConfigCommand(const base::ListValue* args);
83 void HandleTCPDiscoveryConfigCommand(const base::ListValue* args); 101 void HandleTCPDiscoveryConfigCommand(const base::ListValue* args);
84 102
85 InspectUI* inspect_ui_; 103 InspectUI* inspect_ui_;
86 104
87 DISALLOW_COPY_AND_ASSIGN(InspectMessageHandler); 105 DISALLOW_COPY_AND_ASSIGN(InspectMessageHandler);
88 }; 106 };
89 107
90 void InspectMessageHandler::RegisterMessages() { 108 void InspectMessageHandler::RegisterMessages() {
91 web_ui()->RegisterMessageCallback(kInitUICommand, 109 web_ui()->RegisterMessageCallback(kInitUICommand,
92 base::Bind(&InspectMessageHandler::HandleInitUICommand, 110 base::Bind(&InspectMessageHandler::HandleInitUICommand,
93 base::Unretained(this))); 111 base::Unretained(this)));
94 web_ui()->RegisterMessageCallback(kInspectCommand, 112 web_ui()->RegisterMessageCallback(kInspectCommand,
95 base::Bind(&InspectMessageHandler::HandleInspectCommand, 113 base::Bind(&InspectMessageHandler::HandleInspectCommand,
96 base::Unretained(this))); 114 base::Unretained(this)));
115 web_ui()->RegisterMessageCallback(
116 kInspectAdditionalCommand,
117 base::Bind(&InspectMessageHandler::HandleInspectAdditionalCommand,
118 base::Unretained(this)));
97 web_ui()->RegisterMessageCallback(kActivateCommand, 119 web_ui()->RegisterMessageCallback(kActivateCommand,
98 base::Bind(&InspectMessageHandler::HandleActivateCommand, 120 base::Bind(&InspectMessageHandler::HandleActivateCommand,
99 base::Unretained(this))); 121 base::Unretained(this)));
100 web_ui()->RegisterMessageCallback(kCloseCommand, 122 web_ui()->RegisterMessageCallback(kCloseCommand,
101 base::Bind(&InspectMessageHandler::HandleCloseCommand, 123 base::Bind(&InspectMessageHandler::HandleCloseCommand,
102 base::Unretained(this))); 124 base::Unretained(this)));
103 web_ui()->RegisterMessageCallback(kDiscoverUsbDevicesEnabledCommand, 125 web_ui()->RegisterMessageCallback(kDiscoverUsbDevicesEnabledCommand,
104 base::Bind(&InspectMessageHandler::HandleBooleanPrefChanged, 126 base::Bind(&InspectMessageHandler::HandleBooleanPrefChanged,
105 base::Unretained(this), 127 base::Unretained(this),
106 &prefs::kDevToolsDiscoverUsbDevicesEnabled[0])); 128 &prefs::kDevToolsDiscoverUsbDevicesEnabled[0]));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 (!arg2 || (arg_size > 2 && args->GetString(2, arg2))); 165 (!arg2 || (arg_size > 2 && args->GetString(2, arg2)));
144 } 166 }
145 167
146 void InspectMessageHandler::HandleInspectCommand(const base::ListValue* args) { 168 void InspectMessageHandler::HandleInspectCommand(const base::ListValue* args) {
147 std::string source; 169 std::string source;
148 std::string id; 170 std::string id;
149 if (ParseStringArgs(args, &source, &id)) 171 if (ParseStringArgs(args, &source, &id))
150 inspect_ui_->Inspect(source, id); 172 inspect_ui_->Inspect(source, id);
151 } 173 }
152 174
175 void InspectMessageHandler::HandleInspectAdditionalCommand(
176 const base::ListValue* args) {
177 std::string url;
178 if (ParseStringArgs(args, &url, nullptr)) {
179 WebContents* inspect_ui = web_ui()->GetWebContents();
180 web_ui()->GetWebContents()->GetDelegate()->OpenURLFromTab(
181 inspect_ui,
182 content::OpenURLParams(GURL(url), content::Referrer(),
183 WindowOpenDisposition::NEW_FOREGROUND_TAB,
184 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, false));
185 }
186 }
187
153 void InspectMessageHandler::HandleActivateCommand(const base::ListValue* args) { 188 void InspectMessageHandler::HandleActivateCommand(const base::ListValue* args) {
154 std::string source; 189 std::string source;
155 std::string id; 190 std::string id;
156 if (ParseStringArgs(args, &source, &id)) 191 if (ParseStringArgs(args, &source, &id))
157 inspect_ui_->Activate(source, id); 192 inspect_ui_->Activate(source, id);
158 } 193 }
159 194
160 void InspectMessageHandler::HandleCloseCommand(const base::ListValue* args) { 195 void InspectMessageHandler::HandleCloseCommand(const base::ListValue* args) {
161 std::string source; 196 std::string source;
162 std::string id; 197 std::string id;
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 435
401 void InspectUI::StartListeningNotifications() { 436 void InspectUI::StartListeningNotifications() {
402 if (!target_handlers_.empty()) // Possible when reloading the page. 437 if (!target_handlers_.empty()) // Possible when reloading the page.
403 StopListeningNotifications(); 438 StopListeningNotifications();
404 439
405 Profile* profile = Profile::FromWebUI(web_ui()); 440 Profile* profile = Profile::FromWebUI(web_ui());
406 441
407 DevToolsTargetsUIHandler::Callback callback = 442 DevToolsTargetsUIHandler::Callback callback =
408 base::Bind(&InspectUI::PopulateTargets, base::Unretained(this)); 443 base::Bind(&InspectUI::PopulateTargets, base::Unretained(this));
409 444
445 base::ListValue additional_targets;
446 GetUiDevToolsTargets(additional_targets);
447 PopulateAdditionalTargets(additional_targets);
448
410 AddTargetUIHandler( 449 AddTargetUIHandler(
411 DevToolsTargetsUIHandler::CreateForLocal(callback)); 450 DevToolsTargetsUIHandler::CreateForLocal(callback));
412 if (profile->IsOffTheRecord()) { 451 if (profile->IsOffTheRecord()) {
413 ShowIncognitoWarning(); 452 ShowIncognitoWarning();
414 } else { 453 } else {
415 AddTargetUIHandler( 454 AddTargetUIHandler(
416 DevToolsTargetsUIHandler::CreateForAdb(callback, profile)); 455 DevToolsTargetsUIHandler::CreateForAdb(callback, profile));
417 } 456 }
418 457
419 port_status_serializer_.reset( 458 port_status_serializer_.reset(
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 return it != target_handlers_.end() ? 589 return it != target_handlers_.end() ?
551 it->second->GetTarget(target_id) : nullptr; 590 it->second->GetTarget(target_id) : nullptr;
552 } 591 }
553 592
554 void InspectUI::PopulateTargets(const std::string& source, 593 void InspectUI::PopulateTargets(const std::string& source,
555 const base::ListValue& targets) { 594 const base::ListValue& targets) {
556 web_ui()->CallJavascriptFunctionUnsafe("populateTargets", 595 web_ui()->CallJavascriptFunctionUnsafe("populateTargets",
557 base::StringValue(source), targets); 596 base::StringValue(source), targets);
558 } 597 }
559 598
599 void InspectUI::PopulateAdditionalTargets(const base::ListValue& targets) {
600 web_ui()->CallJavascriptFunctionUnsafe("populateAdditionalTargets", targets);
601 }
602
560 void InspectUI::ForceUpdateIfNeeded(const std::string& source_id, 603 void InspectUI::ForceUpdateIfNeeded(const std::string& source_id,
561 const std::string& target_type) { 604 const std::string& target_type) {
562 // TODO(dgozman): remove this after moving discovery to protocol. 605 // TODO(dgozman): remove this after moving discovery to protocol.
563 // See crbug.com/398049. 606 // See crbug.com/398049.
564 if (target_type != content::DevToolsAgentHost::kTypeServiceWorker) 607 if (target_type != content::DevToolsAgentHost::kTypeServiceWorker)
565 return; 608 return;
566 DevToolsTargetsUIHandler* handler = FindTargetHandler(source_id); 609 DevToolsTargetsUIHandler* handler = FindTargetHandler(source_id);
567 if (handler) 610 if (handler)
568 handler->ForceUpdate(); 611 handler->ForceUpdate();
569 } 612 }
570 613
571 void InspectUI::PopulatePortStatus(const base::Value& status) { 614 void InspectUI::PopulatePortStatus(const base::Value& status) {
572 web_ui()->CallJavascriptFunctionUnsafe("populatePortStatus", status); 615 web_ui()->CallJavascriptFunctionUnsafe("populatePortStatus", status);
573 } 616 }
574 617
575 void InspectUI::ShowIncognitoWarning() { 618 void InspectUI::ShowIncognitoWarning() {
576 web_ui()->CallJavascriptFunctionUnsafe("showIncognitoWarning"); 619 web_ui()->CallJavascriptFunctionUnsafe("showIncognitoWarning");
577 } 620 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/inspect_ui.h ('k') | components/ui_devtools/devtools_server.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698