Chromium Code Reviews| Index: chrome/browser/devtools/devtools_window.cc |
| diff --git a/chrome/browser/devtools/devtools_window.cc b/chrome/browser/devtools/devtools_window.cc |
| index 15aba3a41a3835ad7ef5d1edcdc2640d312ae8aa..c4b415a3b283f2411699d50ad441ba2fdc7e4a50 100644 |
| --- a/chrome/browser/devtools/devtools_window.cc |
| +++ b/chrome/browser/devtools/devtools_window.cc |
| @@ -228,10 +228,6 @@ typedef std::vector<DevToolsWindow*> DevToolsWindows; |
| base::LazyInstance<DevToolsWindows>::Leaky g_instances = |
| LAZY_INSTANCE_INITIALIZER; |
| -const char kPrefBottom[] = "dock_bottom"; |
| -const char kPrefRight[] = "dock_right"; |
| -const char kPrefUndocked[] = "undocked"; |
| - |
| const char kDockSideBottom[] = "bottom"; |
| const char kDockSideRight[] = "right"; |
| const char kDockSideUndocked[] = "undocked"; |
| @@ -290,12 +286,6 @@ std::string DevToolsWindow::GetDevToolsWindowPlacementPrefKey() { |
| // static |
| void DevToolsWindow::RegisterProfilePrefs( |
| user_prefs::PrefRegistrySyncable* registry) { |
| - registry->RegisterBooleanPref( |
| - prefs::kDevToolsOpenDocked, true, |
| - user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| - registry->RegisterStringPref( |
| - prefs::kDevToolsDockSide, kDockSideBottom, |
| - user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| registry->RegisterDictionaryPref( |
| prefs::kDevToolsEditedFiles, |
| user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); |
| @@ -332,7 +322,7 @@ DevToolsWindow* DevToolsWindow::GetDockedInstanceForInspectedTab( |
| content::WebContents* inspected_web_contents) { |
| DevToolsWindow* window = GetInstanceForInspectedRenderViewHost( |
| inspected_web_contents->GetRenderViewHost()); |
| - return (window && window->IsDocked()) ? window : NULL; |
| + return (window && window->is_docked_) ? window : NULL; |
| } |
| // static |
| @@ -362,7 +352,7 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
| content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
| worker_agent, window->frontend_host_.get()); |
| } |
| - window->Show(DevToolsToggleAction::Show()); |
| + window->ScheduleShow(DevToolsToggleAction::Show()); |
| return window; |
| } |
| @@ -370,8 +360,7 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindowForWorker( |
| DevToolsWindow* DevToolsWindow::CreateDevToolsWindowForWorker( |
| Profile* profile) { |
| content::RecordAction(content::UserMetricsAction("DevTools_InspectWorker")); |
| - return Create(profile, GURL(), NULL, DEVTOOLS_DOCK_SIDE_UNDOCKED, true, |
| - false, false); |
| + return Create(profile, GURL(), NULL, true, false, false); |
| } |
| // static |
| @@ -382,6 +371,14 @@ DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| } |
| // static |
| +DevToolsWindow* DevToolsWindow::OpenDevToolsWindow( |
| + content::RenderViewHost* inspected_rvh, |
| + const DevToolsToggleAction& action) { |
| + return ToggleDevToolsWindow( |
| + inspected_rvh, true, action); |
| +} |
| + |
| +// static |
| DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| Browser* browser, |
| const DevToolsToggleAction& action) { |
| @@ -404,11 +401,11 @@ void DevToolsWindow::OpenExternalFrontend( |
| DevToolsWindow* window = FindDevToolsWindow(agent_host); |
| if (!window) { |
| window = Create(profile, DevToolsUI::GetProxyURL(frontend_url), NULL, |
| - DEVTOOLS_DOCK_SIDE_UNDOCKED, false, true, false); |
| + false, true, false); |
| content::DevToolsManager::GetInstance()->RegisterDevToolsClientHostFor( |
| agent_host, window->frontend_host_.get()); |
| } |
| - window->Show(DevToolsToggleAction::Show()); |
| + window->ScheduleShow(DevToolsToggleAction::Show()); |
| } |
| // static |
| @@ -424,10 +421,9 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| if (!window) { |
| Profile* profile = Profile::FromBrowserContext( |
| inspected_rvh->GetProcess()->GetBrowserContext()); |
| - DevToolsDockSide dock_side = GetDockSideFromPrefs(profile); |
| content::RecordAction( |
| content::UserMetricsAction("DevTools_InspectRenderer")); |
| - window = Create(profile, GURL(), inspected_rvh, dock_side, false, false, |
| + window = Create(profile, GURL(), inspected_rvh, false, false, |
| true); |
| manager->RegisterDevToolsClientHostFor(agent.get(), |
| window->frontend_host_.get()); |
| @@ -438,11 +434,9 @@ DevToolsWindow* DevToolsWindow::ToggleDevToolsWindow( |
| window->UpdateBrowserToolbar(); |
| // If window is docked and visible, we hide it on toggle. If window is |
| - // undocked, we show (activate) it. If window is minimized, we maximize it. |
| - if (window->dock_side_ == DEVTOOLS_DOCK_SIDE_MINIMIZED) |
| - window->Restore(); |
| - else if (!window->IsDocked() || do_open) |
| - window->Show(action); |
| + // undocked, we show (activate) it. |
| + if (!window->is_docked_ || do_open) |
| + window->ScheduleShow(action); |
| else |
| window->CloseWindow(); |
| @@ -476,10 +470,6 @@ content::RenderViewHost* DevToolsWindow::GetRenderViewHost() { |
| return web_contents_->GetRenderViewHost(); |
| } |
| -content::DevToolsClientHost* DevToolsWindow::GetDevToolsClientHostForTest() { |
| - return frontend_host_.get(); |
| -} |
| - |
| gfx::Insets DevToolsWindow::GetContentsInsets() const { |
| return contents_insets_; |
| } |
| @@ -489,30 +479,41 @@ gfx::Size DevToolsWindow::GetMinimumSize() const { |
| return kMinDevToolsSize; |
| } |
| +void DevToolsWindow::ScheduleShow(const DevToolsToggleAction& action) { |
| + if (load_state_mask_ == kLoadCompleted) |
| + Show(action); |
| + else |
| + action_on_load_ = action; |
| +} |
| + |
| void DevToolsWindow::Show(const DevToolsToggleAction& action) { |
| - if (IsDocked()) { |
| + if (action.type() == DevToolsToggleAction::kNothing) |
| + return; |
| + |
| + if (is_docked_) { |
| + DCHECK(can_dock_); |
| Browser* inspected_browser = NULL; |
| int inspected_tab_index = -1; |
| + FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
| + &inspected_browser, |
| + &inspected_tab_index); |
| + DCHECK(inspected_browser); |
| + DCHECK(inspected_tab_index); |
| + |
| // Tell inspected browser to update splitter and switch to inspected panel. |
| - if (!IsInspectedBrowserPopup() && |
| - FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
| - &inspected_browser, |
| - &inspected_tab_index)) { |
| - BrowserWindow* inspected_window = inspected_browser->window(); |
| - web_contents_->SetDelegate(this); |
| - inspected_window->UpdateDevTools(); |
| - web_contents_->GetView()->SetInitialFocus(); |
| - inspected_window->Show(); |
| - TabStripModel* tab_strip_model = inspected_browser->tab_strip_model(); |
| - tab_strip_model->ActivateTabAt(inspected_tab_index, true); |
| - PrefsTabHelper::CreateForWebContents(web_contents_); |
| - GetRenderViewHost()->SyncRendererPrefs(); |
| - ScheduleAction(action); |
| - return; |
| - } |
| + BrowserWindow* inspected_window = inspected_browser->window(); |
| + web_contents_->SetDelegate(this); |
| + inspected_window->UpdateDevTools(); |
| + web_contents_->GetView()->SetInitialFocus(); |
| + inspected_window->Show(); |
| - // Sometimes we don't know where to dock. Stay undocked. |
| - dock_side_ = DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| + TabStripModel* tab_strip_model = inspected_browser->tab_strip_model(); |
| + tab_strip_model->ActivateTabAt(inspected_tab_index, true); |
| + PrefsTabHelper::CreateForWebContents(web_contents_); |
| + GetRenderViewHost()->SyncRendererPrefs(); |
| + |
| + DoAction(action); |
| + return; |
| } |
| // Avoid consecutive window switching if the devtools window has been opened |
| @@ -528,7 +529,7 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { |
| web_contents_->GetView()->SetInitialFocus(); |
| } |
| - ScheduleAction(action); |
| + DoAction(action); |
| } |
| // static |
| @@ -600,20 +601,17 @@ void DevToolsWindow::OnPageCloseCanceled(content::WebContents* contents) { |
| DevToolsWindow::OnPageCloseCanceled(window->web_contents()); |
| } |
| -void DevToolsWindow::SetDockSideForTest(DevToolsDockSide dock_side) { |
| - SetDockSide(SideToString(dock_side)); |
| -} |
| - |
| DevToolsWindow::DevToolsWindow(Profile* profile, |
| const GURL& url, |
| content::RenderViewHost* inspected_rvh, |
| - DevToolsDockSide dock_side) |
| + bool can_dock) |
| : profile_(profile), |
| browser_(NULL), |
| - dock_side_(dock_side), |
| - is_loaded_(false), |
| - action_on_load_(DevToolsToggleAction::Show()), |
| - dock_side_before_minimized_(dock_side), |
| + is_docked_(false), |
| + can_dock_(can_dock), |
| + load_state_mask_(can_dock ? kNotLoaded : kIsDockedSet), |
|
dgozman
2013/12/30 13:06:17
This initialization allows old frontends to work a
|
| + action_on_load_(DevToolsToggleAction::Nothing()), |
| + set_is_docked_for_test_on_load_(false), |
| intercepted_page_beforeunload_(false), |
| weak_factory_(this) { |
| web_contents_ = |
| @@ -657,7 +655,6 @@ DevToolsWindow* DevToolsWindow::Create( |
| Profile* profile, |
| const GURL& frontend_url, |
| content::RenderViewHost* inspected_rvh, |
| - DevToolsDockSide dock_side, |
| bool shared_worker_frontend, |
| bool external_frontend, |
| bool can_dock) { |
| @@ -675,17 +672,16 @@ DevToolsWindow* DevToolsWindow::Create( |
| } |
| // Create WebContents with devtools. |
| - GURL url(GetDevToolsURL(profile, frontend_url, dock_side, |
| + GURL url(GetDevToolsURL(profile, frontend_url, |
| shared_worker_frontend, |
| external_frontend, |
| can_dock)); |
| - return new DevToolsWindow(profile, url, inspected_rvh, dock_side); |
| + return new DevToolsWindow(profile, url, inspected_rvh, can_dock); |
| } |
| // static |
| GURL DevToolsWindow::GetDevToolsURL(Profile* profile, |
| const GURL& base_url, |
| - DevToolsDockSide dock_side, |
| bool shared_worker_frontend, |
| bool external_frontend, |
| bool can_dock) { |
| @@ -699,7 +695,7 @@ GURL DevToolsWindow::GetDevToolsURL(Profile* profile, |
| std::string url_string( |
| frontend_url + |
| ((frontend_url.find("?") == std::string::npos) ? "?" : "&") + |
| - "dockSide=" + SideToString(dock_side) + |
| + "dockSide=undocked" + // TODO(dgozman): remove this support in M38. |
| "&toolbarColor=" + |
| SkColorToRGBAString(tp->GetColor(ThemeProperties::COLOR_TOOLBAR)) + |
| "&textColor=" + |
| @@ -747,48 +743,8 @@ DevToolsWindow* DevToolsWindow::AsDevToolsWindow( |
| } |
| // static |
| -DevToolsDockSide DevToolsWindow::GetDockSideFromPrefs(Profile* profile) { |
| - std::string dock_side = |
| - profile->GetPrefs()->GetString(prefs::kDevToolsDockSide); |
| - |
| - // Migrate prefs. |
| - const char kOldPrefBottom[] = "bottom"; |
| - const char kOldPrefRight[] = "right"; |
| - if ((dock_side == kOldPrefBottom) || (dock_side == kOldPrefRight)) { |
| - if (!profile->GetPrefs()->GetBoolean(prefs::kDevToolsOpenDocked)) |
| - return DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| - return (dock_side == kOldPrefBottom) ? |
| - DEVTOOLS_DOCK_SIDE_BOTTOM : DEVTOOLS_DOCK_SIDE_RIGHT; |
| - } |
| - |
| - if (dock_side == kPrefUndocked) |
| - return DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| - if (dock_side == kPrefRight) |
| - return DEVTOOLS_DOCK_SIDE_RIGHT; |
| - // Default to docked to bottom. |
| - return DEVTOOLS_DOCK_SIDE_BOTTOM; |
| -} |
| - |
| -// static |
| -std::string DevToolsWindow::SideToString(DevToolsDockSide dock_side) { |
| - switch (dock_side) { |
| - case DEVTOOLS_DOCK_SIDE_UNDOCKED: return kDockSideUndocked; |
| - case DEVTOOLS_DOCK_SIDE_RIGHT: return kDockSideRight; |
| - case DEVTOOLS_DOCK_SIDE_BOTTOM: return kDockSideBottom; |
| - case DEVTOOLS_DOCK_SIDE_MINIMIZED: return kDockSideMinimized; |
| - default: return kDockSideUndocked; |
| - } |
| -} |
| - |
| -// static |
| -DevToolsDockSide DevToolsWindow::SideFromString( |
| - const std::string& dock_side) { |
| - if (dock_side == kDockSideRight) |
| - return DEVTOOLS_DOCK_SIDE_RIGHT; |
| - if (dock_side == kDockSideBottom) |
| - return DEVTOOLS_DOCK_SIDE_BOTTOM; |
| - return (dock_side == kDockSideMinimized) ? |
| - DEVTOOLS_DOCK_SIDE_MINIMIZED : DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| +bool DevToolsWindow::IsDockedFromString(const std::string& dock_side) { |
| + return dock_side != kDockSideUndocked; |
| } |
| void DevToolsWindow::Observe(int type, |
| @@ -841,7 +797,7 @@ void DevToolsWindow::AddNewContents(content::WebContents* source, |
| } |
| void DevToolsWindow::CloseContents(content::WebContents* source) { |
| - CHECK(IsDocked()); |
| + CHECK(is_docked_); |
| // Update dev tools to reflect removed dev tools window. |
| BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| if (inspected_window) |
| @@ -881,7 +837,7 @@ bool DevToolsWindow::PreHandleKeyboardEvent( |
| content::WebContents* source, |
| const content::NativeWebKeyboardEvent& event, |
| bool* is_keyboard_shortcut) { |
| - if (IsDocked()) { |
| + if (is_docked_) { |
| BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| if (inspected_window) { |
| return inspected_window->PreHandleKeyboardEvent(event, |
| @@ -894,7 +850,7 @@ bool DevToolsWindow::PreHandleKeyboardEvent( |
| void DevToolsWindow::HandleKeyboardEvent( |
| content::WebContents* source, |
| const content::NativeWebKeyboardEvent& event) { |
| - if (IsDocked()) { |
| + if (is_docked_) { |
| if (event.windowsKeyCode == 0x08) { |
| // Do not navigate back in history on Windows (http://crbug.com/74156). |
| return; |
| @@ -927,7 +883,7 @@ void DevToolsWindow::RunFileChooser(content::WebContents* web_contents, |
| void DevToolsWindow::WebContentsFocused(content::WebContents* contents) { |
| Browser* inspected_browser = NULL; |
| int inspected_tab_index = -1; |
| - if (IsDocked() && FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
| + if (is_docked_ && FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
| &inspected_browser, |
| &inspected_tab_index)) |
| inspected_browser->window()->WebContentsFocused(contents); |
| @@ -962,14 +918,14 @@ void DevToolsWindow::DispatchOnEmbedder(const std::string& message) { |
| } |
| void DevToolsWindow::ActivateWindow() { |
| - if (IsDocked() && GetInspectedBrowserWindow()) |
| + if (is_docked_ && GetInspectedBrowserWindow()) |
| web_contents_->GetView()->Focus(); |
| - else if (!IsDocked() && !browser_->window()->IsActive()) |
| + else if (!is_docked_ && !browser_->window()->IsActive()) |
| browser_->window()->Activate(); |
| } |
| void DevToolsWindow::ActivateContents(content::WebContents* contents) { |
| - if (IsDocked()) { |
| + if (is_docked_) { |
| content::WebContents* inspected_tab = this->GetInspectedWebContents(); |
| inspected_tab->GetDelegate()->ActivateContents(inspected_tab); |
| } else { |
| @@ -978,7 +934,7 @@ void DevToolsWindow::ActivateContents(content::WebContents* contents) { |
| } |
| void DevToolsWindow::CloseWindow() { |
| - DCHECK(IsDocked()); |
| + DCHECK(is_docked_); |
| web_contents_->GetRenderViewHost()->FirePageBeforeUnload(false); |
| } |
| @@ -992,7 +948,7 @@ void DevToolsWindow::SetContentsInsets( |
| } |
| contents_insets_ = gfx::Insets(top, left, bottom, right); |
| - if (IsDocked()) { |
| + if (is_docked_) { |
| // Update inspected window. |
| BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| if (inspected_window) |
| @@ -1001,63 +957,64 @@ void DevToolsWindow::SetContentsInsets( |
| } |
| void DevToolsWindow::MoveWindow(int x, int y) { |
| - if (!IsDocked()) { |
| + if (!is_docked_) { |
| gfx::Rect bounds = browser_->window()->GetBounds(); |
| bounds.Offset(x, y); |
| browser_->window()->SetBounds(bounds); |
| } |
| } |
| +void DevToolsWindow::SetIsDockedForTest(bool is_docked) { |
| + SetIsDocked(is_docked); |
| + if (load_state_mask_ == kLoadCompleted) { |
| + base::FundamentalValue docked(is_docked_); |
| + CallClientFunction("InspectorFrontendAPI.setIsDocked", &docked, NULL, NULL); |
| + } else { |
| + set_is_docked_for_test_on_load_ = true; |
| + } |
| +} |
| + |
| +void DevToolsWindow::SetIsDockedAndShowImmediatelyForTest(bool is_docked) { |
| + is_docked_ = is_docked; |
| + LoadCompleted(); |
| +} |
| + |
| void DevToolsWindow::SetDockSide(const std::string& side) { |
| - DevToolsDockSide requested_side = SideFromString(side); |
| - bool dock_requested = requested_side != DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| - bool is_docked = IsDocked(); |
| - |
| - if (dock_requested && |
| - (!GetInspectedWebContents() || !GetInspectedBrowserWindow() || |
| - IsInspectedBrowserPopup())) { |
| - // Cannot dock, avoid window flashing due to close-reopen cycle. |
| + // TODO(dgozman): remove this method after frontend switches to SetIsDocked. |
| + SetIsDocked(IsDockedFromString(side)); |
| +} |
| + |
| +void DevToolsWindow::SetIsDocked(bool dock_requested) { |
| + if (dock_requested && !can_dock_) |
| + return; |
| + |
| + bool was_docked = is_docked_; |
| + is_docked_ = dock_requested; |
| + |
| + if (load_state_mask_ != kLoadCompleted) { |
| + load_state_mask_ |= kIsDockedSet; |
| + if (load_state_mask_ == kLoadCompleted) |
| + LoadCompleted(); |
| return; |
| } |
| - if ((dock_side_ != DEVTOOLS_DOCK_SIDE_MINIMIZED) && |
| - (requested_side == DEVTOOLS_DOCK_SIDE_MINIMIZED)) |
| - dock_side_before_minimized_ = dock_side_; |
| + if (dock_requested == was_docked) |
| + return; |
| - dock_side_ = requested_side; |
| - if (dock_requested && !is_docked) { |
| + if (dock_requested && !was_docked) { |
| // Detach window from the external devtools browser. It will lead to |
| // the browser object's close and delete. Remove observer first. |
| TabStripModel* tab_strip_model = browser_->tab_strip_model(); |
| tab_strip_model->DetachWebContentsAt( |
| tab_strip_model->GetIndexOfWebContents(web_contents_)); |
| browser_ = NULL; |
| - } else if (!dock_requested && is_docked) { |
| + } else if (!dock_requested && was_docked) { |
| // Update inspected window to hide split and reset it. |
| BrowserWindow* inspected_window = GetInspectedBrowserWindow(); |
| if (inspected_window) |
| inspected_window->UpdateDevTools(); |
| } |
| - if (dock_side_ != DEVTOOLS_DOCK_SIDE_MINIMIZED) { |
| - std::string pref_value = kPrefBottom; |
| - switch (dock_side_) { |
| - case DEVTOOLS_DOCK_SIDE_UNDOCKED: |
| - pref_value = kPrefUndocked; |
| - break; |
| - case DEVTOOLS_DOCK_SIDE_RIGHT: |
| - pref_value = kPrefRight; |
| - break; |
| - case DEVTOOLS_DOCK_SIDE_BOTTOM: |
| - pref_value = kPrefBottom; |
| - break; |
| - case DEVTOOLS_DOCK_SIDE_MINIMIZED: |
| - // We don't persist minimized state. |
| - break; |
| - } |
| - profile_->GetPrefs()->SetString(prefs::kDevToolsDockSide, pref_value); |
| - } |
| - |
| Show(DevToolsToggleAction::Show()); |
| } |
| @@ -1283,7 +1240,7 @@ void DevToolsWindow::ShowDevToolsConfirmInfoBar( |
| const base::string16& message, |
| const InfoBarCallback& callback) { |
| DevToolsConfirmInfoBarDelegate::Create( |
| - IsDocked() ? |
| + is_docked_ ? |
| InfoBarService::FromWebContents(GetInspectedWebContents()) : |
| InfoBarService::FromWebContents(web_contents_), |
| callback, message); |
| @@ -1340,32 +1297,8 @@ BrowserWindow* DevToolsWindow::GetInspectedBrowserWindow() { |
| browser->window() : NULL; |
| } |
| -bool DevToolsWindow::IsInspectedBrowserPopup() { |
| - Browser* browser = NULL; |
| - int tab; |
| - return FindInspectedBrowserAndTabIndex(GetInspectedWebContents(), |
| - &browser, &tab) && |
| - browser->is_type_popup(); |
| -} |
| - |
| -void DevToolsWindow::UpdateFrontendDockSide() { |
| - base::StringValue dock_side(SideToString(dock_side_)); |
| - CallClientFunction("InspectorFrontendAPI.setDockSide", &dock_side, NULL, |
| - NULL); |
| - base::FundamentalValue docked(IsDocked()); |
| - CallClientFunction("InspectorFrontendAPI.setAttachedWindow", &docked, NULL, |
| - NULL); |
| -} |
| - |
| -void DevToolsWindow::ScheduleAction(const DevToolsToggleAction& action) { |
| - action_on_load_ = action; |
| - if (is_loaded_) |
| - DoAction(); |
| -} |
| - |
| -void DevToolsWindow::DoAction() { |
| - UpdateFrontendDockSide(); |
| - switch (action_on_load_.type()) { |
| +void DevToolsWindow::DoAction(const DevToolsToggleAction& action) { |
| + switch (action.type()) { |
| case DevToolsToggleAction::kShowConsole: |
| CallClientFunction("InspectorFrontendAPI.showConsole", NULL, NULL, NULL); |
| break; |
| @@ -1382,7 +1315,7 @@ void DevToolsWindow::DoAction() { |
| case DevToolsToggleAction::kReveal: { |
| const DevToolsToggleAction::RevealParams* params = |
| - action_on_load_.params(); |
| + action.params(); |
| CHECK(params); |
| base::StringValue url_value(params->url); |
| base::FundamentalValue line_value(static_cast<int>(params->line_number)); |
| @@ -1398,7 +1331,6 @@ void DevToolsWindow::DoAction() { |
| NOTREACHED(); |
| break; |
| } |
| - action_on_load_ = DevToolsToggleAction::Show(); |
| } |
| void DevToolsWindow::UpdateTheme() { |
| @@ -1483,23 +1415,25 @@ void DevToolsWindow::UpdateBrowserToolbar() { |
| inspected_window->UpdateToolbar(NULL); |
| } |
| -bool DevToolsWindow::IsDocked() { |
| - return dock_side_ != DEVTOOLS_DOCK_SIDE_UNDOCKED; |
| -} |
| - |
| -void DevToolsWindow::Restore() { |
| - if (dock_side_ == DEVTOOLS_DOCK_SIDE_MINIMIZED) |
| - SetDockSide(SideToString(dock_side_before_minimized_)); |
| -} |
| - |
| content::WebContents* DevToolsWindow::GetInspectedWebContents() { |
| return inspected_contents_observer_ ? |
| inspected_contents_observer_->web_contents() : NULL; |
| } |
| void DevToolsWindow::DocumentOnLoadCompletedInMainFrame() { |
| - is_loaded_ = true; |
| + load_state_mask_ |= kOnLoadFired; |
| + if (load_state_mask_ == kLoadCompleted) |
| + LoadCompleted(); |
| +} |
| + |
| +void DevToolsWindow::LoadCompleted() { |
| + Show(action_on_load_); |
| + action_on_load_ = DevToolsToggleAction::Nothing(); |
| UpdateTheme(); |
| - DoAction(); |
| AddDevToolsExtensionsToClient(); |
| + if (set_is_docked_for_test_on_load_) { |
| + set_is_docked_for_test_on_load_ = false; |
| + base::FundamentalValue docked(is_docked_); |
| + CallClientFunction("InspectorFrontendAPI.setIsDocked", &docked, NULL, NULL); |
| + } |
| } |