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..d9e1f98ca4d0dc9ad7c55fbc8e3e140566729fe8 100644 |
--- a/chrome/browser/devtools/devtools_window.cc |
+++ b/chrome/browser/devtools/devtools_window.cc |
@@ -228,14 +228,8 @@ 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"; |
+// TODO(dgozman): remove after switching to SetIsDocked. |
const char kDockSideUndocked[] = "undocked"; |
-const char kDockSideMinimized[] = "minimized"; |
static const char kFrontendHostId[] = "id"; |
static const char kFrontendHostMethod[] = "method"; |
@@ -290,12 +284,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 +320,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 +350,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 +358,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 +369,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 +399,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 +419,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 +432,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 +468,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 +477,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) |
pfeldman
2014/01/09 12:52:01
kNoop
dgozman
2014/01/14 15:26:17
Done.
|
+ 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 != -1); |
+ |
// 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 +527,7 @@ void DevToolsWindow::Show(const DevToolsToggleAction& action) { |
web_contents_->GetView()->SetInitialFocus(); |
} |
- ScheduleAction(action); |
+ DoAction(action); |
} |
// static |
@@ -600,20 +599,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), |
pfeldman
2014/01/09 12:52:01
Let add a comment here about supporting for the le
dgozman
2014/01/14 15:26:17
Done.
|
+ action_on_load_(DevToolsToggleAction::Nothing()), |
+ set_is_docked_for_test_on_load_(false), |
intercepted_page_beforeunload_(false), |
weak_factory_(this) { |
web_contents_ = |
@@ -657,7 +653,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 +670,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 +693,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 +741,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 +795,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 +835,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 +848,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 +881,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 +916,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 +932,7 @@ void DevToolsWindow::ActivateContents(content::WebContents* contents) { |
} |
void DevToolsWindow::CloseWindow() { |
- DCHECK(IsDocked()); |
+ DCHECK(is_docked_); |
web_contents_->GetRenderViewHost()->FirePageBeforeUnload(false); |
pfeldman
2014/01/09 12:52:01
Lets reset load_state_mask_ to kClosing here.
dgozman
2014/01/14 15:26:17
I've set action_on_load to NoOp instead.
|
} |
pfeldman
2014/01/09 13:02:03
if load_state_mask_ != IsLoaded, you should call H
dgozman
2014/01/14 15:26:17
After discussing with lushnikov@, I've added a che
|
@@ -992,7 +946,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 +955,65 @@ 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::SetIsDockedAndShowImmediatelyForTest(bool is_docked) { |
+ DCHECK(!is_docked || can_dock_); |
+ if (load_state_mask_ == kLoadCompleted) { |
+ SetIsDocked(is_docked); |
+ base::FundamentalValue docked(is_docked_); |
+ CallClientFunction("InspectorFrontendAPI.setIsDocked", &docked, NULL, NULL); |
pfeldman
2014/01/09 12:52:01
We don't need this as long as existing tests pass.
dgozman
2014/01/14 15:26:17
Done.
|
+ } else { |
+ is_docked_ = is_docked; |
+ Show(DevToolsToggleAction::Show()); |
+ set_is_docked_for_test_on_load_ = true; |
+ load_state_mask_ |= kIsDockedSet; |
+ if (load_state_mask_ == kLoadCompleted) |
+ 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_) |
pfeldman
2014/01/09 12:52:01
Lets add DCHECK and proceed as if dock_requested =
dgozman
2014/01/14 15:26:17
Done.
|
+ 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 +1239,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 +1296,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 +1314,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 +1330,6 @@ void DevToolsWindow::DoAction() { |
NOTREACHED(); |
break; |
} |
- action_on_load_ = DevToolsToggleAction::Show(); |
} |
void DevToolsWindow::UpdateTheme() { |
@@ -1483,23 +1414,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); |
+ } |
} |