| OLD | NEW | 
|     1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |     1 // Copyright (c) 2011 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/browser.h" |     5 #include "chrome/browser/ui/browser.h" | 
|     6  |     6  | 
|     7 #if defined(OS_WIN) |     7 #if defined(OS_WIN) | 
|     8 #include <windows.h> |     8 #include <windows.h> | 
|     9 #include <shellapi.h> |     9 #include <shellapi.h> | 
|    10 #endif  // OS_WIN |    10 #endif  // OS_WIN | 
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   255       block_command_execution_(false), |   255       block_command_execution_(false), | 
|   256       last_blocked_command_id_(-1), |   256       last_blocked_command_id_(-1), | 
|   257       last_blocked_command_disposition_(CURRENT_TAB), |   257       last_blocked_command_disposition_(CURRENT_TAB), | 
|   258       pending_web_app_action_(NONE), |   258       pending_web_app_action_(NONE), | 
|   259       ALLOW_THIS_IN_INITIALIZER_LIST( |   259       ALLOW_THIS_IN_INITIALIZER_LIST( | 
|   260           tab_restore_service_delegate_( |   260           tab_restore_service_delegate_( | 
|   261               new BrowserTabRestoreServiceDelegate(this))), |   261               new BrowserTabRestoreServiceDelegate(this))), | 
|   262       ALLOW_THIS_IN_INITIALIZER_LIST( |   262       ALLOW_THIS_IN_INITIALIZER_LIST( | 
|   263           synced_window_delegate_( |   263           synced_window_delegate_( | 
|   264               new BrowserSyncedWindowDelegate(this))), |   264               new BrowserSyncedWindowDelegate(this))), | 
|   265       bookmark_bar_state_(BookmarkBar::HIDDEN) { |   265       bookmark_bar_state_(BookmarkBar::HIDDEN), | 
 |   266       fullscreened_tab_(NULL), | 
 |   267       tab_caused_fullscreen_(false) { | 
|   266   registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, |   268   registrar_.Add(this, content::NOTIFICATION_SSL_VISIBLE_STATE_CHANGED, | 
|   267                  NotificationService::AllSources()); |   269                  NotificationService::AllSources()); | 
|   268   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED, |   270   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UPDATE_DISABLED, | 
|   269                  NotificationService::AllSources()); |   271                  NotificationService::AllSources()); | 
|   270   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, |   272   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_LOADED, | 
|   271                  NotificationService::AllSources()); |   273                  NotificationService::AllSources()); | 
|   272   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, |   274   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED, | 
|   273                  NotificationService::AllSources()); |   275                  NotificationService::AllSources()); | 
|   274   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, |   276   registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_UNINSTALLED, | 
|   275                  NotificationService::AllSources()); |   277                  NotificationService::AllSources()); | 
| (...skipping 999 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1275       local_params.disposition = CURRENT_TAB; |  1277       local_params.disposition = CURRENT_TAB; | 
|  1276     } |  1278     } | 
|  1277   } |  1279   } | 
|  1278  |  1280  | 
|  1279   browser::Navigate(&local_params); |  1281   browser::Navigate(&local_params); | 
|  1280 } |  1282 } | 
|  1281  |  1283  | 
|  1282 void Browser::WindowFullscreenStateChanged() { |  1284 void Browser::WindowFullscreenStateChanged() { | 
|  1283   UpdateCommandsForFullscreenMode(window_->IsFullscreen()); |  1285   UpdateCommandsForFullscreenMode(window_->IsFullscreen()); | 
|  1284   UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); |  1286   UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); | 
 |  1287   MessageLoop::current()->PostTask( | 
 |  1288       FROM_HERE, method_factory_.NewRunnableMethod( | 
 |  1289       &Browser::NotifyFullscreenChange)); | 
 |  1290 } | 
 |  1291  | 
 |  1292 void Browser::NotifyFullscreenChange() { | 
 |  1293   NotificationService::current()->Notify( | 
 |  1294       chrome::NOTIFICATION_FULLSCREEN_CHANGED, | 
 |  1295       Source<Browser>(this), | 
 |  1296       NotificationService::NoDetails()); | 
|  1285 } |  1297 } | 
|  1286  |  1298  | 
|  1287 /////////////////////////////////////////////////////////////////////////////// |  1299 /////////////////////////////////////////////////////////////////////////////// | 
|  1288 // Browser, Assorted browser commands: |  1300 // Browser, Assorted browser commands: | 
|  1289  |  1301  | 
|  1290 TabContents* Browser::GetOrCloneTabForDisposition( |  1302 TabContents* Browser::GetOrCloneTabForDisposition( | 
|  1291        WindowOpenDisposition disposition) { |  1303        WindowOpenDisposition disposition) { | 
|  1292   TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); |  1304   TabContentsWrapper* current_tab = GetSelectedTabContentsWrapper(); | 
|  1293   switch (disposition) { |  1305   switch (disposition) { | 
|  1294     case NEW_FOREGROUND_TAB: |  1306     case NEW_FOREGROUND_TAB: | 
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1623   UserMetrics::RecordAction(UserMetricsAction("ShowAsTab")); |  1635   UserMetrics::RecordAction(UserMetricsAction("ShowAsTab")); | 
|  1624   int tab_strip_index = tab_handler_->GetTabStripModel()->active_index(); |  1636   int tab_strip_index = tab_handler_->GetTabStripModel()->active_index(); | 
|  1625   TabContentsWrapper* contents = |  1637   TabContentsWrapper* contents = | 
|  1626       tab_handler_->GetTabStripModel()->DetachTabContentsAt(tab_strip_index); |  1638       tab_handler_->GetTabStripModel()->DetachTabContentsAt(tab_strip_index); | 
|  1627   Browser* browser = Browser::Create(profile_); |  1639   Browser* browser = Browser::Create(profile_); | 
|  1628   browser->tabstrip_model()->AppendTabContents(contents, true); |  1640   browser->tabstrip_model()->AppendTabContents(contents, true); | 
|  1629   browser->window()->Show(); |  1641   browser->window()->Show(); | 
|  1630 } |  1642 } | 
|  1631  |  1643  | 
|  1632 void Browser::ToggleFullscreenMode() { |  1644 void Browser::ToggleFullscreenMode() { | 
 |  1645   bool entering_fullscreen = !window_->IsFullscreen(); | 
 |  1646  | 
|  1633 #if !defined(OS_MACOSX) |  1647 #if !defined(OS_MACOSX) | 
|  1634   // In kiosk mode, we always want to be fullscreen. When the browser first |  1648   // In kiosk mode, we always want to be fullscreen. When the browser first | 
|  1635   // starts we're not yet fullscreen, so let the initial toggle go through. |  1649   // starts we're not yet fullscreen, so let the initial toggle go through. | 
|  1636   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) && |  1650   if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) && | 
|  1637       window_->IsFullscreen()) |  1651       window_->IsFullscreen()) | 
|  1638     return; |  1652     return; | 
|  1639 #endif |  1653 #endif | 
|  1640  |  1654  | 
|  1641   UserMetrics::RecordAction(UserMetricsAction("ToggleFullscreen")); |  1655   UserMetrics::RecordAction(UserMetricsAction("ToggleFullscreen")); | 
|  1642   window_->SetFullscreen(!window_->IsFullscreen()); |  1656   window_->SetFullscreen(entering_fullscreen); | 
|  1643  |  1657  | 
|  1644   // Once the window has become fullscreen it'll call back to |  1658   // Once the window has become fullscreen it'll call back to | 
|  1645   // WindowFullscreenStateChanged(). We don't do this immediately as |  1659   // WindowFullscreenStateChanged(). We don't do this immediately as | 
|  1646   // BrowserWindow::SetFullscreen() asks for bookmark_bar_state_, so we let the |  1660   // BrowserWindow::SetFullscreen() asks for bookmark_bar_state_, so we let the | 
|  1647   // BrowserWindow invoke WindowFullscreenStateChanged when appropriate. |  1661   // BrowserWindow invoke WindowFullscreenStateChanged when appropriate. | 
|  1648  |  1662  | 
|  1649   // TODO: convert mac to invoke WindowFullscreenStateChanged once it updates |  1663   // TODO: convert mac to invoke WindowFullscreenStateChanged once it updates | 
|  1650   // the necessary state of the frame. |  1664   // the necessary state of the frame. | 
|  1651 #if defined(OS_MACOSX) |  1665 #if defined(OS_MACOSX) | 
|  1652   WindowFullscreenStateChanged(); |  1666   WindowFullscreenStateChanged(); | 
|  1653 #endif |  1667 #endif | 
 |  1668  | 
 |  1669   if (!entering_fullscreen) | 
 |  1670     NotifyTabOfFullscreenExitIfNecessary(); | 
 |  1671 } | 
 |  1672  | 
 |  1673 void Browser::NotifyTabOfFullscreenExitIfNecessary() { | 
 |  1674   if (fullscreened_tab_) | 
 |  1675     fullscreened_tab_->ExitFullscreenMode(); | 
 |  1676   fullscreened_tab_ = NULL; | 
 |  1677   tab_caused_fullscreen_ = false; | 
|  1654 } |  1678 } | 
|  1655  |  1679  | 
|  1656 #if defined(OS_MACOSX) |  1680 #if defined(OS_MACOSX) | 
|  1657 void Browser::TogglePresentationMode() { |  1681 void Browser::TogglePresentationMode() { | 
|  1658   window_->SetPresentationMode(!window_->InPresentationMode()); |  1682   window_->SetPresentationMode(!window_->InPresentationMode()); | 
|  1659   WindowFullscreenStateChanged(); |  1683   WindowFullscreenStateChanged(); | 
|  1660 } |  1684 } | 
|  1661 #endif |  1685 #endif | 
|  1662  |  1686  | 
|  1663 #if defined(OS_CHROMEOS) |  1687 #if defined(OS_CHROMEOS) | 
| (...skipping 1325 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2989  |  3013  | 
|  2990   // Sever the TabContents' connection back to us. |  3014   // Sever the TabContents' connection back to us. | 
|  2991   SetAsDelegate(contents, NULL); |  3015   SetAsDelegate(contents, NULL); | 
|  2992 } |  3016 } | 
|  2993  |  3017  | 
|  2994 void Browser::TabDetachedAt(TabContentsWrapper* contents, int index) { |  3018 void Browser::TabDetachedAt(TabContentsWrapper* contents, int index) { | 
|  2995   TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); |  3019   TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); | 
|  2996 } |  3020 } | 
|  2997  |  3021  | 
|  2998 void Browser::TabDeactivated(TabContentsWrapper* contents) { |  3022 void Browser::TabDeactivated(TabContentsWrapper* contents) { | 
 |  3023   if (contents == fullscreened_tab_) | 
 |  3024     ExitTabbedFullscreenModeIfNecessary(); | 
|  2999   if (instant()) |  3025   if (instant()) | 
|  3000     instant()->DestroyPreviewContents(); |  3026     instant()->DestroyPreviewContents(); | 
|  3001  |  3027  | 
|  3002   // Save what the user's currently typing, so it can be restored when we |  3028   // Save what the user's currently typing, so it can be restored when we | 
|  3003   // switch back to this tab. |  3029   // switch back to this tab. | 
|  3004   window_->GetLocationBar()->SaveStateToContents(contents->tab_contents()); |  3030   window_->GetLocationBar()->SaveStateToContents(contents->tab_contents()); | 
|  3005 } |  3031 } | 
|  3006  |  3032  | 
|  3007 void Browser::ActiveTabChanged(TabContentsWrapper* old_contents, |  3033 void Browser::ActiveTabChanged(TabContentsWrapper* old_contents, | 
|  3008                                TabContentsWrapper* new_contents, |  3034                                TabContentsWrapper* new_contents, | 
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3592 void Browser::RunFileChooser(TabContents* tab, |  3618 void Browser::RunFileChooser(TabContents* tab, | 
|  3593                              const ViewHostMsg_RunFileChooser_Params& params) { |  3619                              const ViewHostMsg_RunFileChooser_Params& params) { | 
|  3594   Browser::RunFileChooserHelper(tab, params); |  3620   Browser::RunFileChooserHelper(tab, params); | 
|  3595 } |  3621 } | 
|  3596  |  3622  | 
|  3597 void Browser::EnumerateDirectory(TabContents* tab, int request_id, |  3623 void Browser::EnumerateDirectory(TabContents* tab, int request_id, | 
|  3598                                  const FilePath& path) { |  3624                                  const FilePath& path) { | 
|  3599   Browser::EnumerateDirectoryHelper(tab, request_id, path); |  3625   Browser::EnumerateDirectoryHelper(tab, request_id, path); | 
|  3600 } |  3626 } | 
|  3601  |  3627  | 
 |  3628 void Browser::ToggleFullscreenModeForTab(TabContents* tab, | 
 |  3629     bool enter_fullscreen) { | 
 |  3630   if (tab != GetSelectedTabContents()) | 
 |  3631     return; | 
 |  3632   fullscreened_tab_ = enter_fullscreen ? | 
 |  3633       TabContentsWrapper::GetCurrentWrapperForContents(tab) : NULL; | 
 |  3634   if (enter_fullscreen && !window_->IsFullscreen()) | 
 |  3635     tab_caused_fullscreen_ = true; | 
 |  3636   if (tab_caused_fullscreen_) | 
 |  3637     ToggleFullscreenMode(); | 
 |  3638 } | 
 |  3639  | 
 |  3640 void Browser::ExitTabbedFullscreenModeIfNecessary() { | 
 |  3641   if (tab_caused_fullscreen_) | 
 |  3642     ToggleFullscreenMode(); | 
 |  3643   else | 
 |  3644     NotifyTabOfFullscreenExitIfNecessary(); | 
 |  3645 } | 
 |  3646  | 
|  3602 /////////////////////////////////////////////////////////////////////////////// |  3647 /////////////////////////////////////////////////////////////////////////////// | 
|  3603 // Browser, TabContentsWrapperDelegate implementation: |  3648 // Browser, TabContentsWrapperDelegate implementation: | 
|  3604  |  3649  | 
|  3605 void Browser::OnDidGetApplicationInfo(TabContentsWrapper* source, |  3650 void Browser::OnDidGetApplicationInfo(TabContentsWrapper* source, | 
|  3606                                       int32 page_id) { |  3651                                       int32 page_id) { | 
|  3607   if (GetSelectedTabContentsWrapper() != source) |  3652   if (GetSelectedTabContentsWrapper() != source) | 
|  3608     return; |  3653     return; | 
|  3609  |  3654  | 
|  3610   NavigationEntry* entry = source->controller().GetLastCommittedEntry(); |  3655   NavigationEntry* entry = source->controller().GetLastCommittedEntry(); | 
|  3611   if (!entry || (entry->page_id() != page_id)) |  3656   if (!entry || (entry->page_id() != page_id)) | 
| (...skipping 1322 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4934 } |  4979 } | 
|  4935  |  4980  | 
|  4936 void Browser::ShowSyncSetup() { |  4981 void Browser::ShowSyncSetup() { | 
|  4937   ProfileSyncService* service = |  4982   ProfileSyncService* service = | 
|  4938       profile()->GetOriginalProfile()->GetProfileSyncService(); |  4983       profile()->GetOriginalProfile()->GetProfileSyncService(); | 
|  4939   if (service->HasSyncSetupCompleted()) |  4984   if (service->HasSyncSetupCompleted()) | 
|  4940     ShowOptionsTab(chrome::kSyncSetupSubPage); |  4985     ShowOptionsTab(chrome::kSyncSetupSubPage); | 
|  4941   else |  4986   else | 
|  4942     service->ShowLoginDialog(); |  4987     service->ShowLoginDialog(); | 
|  4943 } |  4988 } | 
| OLD | NEW |