OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/sessions/tab_loader.h" | 5 #include "chrome/browser/sessions/tab_loader.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
110 // eventually. | 110 // eventually. |
111 if (delegate_) | 111 if (delegate_) |
112 return; | 112 return; |
113 | 113 |
114 // Create a TabLoaderDelegate which will allow OS specific behavior for tab | 114 // Create a TabLoaderDelegate which will allow OS specific behavior for tab |
115 // loading. | 115 // loading. |
116 if (!delegate_) { | 116 if (!delegate_) { |
117 delegate_ = TabLoaderDelegate::Create(this); | 117 delegate_ = TabLoaderDelegate::Create(this); |
118 // There is already at least one tab loading (the active tab). As such we | 118 // There is already at least one tab loading (the active tab). As such we |
119 // only have to start the timeout timer here. | 119 // only have to start the timeout timer here. |
120 StartTimer(); | 120 StartFirstTimer(); |
121 } | 121 } |
122 } | 122 } |
123 | 123 |
124 void TabLoader::LoadNextTab() { | 124 void TabLoader::LoadNextTab() { |
125 // LoadNextTab should only get called after we have started the tab | 125 // LoadNextTab should only get called after we have started the tab |
126 // loading. | 126 // loading. |
127 CHECK(delegate_); | 127 CHECK(delegate_); |
128 if (!tabs_to_load_.empty()) { | 128 if (!tabs_to_load_.empty()) { |
129 NavigationController* controller = tabs_to_load_.front(); | 129 NavigationController* controller = tabs_to_load_.front(); |
130 DCHECK(controller); | 130 DCHECK(controller); |
(...skipping 14 matching lines...) Expand all Loading... | |
145 // the call would do nothing. | 145 // the call would do nothing. |
146 contents->WasHidden(); | 146 contents->WasHidden(); |
147 } | 147 } |
148 } | 148 } |
149 } | 149 } |
150 | 150 |
151 if (!tabs_to_load_.empty()) | 151 if (!tabs_to_load_.empty()) |
152 StartTimer(); | 152 StartTimer(); |
153 } | 153 } |
154 | 154 |
155 void TabLoader::StartFirstTimer() { | |
156 force_load_timer_.Stop(); | |
gab
2015/05/15 18:21:02
Looks like Start() already takes care of stopping
chrisha
2015/05/15 18:47:12
Acknowledged.
| |
157 force_load_timer_.Start(FROM_HERE, | |
158 delegate_->GetFirstTabLoadingTimeout(), | |
159 this, &TabLoader::ForceLoadTimerFired); | |
160 } | |
161 | |
155 void TabLoader::StartTimer() { | 162 void TabLoader::StartTimer() { |
156 force_load_timer_.Stop(); | 163 force_load_timer_.Stop(); |
157 force_load_timer_.Start(FROM_HERE, | 164 force_load_timer_.Start(FROM_HERE, |
158 delegate_->GetTimeoutBeforeLoadingNextTab() * | 165 delegate_->GetTimeoutBeforeLoadingNextTab() * |
159 force_load_delay_multiplier_, | 166 force_load_delay_multiplier_, |
160 this, &TabLoader::ForceLoadTimerFired); | 167 this, &TabLoader::ForceLoadTimerFired); |
161 } | 168 } |
162 | 169 |
163 void TabLoader::RemoveTab(NavigationController* controller) { | 170 void TabLoader::RemoveTab(NavigationController* controller) { |
164 registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, | 171 registrar_.Remove(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
218 tabs_to_load_.pop_front(); | 225 tabs_to_load_.pop_front(); |
219 RemoveTab(controller); | 226 RemoveTab(controller); |
220 } | 227 } |
221 // By calling |LoadNextTab| explicitly, we make sure that the | 228 // By calling |LoadNextTab| explicitly, we make sure that the |
222 // |NOTIFICATION_SESSION_RESTORE_DONE| event gets sent. | 229 // |NOTIFICATION_SESSION_RESTORE_DONE| event gets sent. |
223 LoadNextTab(); | 230 LoadNextTab(); |
224 } | 231 } |
225 | 232 |
226 // static | 233 // static |
227 TabLoader* TabLoader::shared_tab_loader_ = nullptr; | 234 TabLoader* TabLoader::shared_tab_loader_ = nullptr; |
OLD | NEW |