| 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/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 // defined(OS_WIN) | 10 #endif // defined(OS_WIN) |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 /////////////////////////////////////////////////////////////////////////////// | 594 /////////////////////////////////////////////////////////////////////////////// |
| 595 // Browser, OnBeforeUnload handling: | 595 // Browser, OnBeforeUnload handling: |
| 596 | 596 |
| 597 bool Browser::ShouldCloseWindow() { | 597 bool Browser::ShouldCloseWindow() { |
| 598 if (!CanCloseWithInProgressDownloads()) | 598 if (!CanCloseWithInProgressDownloads()) |
| 599 return false; | 599 return false; |
| 600 | 600 |
| 601 return unload_controller_->ShouldCloseWindow(); | 601 return unload_controller_->ShouldCloseWindow(); |
| 602 } | 602 } |
| 603 | 603 |
| 604 bool Browser::TabsNeedBeforeUnloadFired() { |
| 605 return unload_controller_->TabsNeedBeforeUnloadFired(); |
| 606 } |
| 607 |
| 604 bool Browser::IsAttemptingToCloseBrowser() const { | 608 bool Browser::IsAttemptingToCloseBrowser() const { |
| 605 return unload_controller_->is_attempting_to_close_browser(); | 609 return unload_controller_->is_attempting_to_close_browser(); |
| 606 } | 610 } |
| 607 | 611 |
| 608 void Browser::OnWindowClosing() { | 612 void Browser::OnWindowClosing() { |
| 609 if (!ShouldCloseWindow()) | |
| 610 return; | |
| 611 | |
| 612 // Application should shutdown on last window close if the user is explicitly | 613 // Application should shutdown on last window close if the user is explicitly |
| 613 // trying to quit, or if there is nothing keeping the browser alive (such as | 614 // trying to quit, or if there is nothing keeping the browser alive (such as |
| 614 // AppController on the Mac, or BackgroundContentsService for background | 615 // AppController on the Mac, or BackgroundContentsService for background |
| 615 // pages). | 616 // pages). |
| 616 bool should_quit_if_last_browser = | 617 bool should_quit_if_last_browser = |
| 617 browser_shutdown::IsTryingToQuit() || !browser::WillKeepAlive(); | 618 browser_shutdown::IsTryingToQuit() || !browser::WillKeepAlive(); |
| 618 | 619 |
| 619 if (should_quit_if_last_browser && BrowserList::size() == 1) | 620 if (should_quit_if_last_browser && BrowserList::size() == 1) |
| 620 browser_shutdown::OnShutdownStarting(browser_shutdown::WINDOW_CLOSE); | 621 browser_shutdown::OnShutdownStarting(browser_shutdown::WINDOW_CLOSE); |
| 621 | 622 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 639 | 640 |
| 640 // TODO(sky): convert session/tab restore to use notification. | 641 // TODO(sky): convert session/tab restore to use notification. |
| 641 content::NotificationService::current()->Notify( | 642 content::NotificationService::current()->Notify( |
| 642 chrome::NOTIFICATION_BROWSER_CLOSING, | 643 chrome::NOTIFICATION_BROWSER_CLOSING, |
| 643 content::Source<Browser>(this), | 644 content::Source<Browser>(this), |
| 644 content::NotificationService::NoDetails()); | 645 content::NotificationService::NoDetails()); |
| 645 | 646 |
| 646 chrome::CloseAllTabs(this); | 647 chrome::CloseAllTabs(this); |
| 647 } | 648 } |
| 648 | 649 |
| 650 void Browser::OnUnloadProcessingCompleted() { |
| 651 CloseFrame(); |
| 652 } |
| 653 |
| 649 void Browser::OnWindowActivated() { | 654 void Browser::OnWindowActivated() { |
| 650 // On some platforms we want to automatically reload tabs that are | 655 // On some platforms we want to automatically reload tabs that are |
| 651 // killed when the user selects them. | 656 // killed when the user selects them. |
| 652 WebContents* contents = chrome::GetActiveWebContents(this); | 657 WebContents* contents = chrome::GetActiveWebContents(this); |
| 653 if (contents && ShouldReloadCrashedTab(contents)) | 658 if (contents && ShouldReloadCrashedTab(contents)) |
| 654 chrome::Reload(this, CURRENT_TAB); | 659 chrome::Reload(this, CURRENT_TAB); |
| 655 } | 660 } |
| 656 | 661 |
| 657 //////////////////////////////////////////////////////////////////////////////// | 662 //////////////////////////////////////////////////////////////////////////////// |
| 658 // In-progress download termination handling: | 663 // In-progress download termination handling: |
| (...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 return true; | 1215 return true; |
| 1211 } | 1216 } |
| 1212 return window()->PreHandleKeyboardEvent(event, is_keyboard_shortcut); | 1217 return window()->PreHandleKeyboardEvent(event, is_keyboard_shortcut); |
| 1213 } | 1218 } |
| 1214 | 1219 |
| 1215 void Browser::HandleKeyboardEvent(content::WebContents* source, | 1220 void Browser::HandleKeyboardEvent(content::WebContents* source, |
| 1216 const NativeWebKeyboardEvent& event) { | 1221 const NativeWebKeyboardEvent& event) { |
| 1217 window()->HandleKeyboardEvent(event); | 1222 window()->HandleKeyboardEvent(event); |
| 1218 } | 1223 } |
| 1219 | 1224 |
| 1220 bool Browser::TabsNeedBeforeUnloadFired() { | |
| 1221 return unload_controller_->TabsNeedBeforeUnloadFired(); | |
| 1222 } | |
| 1223 | |
| 1224 bool Browser::IsMouseLocked() const { | 1225 bool Browser::IsMouseLocked() const { |
| 1225 return fullscreen_controller_->IsMouseLocked(); | 1226 return fullscreen_controller_->IsMouseLocked(); |
| 1226 } | 1227 } |
| 1227 | 1228 |
| 1228 void Browser::OnWindowDidShow() { | 1229 void Browser::OnWindowDidShow() { |
| 1229 if (window_has_shown_) | 1230 if (window_has_shown_) |
| 1230 return; | 1231 return; |
| 1231 window_has_shown_ = true; | 1232 window_has_shown_ = true; |
| 1232 | 1233 |
| 1233 // CurrentProcessInfo::CreationTime() is currently only implemented on Mac and | 1234 // CurrentProcessInfo::CreationTime() is currently only implemented on Mac and |
| (...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2345 if (contents && !allow_js_access) { | 2346 if (contents && !allow_js_access) { |
| 2346 contents->web_contents()->GetController().LoadURL( | 2347 contents->web_contents()->GetController().LoadURL( |
| 2347 target_url, | 2348 target_url, |
| 2348 content::Referrer(), | 2349 content::Referrer(), |
| 2349 content::PAGE_TRANSITION_LINK, | 2350 content::PAGE_TRANSITION_LINK, |
| 2350 std::string()); // No extra headers. | 2351 std::string()); // No extra headers. |
| 2351 } | 2352 } |
| 2352 | 2353 |
| 2353 return contents != NULL; | 2354 return contents != NULL; |
| 2354 } | 2355 } |
| OLD | NEW |