| 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 <algorithm> | 5 #include <algorithm> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
| 9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 #include "content/public/browser/devtools_client_host.h" | 42 #include "content/public/browser/devtools_client_host.h" |
| 43 #include "content/public/browser/devtools_manager.h" | 43 #include "content/public/browser/devtools_manager.h" |
| 44 #include "content/public/browser/favicon_status.h" | 44 #include "content/public/browser/favicon_status.h" |
| 45 #include "content/public/browser/load_notification_details.h" | 45 #include "content/public/browser/load_notification_details.h" |
| 46 #include "content/public/browser/navigation_controller.h" | 46 #include "content/public/browser/navigation_controller.h" |
| 47 #include "content/public/browser/navigation_entry.h" | 47 #include "content/public/browser/navigation_entry.h" |
| 48 #include "content/public/browser/notification_source.h" | 48 #include "content/public/browser/notification_source.h" |
| 49 #include "content/public/browser/render_process_host.h" | 49 #include "content/public/browser/render_process_host.h" |
| 50 #include "content/public/browser/render_view_host.h" | 50 #include "content/public/browser/render_view_host.h" |
| 51 #include "content/public/browser/web_contents.h" | 51 #include "content/public/browser/web_contents.h" |
| 52 #include "content/public/browser/web_contents_observer.h" |
| 52 #include "content/public/browser/web_contents_view.h" | 53 #include "content/public/browser/web_contents_view.h" |
| 53 #include "content/public/common/bindings_policy.h" | 54 #include "content/public/common/bindings_policy.h" |
| 54 #include "content/public/common/content_client.h" | 55 #include "content/public/common/content_client.h" |
| 55 #include "content/public/common/page_transition_types.h" | 56 #include "content/public/common/page_transition_types.h" |
| 56 #include "content/public/common/url_constants.h" | 57 #include "content/public/common/url_constants.h" |
| 57 #include "grit/generated_resources.h" | 58 #include "grit/generated_resources.h" |
| 58 | 59 |
| 59 typedef std::vector<DevToolsWindow*> DevToolsWindowList; | 60 typedef std::vector<DevToolsWindow*> DevToolsWindowList; |
| 60 namespace { | 61 namespace { |
| 61 base::LazyInstance<DevToolsWindowList>::Leaky | 62 base::LazyInstance<DevToolsWindowList>::Leaky |
| (...skipping 24 matching lines...) Expand all Loading... |
| 86 const char kDockSideBottom[] = "bottom"; | 87 const char kDockSideBottom[] = "bottom"; |
| 87 const char kDockSideRight[] = "right"; | 88 const char kDockSideRight[] = "right"; |
| 88 const char kDockSideUndocked[] = "undocked"; | 89 const char kDockSideUndocked[] = "undocked"; |
| 89 | 90 |
| 90 // Minimal height of devtools pane or content pane when devtools are docked | 91 // Minimal height of devtools pane or content pane when devtools are docked |
| 91 // to the browser window. | 92 // to the browser window. |
| 92 const int kMinDevToolsHeight = 50; | 93 const int kMinDevToolsHeight = 50; |
| 93 const int kMinDevToolsWidth = 150; | 94 const int kMinDevToolsWidth = 150; |
| 94 const int kMinContentsSize = 50; | 95 const int kMinContentsSize = 50; |
| 95 | 96 |
| 97 class DevToolsWindow::InspectedWebContentsObserver |
| 98 : public content::WebContentsObserver { |
| 99 public: |
| 100 explicit InspectedWebContentsObserver(content::WebContents* web_contents) |
| 101 : WebContentsObserver(web_contents) { |
| 102 } |
| 103 |
| 104 content::WebContents* Get() { return web_contents(); } |
| 105 }; |
| 106 |
| 96 // static | 107 // static |
| 97 std::string DevToolsWindow::GetDevToolsWindowPlacementPrefKey() { | 108 std::string DevToolsWindow::GetDevToolsWindowPlacementPrefKey() { |
| 98 std::string wp_key; | 109 std::string wp_key; |
| 99 wp_key.append(prefs::kBrowserWindowPlacement); | 110 wp_key.append(prefs::kBrowserWindowPlacement); |
| 100 wp_key.append("_"); | 111 wp_key.append("_"); |
| 101 wp_key.append(kDevToolsApp); | 112 wp_key.append(kDevToolsApp); |
| 102 return wp_key; | 113 return wp_key; |
| 103 } | 114 } |
| 104 | 115 |
| 105 // static | 116 // static |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 process_id, chrome::kFileScheme); | 232 process_id, chrome::kFileScheme); |
| 222 content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host); | 233 content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host); |
| 223 return new DevToolsWindow(web_contents, profile, inspected_rvh, dock_side); | 234 return new DevToolsWindow(web_contents, profile, inspected_rvh, dock_side); |
| 224 } | 235 } |
| 225 | 236 |
| 226 DevToolsWindow::DevToolsWindow(WebContents* web_contents, | 237 DevToolsWindow::DevToolsWindow(WebContents* web_contents, |
| 227 Profile* profile, | 238 Profile* profile, |
| 228 RenderViewHost* inspected_rvh, | 239 RenderViewHost* inspected_rvh, |
| 229 DevToolsDockSide dock_side) | 240 DevToolsDockSide dock_side) |
| 230 : profile_(profile), | 241 : profile_(profile), |
| 231 inspected_web_contents_(NULL), | |
| 232 web_contents_(web_contents), | 242 web_contents_(web_contents), |
| 233 browser_(NULL), | 243 browser_(NULL), |
| 234 dock_side_(dock_side), | 244 dock_side_(dock_side), |
| 235 is_loaded_(false), | 245 is_loaded_(false), |
| 236 action_on_load_(DEVTOOLS_TOGGLE_ACTION_SHOW), | 246 action_on_load_(DEVTOOLS_TOGGLE_ACTION_SHOW), |
| 237 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), | 247 ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)), |
| 238 width_(-1), | 248 width_(-1), |
| 239 height_(-1) { | 249 height_(-1) { |
| 240 frontend_host_.reset( | 250 frontend_host_.reset( |
| 241 DevToolsClientHost::CreateDevToolsFrontendHost(web_contents, this)); | 251 DevToolsClientHost::CreateDevToolsFrontendHost(web_contents, this)); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 256 this, | 266 this, |
| 257 chrome::NOTIFICATION_TAB_CLOSING, | 267 chrome::NOTIFICATION_TAB_CLOSING, |
| 258 content::Source<NavigationController>(&web_contents->GetController())); | 268 content::Source<NavigationController>(&web_contents->GetController())); |
| 259 registrar_.Add( | 269 registrar_.Add( |
| 260 this, | 270 this, |
| 261 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 271 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
| 262 content::Source<ThemeService>( | 272 content::Source<ThemeService>( |
| 263 ThemeServiceFactory::GetForProfile(profile_))); | 273 ThemeServiceFactory::GetForProfile(profile_))); |
| 264 // There is no inspected_rvh in case of shared workers. | 274 // There is no inspected_rvh in case of shared workers. |
| 265 if (inspected_rvh) | 275 if (inspected_rvh) |
| 266 inspected_web_contents_ = WebContents::FromRenderViewHost(inspected_rvh); | 276 inspected_contents_observer_.reset(new InspectedWebContentsObserver( |
| 277 WebContents::FromRenderViewHost(inspected_rvh))); |
| 267 } | 278 } |
| 268 | 279 |
| 269 DevToolsWindow::~DevToolsWindow() { | 280 DevToolsWindow::~DevToolsWindow() { |
| 270 DevToolsWindowList& instances = g_instances.Get(); | 281 DevToolsWindowList& instances = g_instances.Get(); |
| 271 DevToolsWindowList::iterator it = std::find(instances.begin(), | 282 DevToolsWindowList::iterator it = std::find(instances.begin(), |
| 272 instances.end(), | 283 instances.end(), |
| 273 this); | 284 this); |
| 274 DCHECK(it != instances.end()); | 285 DCHECK(it != instances.end()); |
| 275 instances.erase(it); | 286 instances.erase(it); |
| 276 } | 287 } |
| 277 | 288 |
| 289 content::WebContents* DevToolsWindow::GetInspectedWebContents() { |
| 290 if (!inspected_contents_observer_) |
| 291 return NULL; |
| 292 return inspected_contents_observer_->Get(); |
| 293 } |
| 294 |
| 278 void DevToolsWindow::InspectedContentsClosing() { | 295 void DevToolsWindow::InspectedContentsClosing() { |
| 279 if (IsDocked()) { | 296 if (IsDocked()) { |
| 280 // Update dev tools to reflect removed dev tools window. | 297 // Update dev tools to reflect removed dev tools window. |
| 281 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); | 298 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| 282 if (inspected_window) | 299 if (inspected_window) |
| 283 inspected_window->UpdateDevTools(); | 300 inspected_window->UpdateDevTools(); |
| 284 // In case of docked web_contents_, we own it so delete here. | 301 // In case of docked web_contents_, we own it so delete here. |
| 285 delete web_contents_; | 302 delete web_contents_; |
| 286 | 303 |
| 287 delete this; | 304 delete this; |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 | 431 |
| 415 browser_ = new Browser(Browser::CreateParams::CreateForDevTools( | 432 browser_ = new Browser(Browser::CreateParams::CreateForDevTools( |
| 416 profile_, host_desktop_type)); | 433 profile_, host_desktop_type)); |
| 417 browser_->tab_strip_model()->AddWebContents( | 434 browser_->tab_strip_model()->AddWebContents( |
| 418 web_contents_, -1, content::PAGE_TRANSITION_AUTO_TOPLEVEL, | 435 web_contents_, -1, content::PAGE_TRANSITION_AUTO_TOPLEVEL, |
| 419 TabStripModel::ADD_ACTIVE); | 436 TabStripModel::ADD_ACTIVE); |
| 420 } | 437 } |
| 421 | 438 |
| 422 bool DevToolsWindow::FindInspectedBrowserAndTabIndex(Browser** browser, | 439 bool DevToolsWindow::FindInspectedBrowserAndTabIndex(Browser** browser, |
| 423 int* tab) { | 440 int* tab) { |
| 424 if (!inspected_web_contents_) | 441 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 442 if (!inspected_web_contents) |
| 425 return false; | 443 return false; |
| 426 | 444 |
| 427 for (chrome::BrowserIterator it; !it.done(); it.Next()) { | 445 for (chrome::BrowserIterator it; !it.done(); it.Next()) { |
| 428 int tab_index = it->tab_strip_model()->GetIndexOfWebContents( | 446 int tab_index = it->tab_strip_model()->GetIndexOfWebContents( |
| 429 inspected_web_contents_); | 447 inspected_web_contents); |
| 430 if (tab_index != TabStripModel::kNoTab) { | 448 if (tab_index != TabStripModel::kNoTab) { |
| 431 *browser = *it; | 449 *browser = *it; |
| 432 *tab = tab_index; | 450 *tab = tab_index; |
| 433 return true; | 451 return true; |
| 434 } | 452 } |
| 435 } | 453 } |
| 436 return false; | 454 return false; |
| 437 } | 455 } |
| 438 | 456 |
| 439 BrowserWindow* DevToolsWindow::GetInspectedBrowserWindow() { | 457 BrowserWindow* DevToolsWindow::GetInspectedBrowserWindow() { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 454 | 472 |
| 455 void DevToolsWindow::UpdateFrontendDockSide() { | 473 void DevToolsWindow::UpdateFrontendDockSide() { |
| 456 base::StringValue dock_side(SideToString(dock_side_)); | 474 base::StringValue dock_side(SideToString(dock_side_)); |
| 457 CallClientFunction("InspectorFrontendAPI.setDockSide", &dock_side); | 475 CallClientFunction("InspectorFrontendAPI.setDockSide", &dock_side); |
| 458 base::FundamentalValue docked(IsDocked()); | 476 base::FundamentalValue docked(IsDocked()); |
| 459 CallClientFunction("InspectorFrontendAPI.setAttachedWindow", &docked); | 477 CallClientFunction("InspectorFrontendAPI.setAttachedWindow", &docked); |
| 460 } | 478 } |
| 461 | 479 |
| 462 | 480 |
| 463 void DevToolsWindow::AddDevToolsExtensionsToClient() { | 481 void DevToolsWindow::AddDevToolsExtensionsToClient() { |
| 464 if (inspected_web_contents_) { | 482 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 483 if (inspected_web_contents) { |
| 465 SessionTabHelper* session_tab_helper = | 484 SessionTabHelper* session_tab_helper = |
| 466 SessionTabHelper::FromWebContents(inspected_web_contents_); | 485 SessionTabHelper::FromWebContents(inspected_web_contents); |
| 467 if (session_tab_helper) { | 486 if (session_tab_helper) { |
| 468 base::FundamentalValue tabId(session_tab_helper->session_id().id()); | 487 base::FundamentalValue tabId(session_tab_helper->session_id().id()); |
| 469 CallClientFunction("WebInspector.setInspectedTabId", &tabId); | 488 CallClientFunction("WebInspector.setInspectedTabId", &tabId); |
| 470 } | 489 } |
| 471 } | 490 } |
| 472 ListValue results; | 491 ListValue results; |
| 473 Profile* profile = | 492 Profile* profile = |
| 474 Profile::FromBrowserContext(web_contents_->GetBrowserContext()); | 493 Profile::FromBrowserContext(web_contents_->GetBrowserContext()); |
| 475 const ExtensionService* extension_service = extensions::ExtensionSystem::Get( | 494 const ExtensionService* extension_service = extensions::ExtensionSystem::Get( |
| 476 profile->GetOriginalProfile())->extension_service(); | 495 profile->GetOriginalProfile())->extension_service(); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 492 extension_info->Set("exposeExperimentalAPIs", | 511 extension_info->Set("exposeExperimentalAPIs", |
| 493 new base::FundamentalValue(allow_experimental)); | 512 new base::FundamentalValue(allow_experimental)); |
| 494 results.Append(extension_info); | 513 results.Append(extension_info); |
| 495 } | 514 } |
| 496 CallClientFunction("WebInspector.addExtensions", &results); | 515 CallClientFunction("WebInspector.addExtensions", &results); |
| 497 } | 516 } |
| 498 | 517 |
| 499 WebContents* DevToolsWindow::OpenURLFromTab(WebContents* source, | 518 WebContents* DevToolsWindow::OpenURLFromTab(WebContents* source, |
| 500 const OpenURLParams& params) { | 519 const OpenURLParams& params) { |
| 501 if (!params.url.SchemeIs(chrome::kChromeDevToolsScheme)) { | 520 if (!params.url.SchemeIs(chrome::kChromeDevToolsScheme)) { |
| 502 if (inspected_web_contents_) | 521 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 503 return inspected_web_contents_->OpenURL(params); | 522 if (inspected_web_contents) |
| 523 return inspected_web_contents->OpenURL(params); |
| 504 return NULL; | 524 return NULL; |
| 505 } | 525 } |
| 506 | 526 |
| 507 DevToolsManager* manager = DevToolsManager::GetInstance(); | 527 DevToolsManager* manager = DevToolsManager::GetInstance(); |
| 508 scoped_refptr<DevToolsAgentHost> agent_host( | 528 scoped_refptr<DevToolsAgentHost> agent_host( |
| 509 manager->GetDevToolsAgentHostFor(frontend_host_.get())); | 529 manager->GetDevToolsAgentHostFor(frontend_host_.get())); |
| 510 if (!agent_host) | 530 if (!agent_host) |
| 511 return NULL; | 531 return NULL; |
| 512 manager->ClientHostClosing(frontend_host_.get()); | 532 manager->ClientHostClosing(frontend_host_.get()); |
| 513 manager->RegisterDevToolsClientHostFor(agent_host, frontend_host_.get()); | 533 manager->RegisterDevToolsClientHostFor(agent_host, frontend_host_.get()); |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 638 web_contents_->GetRenderViewHost()-> | 658 web_contents_->GetRenderViewHost()-> |
| 639 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(command)); | 659 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(command)); |
| 640 } | 660 } |
| 641 | 661 |
| 642 void DevToolsWindow::AddNewContents(WebContents* source, | 662 void DevToolsWindow::AddNewContents(WebContents* source, |
| 643 WebContents* new_contents, | 663 WebContents* new_contents, |
| 644 WindowOpenDisposition disposition, | 664 WindowOpenDisposition disposition, |
| 645 const gfx::Rect& initial_pos, | 665 const gfx::Rect& initial_pos, |
| 646 bool user_gesture, | 666 bool user_gesture, |
| 647 bool* was_blocked) { | 667 bool* was_blocked) { |
| 648 if (inspected_web_contents_) { | 668 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 649 inspected_web_contents_->GetDelegate()->AddNewContents( | 669 if (inspected_web_contents) { |
| 670 inspected_web_contents->GetDelegate()->AddNewContents( |
| 650 source, new_contents, disposition, initial_pos, user_gesture, | 671 source, new_contents, disposition, initial_pos, user_gesture, |
| 651 was_blocked); | 672 was_blocked); |
| 652 } | 673 } |
| 653 } | 674 } |
| 654 | 675 |
| 655 bool DevToolsWindow::PreHandleKeyboardEvent( | 676 bool DevToolsWindow::PreHandleKeyboardEvent( |
| 656 WebContents* source, | 677 WebContents* source, |
| 657 const NativeWebKeyboardEvent& event, bool* is_keyboard_shortcut) { | 678 const NativeWebKeyboardEvent& event, bool* is_keyboard_shortcut) { |
| 658 if (IsDocked()) { | 679 if (IsDocked()) { |
| 659 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); | 680 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 778 bounds.Offset(x, y); | 799 bounds.Offset(x, y); |
| 779 browser_->window()->SetBounds(bounds); | 800 browser_->window()->SetBounds(bounds); |
| 780 } | 801 } |
| 781 } | 802 } |
| 782 | 803 |
| 783 void DevToolsWindow::SetDockSide(const std::string& side) { | 804 void DevToolsWindow::SetDockSide(const std::string& side) { |
| 784 DevToolsDockSide requested_side = SideFromString(side); | 805 DevToolsDockSide requested_side = SideFromString(side); |
| 785 bool dock_requested = requested_side != DEVTOOLS_DOCK_SIDE_UNDOCKED; | 806 bool dock_requested = requested_side != DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| 786 bool is_docked = IsDocked(); | 807 bool is_docked = IsDocked(); |
| 787 | 808 |
| 788 if (dock_requested && (!inspected_web_contents_ || | 809 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 810 if (dock_requested && (!inspected_web_contents || |
| 789 !GetInspectedBrowserWindow() || IsInspectedBrowserPopupOrPanel())) { | 811 !GetInspectedBrowserWindow() || IsInspectedBrowserPopupOrPanel())) { |
| 790 // Cannot dock, avoid window flashing due to close-reopen cycle. | 812 // Cannot dock, avoid window flashing due to close-reopen cycle. |
| 791 return; | 813 return; |
| 792 } | 814 } |
| 793 | 815 |
| 794 dock_side_ = requested_side; | 816 dock_side_ = requested_side; |
| 795 if (dock_requested) { | 817 if (dock_requested) { |
| 796 if (!is_docked) { | 818 if (!is_docked) { |
| 797 // Detach window from the external devtools browser. It will lead to | 819 // Detach window from the external devtools browser. It will lead to |
| 798 // the browser object's close and delete. Remove observer first. | 820 // the browser object's close and delete. Remove observer first. |
| (...skipping 25 matching lines...) Expand all Loading... |
| 824 | 846 |
| 825 Show(DEVTOOLS_TOGGLE_ACTION_SHOW); | 847 Show(DEVTOOLS_TOGGLE_ACTION_SHOW); |
| 826 } | 848 } |
| 827 | 849 |
| 828 void DevToolsWindow::OpenInNewTab(const std::string& url) { | 850 void DevToolsWindow::OpenInNewTab(const std::string& url) { |
| 829 OpenURLParams params(GURL(url), | 851 OpenURLParams params(GURL(url), |
| 830 content::Referrer(), | 852 content::Referrer(), |
| 831 NEW_FOREGROUND_TAB, | 853 NEW_FOREGROUND_TAB, |
| 832 content::PAGE_TRANSITION_LINK, | 854 content::PAGE_TRANSITION_LINK, |
| 833 false /* is_renderer_initiated */); | 855 false /* is_renderer_initiated */); |
| 834 if (inspected_web_contents_) { | 856 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 835 inspected_web_contents_->OpenURL(params); | 857 if (inspected_web_contents) { |
| 858 inspected_web_contents->OpenURL(params); |
| 836 } else { | 859 } else { |
| 837 chrome::HostDesktopType host_desktop_type; | 860 chrome::HostDesktopType host_desktop_type; |
| 838 if (browser_) { | 861 if (browser_) { |
| 839 host_desktop_type = browser_->host_desktop_type(); | 862 host_desktop_type = browser_->host_desktop_type(); |
| 840 } else { | 863 } else { |
| 841 // There should always be a browser when there are no inspected web | 864 // There should always be a browser when there are no inspected web |
| 842 // contents. | 865 // contents. |
| 843 NOTREACHED(); | 866 NOTREACHED(); |
| 844 host_desktop_type = chrome::GetActiveDesktop(); | 867 host_desktop_type = chrome::GetActiveDesktop(); |
| 845 } | 868 } |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 if (!file_system.file_system_path.empty()) | 955 if (!file_system.file_system_path.empty()) |
| 933 file_system_value = CreateFileSystemValue(file_system); | 956 file_system_value = CreateFileSystemValue(file_system); |
| 934 CallClientFunction("InspectorFrontendAPI.fileSystemAdded", | 957 CallClientFunction("InspectorFrontendAPI.fileSystemAdded", |
| 935 &error_string_value, | 958 &error_string_value, |
| 936 file_system_value); | 959 file_system_value); |
| 937 if (file_system_value) | 960 if (file_system_value) |
| 938 delete file_system_value; | 961 delete file_system_value; |
| 939 } | 962 } |
| 940 | 963 |
| 941 content::JavaScriptDialogManager* DevToolsWindow::GetJavaScriptDialogManager() { | 964 content::JavaScriptDialogManager* DevToolsWindow::GetJavaScriptDialogManager() { |
| 942 if (inspected_web_contents_ && inspected_web_contents_->GetDelegate()) { | 965 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 943 return inspected_web_contents_->GetDelegate()-> | 966 if (inspected_web_contents && inspected_web_contents->GetDelegate()) { |
| 967 return inspected_web_contents->GetDelegate()-> |
| 944 GetJavaScriptDialogManager(); | 968 GetJavaScriptDialogManager(); |
| 945 } | 969 } |
| 946 return content::WebContentsDelegate::GetJavaScriptDialogManager(); | 970 return content::WebContentsDelegate::GetJavaScriptDialogManager(); |
| 947 } | 971 } |
| 948 | 972 |
| 949 void DevToolsWindow::RunFileChooser(WebContents* web_contents, | 973 void DevToolsWindow::RunFileChooser(WebContents* web_contents, |
| 950 const FileChooserParams& params) { | 974 const FileChooserParams& params) { |
| 951 FileSelectHelper::RunFileChooser(web_contents, params); | 975 FileSelectHelper::RunFileChooser(web_contents, params); |
| 952 } | 976 } |
| 953 | 977 |
| 954 void DevToolsWindow::WebContentsFocused(WebContents* contents) { | 978 void DevToolsWindow::WebContentsFocused(WebContents* contents) { |
| 955 Browser* inspected_browser = NULL; | 979 Browser* inspected_browser = NULL; |
| 956 int inspected_tab_index = -1; | 980 int inspected_tab_index = -1; |
| 957 | 981 |
| 958 if (IsDocked() && FindInspectedBrowserAndTabIndex(&inspected_browser, | 982 if (IsDocked() && FindInspectedBrowserAndTabIndex(&inspected_browser, |
| 959 &inspected_tab_index)) { | 983 &inspected_tab_index)) { |
| 960 inspected_browser->window()->WebContentsFocused(contents); | 984 inspected_browser->window()->WebContentsFocused(contents); |
| 961 } | 985 } |
| 962 } | 986 } |
| 963 | 987 |
| 964 void DevToolsWindow::UpdateBrowserToolbar() { | 988 void DevToolsWindow::UpdateBrowserToolbar() { |
| 965 if (!inspected_web_contents_) | 989 content::WebContents* inspected_web_contents = GetInspectedWebContents(); |
| 990 if (!inspected_web_contents) |
| 966 return; | 991 return; |
| 967 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); | 992 BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| 968 if (inspected_window) | 993 if (inspected_window) |
| 969 inspected_window->UpdateToolbar(inspected_web_contents_, false); | 994 inspected_window->UpdateToolbar(inspected_web_contents, false); |
| 970 } | 995 } |
| 971 | 996 |
| 972 bool DevToolsWindow::IsDocked() { | 997 bool DevToolsWindow::IsDocked() { |
| 973 return dock_side_ != DEVTOOLS_DOCK_SIDE_UNDOCKED; | 998 return dock_side_ != DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| 974 } | 999 } |
| 975 | 1000 |
| 976 // static | 1001 // static |
| 977 DevToolsDockSide DevToolsWindow::GetDockSideFromPrefs(Profile* profile) { | 1002 DevToolsDockSide DevToolsWindow::GetDockSideFromPrefs(Profile* profile) { |
| 978 std::string dock_side = | 1003 std::string dock_side = |
| 979 profile->GetPrefs()->GetString(prefs::kDevToolsDockSide); | 1004 profile->GetPrefs()->GetString(prefs::kDevToolsDockSide); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1008 | 1033 |
| 1009 // static | 1034 // static |
| 1010 DevToolsDockSide DevToolsWindow::SideFromString( | 1035 DevToolsDockSide DevToolsWindow::SideFromString( |
| 1011 const std::string& dock_side) { | 1036 const std::string& dock_side) { |
| 1012 if (dock_side == kDockSideRight) | 1037 if (dock_side == kDockSideRight) |
| 1013 return DEVTOOLS_DOCK_SIDE_RIGHT; | 1038 return DEVTOOLS_DOCK_SIDE_RIGHT; |
| 1014 if (dock_side == kDockSideBottom) | 1039 if (dock_side == kDockSideBottom) |
| 1015 return DEVTOOLS_DOCK_SIDE_BOTTOM; | 1040 return DEVTOOLS_DOCK_SIDE_BOTTOM; |
| 1016 return DEVTOOLS_DOCK_SIDE_UNDOCKED; | 1041 return DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| 1017 } | 1042 } |
| OLD | NEW |