OLD | NEW |
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/devtools/devtools_window.h" | 5 #include "chrome/browser/devtools/devtools_window.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 567 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
578 return; | 578 return; |
579 window->bindings_->AttachTo(agent_host); | 579 window->bindings_->AttachTo(agent_host); |
580 window->close_on_detach_ = false; | 580 window->close_on_detach_ = false; |
581 } | 581 } |
582 | 582 |
583 window->ScheduleShow(DevToolsToggleAction::Show()); | 583 window->ScheduleShow(DevToolsToggleAction::Show()); |
584 } | 584 } |
585 | 585 |
586 // static | 586 // static |
587 void DevToolsWindow::OpenNodeFrontendWindow(Profile* profile) { | 587 void DevToolsWindow::OpenNodeFrontendWindow(Profile* profile) { |
| 588 for (DevToolsWindow* window : g_instances.Get()) { |
| 589 if (window->frontend_type_ == kFrontendNode) { |
| 590 window->ActivateWindow(); |
| 591 return; |
| 592 } |
| 593 } |
| 594 |
588 DevToolsWindow* window = | 595 DevToolsWindow* window = |
589 Create(profile, nullptr, kFrontendNode, std::string(), false, | 596 Create(profile, nullptr, kFrontendNode, std::string(), false, |
590 std::string(), std::string()); | 597 std::string(), std::string()); |
591 if (!window) | 598 if (!window) |
592 return; | 599 return; |
593 window->bindings_->AttachTo(DevToolsAgentHost::CreateForDiscovery()); | 600 window->bindings_->AttachTo(DevToolsAgentHost::CreateForDiscovery()); |
594 window->ScheduleShow(DevToolsToggleAction::Show()); | 601 window->ScheduleShow(DevToolsToggleAction::Show()); |
595 } | 602 } |
596 | 603 |
597 // static | 604 // static |
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
799 void DevToolsWindow::OnPageCloseCanceled(WebContents* contents) { | 806 void DevToolsWindow::OnPageCloseCanceled(WebContents* contents) { |
800 DevToolsWindow* window = | 807 DevToolsWindow* window = |
801 DevToolsWindow::GetInstanceForInspectedWebContents(contents); | 808 DevToolsWindow::GetInstanceForInspectedWebContents(contents); |
802 if (!window) | 809 if (!window) |
803 return; | 810 return; |
804 window->intercepted_page_beforeunload_ = false; | 811 window->intercepted_page_beforeunload_ = false; |
805 // Propagate to devtools opened on devtools if any. | 812 // Propagate to devtools opened on devtools if any. |
806 DevToolsWindow::OnPageCloseCanceled(window->main_web_contents_); | 813 DevToolsWindow::OnPageCloseCanceled(window->main_web_contents_); |
807 } | 814 } |
808 | 815 |
809 DevToolsWindow::DevToolsWindow(Profile* profile, | 816 DevToolsWindow::DevToolsWindow(FrontendType frontend_type, |
| 817 Profile* profile, |
810 WebContents* main_web_contents, | 818 WebContents* main_web_contents, |
811 DevToolsUIBindings* bindings, | 819 DevToolsUIBindings* bindings, |
812 WebContents* inspected_web_contents, | 820 WebContents* inspected_web_contents, |
813 bool can_dock) | 821 bool can_dock) |
814 : profile_(profile), | 822 : frontend_type_(frontend_type), |
| 823 profile_(profile), |
815 main_web_contents_(main_web_contents), | 824 main_web_contents_(main_web_contents), |
816 toolbox_web_contents_(nullptr), | 825 toolbox_web_contents_(nullptr), |
817 bindings_(bindings), | 826 bindings_(bindings), |
818 browser_(nullptr), | 827 browser_(nullptr), |
819 is_docked_(true), | 828 is_docked_(true), |
820 can_dock_(can_dock), | 829 can_dock_(can_dock), |
821 close_on_detach_(true), | 830 close_on_detach_(true), |
822 // This initialization allows external front-end to work without changes. | 831 // This initialization allows external front-end to work without changes. |
823 // We don't wait for docking call, but instead immediately show undocked. | 832 // We don't wait for docking call, but instead immediately show undocked. |
824 // Passing "dockSide=undocked" parameter ensures proper UI. | 833 // Passing "dockSide=undocked" parameter ensures proper UI. |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
899 WebContents::Create(WebContents::CreateParams(profile))); | 908 WebContents::Create(WebContents::CreateParams(profile))); |
900 main_web_contents->GetController().LoadURL( | 909 main_web_contents->GetController().LoadURL( |
901 DecorateFrontendURL(url), content::Referrer(), | 910 DecorateFrontendURL(url), content::Referrer(), |
902 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); | 911 ui::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); |
903 DevToolsUIBindings* bindings = | 912 DevToolsUIBindings* bindings = |
904 DevToolsUIBindings::ForWebContents(main_web_contents.get()); | 913 DevToolsUIBindings::ForWebContents(main_web_contents.get()); |
905 if (!bindings) | 914 if (!bindings) |
906 return nullptr; | 915 return nullptr; |
907 if (!settings.empty()) | 916 if (!settings.empty()) |
908 SetPreferencesFromJson(profile, settings); | 917 SetPreferencesFromJson(profile, settings); |
909 return new DevToolsWindow(profile, main_web_contents.release(), bindings, | 918 return new DevToolsWindow(frontend_type, profile, main_web_contents.release(), |
910 inspected_web_contents, can_dock); | 919 bindings, inspected_web_contents, can_dock); |
911 } | 920 } |
912 | 921 |
913 // static | 922 // static |
914 GURL DevToolsWindow::GetDevToolsURL(Profile* profile, | 923 GURL DevToolsWindow::GetDevToolsURL(Profile* profile, |
915 FrontendType frontend_type, | 924 FrontendType frontend_type, |
916 const std::string& frontend_url, | 925 const std::string& frontend_url, |
917 bool can_dock, | 926 bool can_dock, |
918 const std::string& panel) { | 927 const std::string& panel) { |
919 std::string url(!frontend_url.empty() ? frontend_url | 928 std::string url(!frontend_url.empty() ? frontend_url |
920 : chrome::kChromeUIDevToolsURL); | 929 : chrome::kChromeUIDevToolsURL); |
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1427 bool DevToolsWindow::ReloadInspectedWebContents(bool bypass_cache) { | 1436 bool DevToolsWindow::ReloadInspectedWebContents(bool bypass_cache) { |
1428 // Only route reload via front-end if the agent is attached. | 1437 // Only route reload via front-end if the agent is attached. |
1429 WebContents* wc = GetInspectedWebContents(); | 1438 WebContents* wc = GetInspectedWebContents(); |
1430 if (!wc || wc->GetCrashedStatus() != base::TERMINATION_STATUS_STILL_RUNNING) | 1439 if (!wc || wc->GetCrashedStatus() != base::TERMINATION_STATUS_STILL_RUNNING) |
1431 return false; | 1440 return false; |
1432 base::Value bypass_cache_value(bypass_cache); | 1441 base::Value bypass_cache_value(bypass_cache); |
1433 bindings_->CallClientFunction("DevToolsAPI.reloadInspectedPage", | 1442 bindings_->CallClientFunction("DevToolsAPI.reloadInspectedPage", |
1434 &bypass_cache_value, nullptr, nullptr); | 1443 &bypass_cache_value, nullptr, nullptr); |
1435 return true; | 1444 return true; |
1436 } | 1445 } |
OLD | NEW |