Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 988 SearchTabHelper::FromWebContents(contents)->OnTabDeactivated(); | 988 SearchTabHelper::FromWebContents(contents)->OnTabDeactivated(); |
| 989 | 989 |
| 990 // Save what the user's currently typing, so it can be restored when we | 990 // Save what the user's currently typing, so it can be restored when we |
| 991 // switch back to this tab. | 991 // switch back to this tab. |
| 992 window_->GetLocationBar()->SaveStateToContents(contents); | 992 window_->GetLocationBar()->SaveStateToContents(contents); |
| 993 | 993 |
| 994 if (instant_controller_) | 994 if (instant_controller_) |
| 995 instant_controller_->TabDeactivated(contents); | 995 instant_controller_->TabDeactivated(contents); |
| 996 } | 996 } |
| 997 | 997 |
| 998 // Copies the background color from an old WebContents to a new one that | |
| 999 // replaces it on the screen. This allows the new WebContents to use the | |
| 1000 // old one's background color as the starting background color, before having | |
| 1001 // loaded any contents. As a result, we avoid flashing white when navigating | |
| 1002 // from a site whith a dark background to another site with a dark background. | |
| 1003 void CopyBackgroundColor(WebContents* old_contents, WebContents* new_contents) { | |
|
Peter Kasting
2016/11/07 19:27:41
Nit: I would inline this into the single caller as
chrishtr
2016/11/09 21:39:36
Done.
| |
| 1004 if (old_contents && new_contents) { | |
| 1005 RenderWidgetHostView* old_view = old_contents->GetMainFrame()->GetView(); | |
| 1006 RenderWidgetHostView* new_view = new_contents->GetMainFrame()->GetView(); | |
| 1007 if (old_view && new_view) | |
| 1008 new_view->SetBackgroundColor(old_view->background_color()); | |
| 1009 } | |
| 1010 } | |
| 1011 | |
| 998 void Browser::ActiveTabChanged(WebContents* old_contents, | 1012 void Browser::ActiveTabChanged(WebContents* old_contents, |
| 999 WebContents* new_contents, | 1013 WebContents* new_contents, |
| 1000 int index, | 1014 int index, |
| 1001 int reason) { | 1015 int reason) { |
| 1002 content::RecordAction(UserMetricsAction("ActiveTabChanged")); | 1016 content::RecordAction(UserMetricsAction("ActiveTabChanged")); |
| 1003 | 1017 |
| 1004 // Update the bookmark state, since the BrowserWindow may query it during | 1018 // Update the bookmark state, since the BrowserWindow may query it during |
| 1005 // OnActiveTabChanged() below. | 1019 // OnActiveTabChanged() below. |
| 1006 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_SWITCH); | 1020 UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TAB_SWITCH); |
| 1007 | 1021 |
| (...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1844 return size; | 1858 return size; |
| 1845 } | 1859 } |
| 1846 | 1860 |
| 1847 /////////////////////////////////////////////////////////////////////////////// | 1861 /////////////////////////////////////////////////////////////////////////////// |
| 1848 // Browser, CoreTabHelperDelegate implementation: | 1862 // Browser, CoreTabHelperDelegate implementation: |
| 1849 | 1863 |
| 1850 void Browser::SwapTabContents(content::WebContents* old_contents, | 1864 void Browser::SwapTabContents(content::WebContents* old_contents, |
| 1851 content::WebContents* new_contents, | 1865 content::WebContents* new_contents, |
| 1852 bool did_start_load, | 1866 bool did_start_load, |
| 1853 bool did_finish_load) { | 1867 bool did_finish_load) { |
| 1868 CopyBackgroundColor(old_contents, new_contents); | |
| 1854 int index = tab_strip_model_->GetIndexOfWebContents(old_contents); | 1869 int index = tab_strip_model_->GetIndexOfWebContents(old_contents); |
| 1855 DCHECK_NE(TabStripModel::kNoTab, index); | 1870 DCHECK_NE(TabStripModel::kNoTab, index); |
| 1856 tab_strip_model_->ReplaceWebContentsAt(index, new_contents); | 1871 tab_strip_model_->ReplaceWebContentsAt(index, new_contents); |
| 1857 } | 1872 } |
| 1858 | 1873 |
| 1859 bool Browser::CanReloadContents(content::WebContents* web_contents) const { | 1874 bool Browser::CanReloadContents(content::WebContents* web_contents) const { |
| 1860 return chrome::CanReload(this); | 1875 return chrome::CanReload(this); |
| 1861 } | 1876 } |
| 1862 | 1877 |
| 1863 bool Browser::CanSaveContents(content::WebContents* web_contents) const { | 1878 bool Browser::CanSaveContents(content::WebContents* web_contents) const { |
| (...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2583 if (contents && !allow_js_access) { | 2598 if (contents && !allow_js_access) { |
| 2584 contents->web_contents()->GetController().LoadURL( | 2599 contents->web_contents()->GetController().LoadURL( |
| 2585 target_url, | 2600 target_url, |
| 2586 content::Referrer(), | 2601 content::Referrer(), |
| 2587 ui::PAGE_TRANSITION_LINK, | 2602 ui::PAGE_TRANSITION_LINK, |
| 2588 std::string()); // No extra headers. | 2603 std::string()); // No extra headers. |
| 2589 } | 2604 } |
| 2590 | 2605 |
| 2591 return contents != NULL; | 2606 return contents != NULL; |
| 2592 } | 2607 } |
| OLD | NEW |