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_tabrestore.h" | 5 #include "chrome/browser/ui/browser_tabrestore.h" |
6 | 6 |
7 #include "apps/ui/web_contents_sizer.h" | 7 #include "apps/ui/web_contents_sizer.h" |
8 #include "chrome/browser/extensions/tab_helper.h" | 8 #include "chrome/browser/extensions/tab_helper.h" |
9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
10 #include "chrome/browser/sessions/session_service.h" | 10 #include "chrome/browser/sessions/session_service.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY; | 37 NavigationController::RESTORE_LAST_SESSION_EXITED_CLEANLY; |
38 } | 38 } |
39 | 39 |
40 WebContents* CreateRestoredTab( | 40 WebContents* CreateRestoredTab( |
41 Browser* browser, | 41 Browser* browser, |
42 const std::vector<SerializedNavigationEntry>& navigations, | 42 const std::vector<SerializedNavigationEntry>& navigations, |
43 int selected_navigation, | 43 int selected_navigation, |
44 const std::string& extension_app_id, | 44 const std::string& extension_app_id, |
45 bool from_last_session, | 45 bool from_last_session, |
46 content::SessionStorageNamespace* session_storage_namespace, | 46 content::SessionStorageNamespace* session_storage_namespace, |
47 const std::string& user_agent_override) { | 47 const std::string& user_agent_override, |
| 48 bool initially_hidden) { |
48 GURL restore_url = navigations.at(selected_navigation).virtual_url(); | 49 GURL restore_url = navigations.at(selected_navigation).virtual_url(); |
49 // TODO(ajwong): Remove the temporary session_storage_namespace_map when | 50 // TODO(ajwong): Remove the temporary session_storage_namespace_map when |
50 // we teach session restore to understand that one tab can have multiple | 51 // we teach session restore to understand that one tab can have multiple |
51 // SessionStorageNamespace objects. Also remove the | 52 // SessionStorageNamespace objects. Also remove the |
52 // session_storage_namespace.h include since we only need that to assign | 53 // session_storage_namespace.h include since we only need that to assign |
53 // into the map. | 54 // into the map. |
54 content::SessionStorageNamespaceMap session_storage_namespace_map; | 55 content::SessionStorageNamespaceMap session_storage_namespace_map; |
55 session_storage_namespace_map[std::string()] = session_storage_namespace; | 56 session_storage_namespace_map[std::string()] = session_storage_namespace; |
56 WebContents::CreateParams create_params( | 57 WebContents::CreateParams create_params( |
57 browser->profile(), | 58 browser->profile(), |
58 tab_util::GetSiteInstanceForNewTab(browser->profile(), restore_url)); | 59 tab_util::GetSiteInstanceForNewTab(browser->profile(), restore_url)); |
| 60 create_params.initially_hidden = initially_hidden; |
59 WebContents* base_web_contents = | 61 WebContents* base_web_contents = |
60 browser->tab_strip_model()->GetActiveWebContents(); | 62 browser->tab_strip_model()->GetActiveWebContents(); |
61 if (base_web_contents) { | 63 if (base_web_contents) { |
62 create_params.initial_size = | 64 create_params.initial_size = |
63 base_web_contents->GetView()->GetContainerSize(); | 65 base_web_contents->GetView()->GetContainerSize(); |
64 } | 66 } |
65 WebContents* web_contents = content::WebContents::CreateWithSessionStorage( | 67 WebContents* web_contents = content::WebContents::CreateWithSessionStorage( |
66 create_params, | 68 create_params, |
67 session_storage_namespace_map); | 69 session_storage_namespace_map); |
68 extensions::TabHelper::CreateForWebContents(web_contents); | 70 extensions::TabHelper::CreateForWebContents(web_contents); |
(...skipping 23 matching lines...) Expand all Loading... |
92 bool pin, | 94 bool pin, |
93 bool from_last_session, | 95 bool from_last_session, |
94 content::SessionStorageNamespace* session_storage_namespace, | 96 content::SessionStorageNamespace* session_storage_namespace, |
95 const std::string& user_agent_override) { | 97 const std::string& user_agent_override) { |
96 WebContents* web_contents = CreateRestoredTab(browser, | 98 WebContents* web_contents = CreateRestoredTab(browser, |
97 navigations, | 99 navigations, |
98 selected_navigation, | 100 selected_navigation, |
99 extension_app_id, | 101 extension_app_id, |
100 from_last_session, | 102 from_last_session, |
101 session_storage_namespace, | 103 session_storage_namespace, |
102 user_agent_override); | 104 user_agent_override, |
| 105 !select); |
103 | 106 |
104 int add_types = select ? TabStripModel::ADD_ACTIVE | 107 int add_types = select ? TabStripModel::ADD_ACTIVE |
105 : TabStripModel::ADD_NONE; | 108 : TabStripModel::ADD_NONE; |
106 if (pin) { | 109 if (pin) { |
107 int first_mini_tab_idx = | 110 int first_mini_tab_idx = |
108 browser->tab_strip_model()->IndexOfFirstNonMiniTab(); | 111 browser->tab_strip_model()->IndexOfFirstNonMiniTab(); |
109 tab_index = std::min(tab_index, first_mini_tab_idx); | 112 tab_index = std::min(tab_index, first_mini_tab_idx); |
110 add_types |= TabStripModel::ADD_PINNED; | 113 add_types |= TabStripModel::ADD_PINNED; |
111 } | 114 } |
112 browser->tab_strip_model()->InsertWebContentsAt(tab_index, web_contents, | 115 browser->tab_strip_model()->InsertWebContentsAt(tab_index, web_contents, |
(...skipping 25 matching lines...) Expand all Loading... |
138 bool from_last_session, | 141 bool from_last_session, |
139 const std::string& extension_app_id, | 142 const std::string& extension_app_id, |
140 content::SessionStorageNamespace* session_storage_namespace, | 143 content::SessionStorageNamespace* session_storage_namespace, |
141 const std::string& user_agent_override) { | 144 const std::string& user_agent_override) { |
142 WebContents* web_contents = CreateRestoredTab(browser, | 145 WebContents* web_contents = CreateRestoredTab(browser, |
143 navigations, | 146 navigations, |
144 selected_navigation, | 147 selected_navigation, |
145 extension_app_id, | 148 extension_app_id, |
146 from_last_session, | 149 from_last_session, |
147 session_storage_namespace, | 150 session_storage_namespace, |
148 user_agent_override); | 151 user_agent_override, |
| 152 false); |
149 | 153 |
150 // ReplaceWebContentsAt won't animate in the restoration, so manually do the | 154 // ReplaceWebContentsAt won't animate in the restoration, so manually do the |
151 // equivalent of ReplaceWebContentsAt. | 155 // equivalent of ReplaceWebContentsAt. |
152 TabStripModel* tab_strip = browser->tab_strip_model(); | 156 TabStripModel* tab_strip = browser->tab_strip_model(); |
153 int insertion_index = tab_strip->active_index(); | 157 int insertion_index = tab_strip->active_index(); |
154 tab_strip->InsertWebContentsAt(insertion_index + 1, | 158 tab_strip->InsertWebContentsAt(insertion_index + 1, |
155 web_contents, | 159 web_contents, |
156 TabStripModel::ADD_ACTIVE | | 160 TabStripModel::ADD_ACTIVE | |
157 TabStripModel::ADD_INHERIT_GROUP); | 161 TabStripModel::ADD_INHERIT_GROUP); |
158 tab_strip->CloseWebContentsAt(insertion_index, TabStripModel::CLOSE_NONE); | 162 tab_strip->CloseWebContentsAt(insertion_index, TabStripModel::CLOSE_NONE); |
159 return web_contents; | 163 return web_contents; |
160 } | 164 } |
161 | 165 |
162 } // namespace chrome | 166 } // namespace chrome |
OLD | NEW |