OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/browser/frame_host/navigation_entry_screenshot_manager.h" | 5 #include "content/browser/frame_host/navigation_entry_screenshot_manager.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/threading/worker_pool.h" | 8 #include "base/threading/worker_pool.h" |
9 #include "content/browser/frame_host/navigation_controller_impl.h" | 9 #include "content/browser/frame_host/navigation_controller_impl.h" |
10 #include "content/browser/frame_host/navigation_entry_impl.h" | 10 #include "content/browser/frame_host/navigation_entry_impl.h" |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 entry->GetUniqueID()), | 143 entry->GetUniqueID()), |
144 preferred_format); | 144 preferred_format); |
145 } | 145 } |
146 | 146 |
147 void NavigationEntryScreenshotManager::SetMinScreenshotIntervalMS( | 147 void NavigationEntryScreenshotManager::SetMinScreenshotIntervalMS( |
148 int interval_ms) { | 148 int interval_ms) { |
149 DCHECK_GE(interval_ms, 0); | 149 DCHECK_GE(interval_ms, 0); |
150 min_screenshot_interval_ms_ = interval_ms; | 150 min_screenshot_interval_ms_ = interval_ms; |
151 } | 151 } |
152 | 152 |
153 void NavigationEntryScreenshotManager::OnScreenshotTaken(int unique_id, | 153 void NavigationEntryScreenshotManager::OnScreenshotTaken(int unique_id, |
nasko
2014/03/26 22:48:27
Let's fix the alignment of params on this method w
mfomitchev
2014/03/27 21:51:34
Done.
| |
154 bool success, | 154 bool success, |
155 const SkBitmap& bitmap) { | 155 const SkBitmap& bitmap) { |
156 NavigationEntryImpl* entry = NULL; | 156 NavigationEntryImpl* entry = NULL; |
157 int entry_count = owner_->GetEntryCount(); | 157 int entry_count = owner_->GetEntryCount(); |
158 for (int i = 0; i < entry_count; ++i) { | 158 for (int i = 0; i < entry_count; ++i) { |
159 NavigationEntry* iter = owner_->GetEntryAtIndex(i); | 159 NavigationEntry* iter = owner_->GetEntryAtIndex(i); |
160 if (iter->GetUniqueID() == unique_id) { | 160 if (iter->GetUniqueID() == unique_id) { |
161 entry = NavigationEntryImpl::FromNavigationEntry(iter); | 161 entry = NavigationEntryImpl::FromNavigationEntry(iter); |
162 break; | 162 break; |
163 } | 163 } |
164 } | 164 } |
165 | 165 |
166 if (!entry) { | 166 if (!entry) { |
167 LOG(ERROR) << "Invalid entry with unique id: " << unique_id; | 167 LOG(ERROR) << "Invalid entry with unique id: " << unique_id; |
168 return; | 168 return; |
169 } | 169 } |
170 | 170 |
171 if (!success || bitmap.empty() || bitmap.isNull()) { | 171 if (!success || bitmap.empty() || bitmap.isNull()) { |
172 if (!ClearScreenshot(entry)) | 172 ClearScreenshot(entry); |
173 OnScreenshotSet(entry); | |
174 return; | 173 return; |
175 } | 174 } |
176 | 175 |
177 scoped_refptr<ScreenshotData> screenshot = new ScreenshotData(); | 176 scoped_refptr<ScreenshotData> screenshot = new ScreenshotData(); |
178 screenshot->EncodeScreenshot( | 177 screenshot->EncodeScreenshot( |
179 bitmap, | 178 bitmap, |
180 base::Bind(&NavigationEntryScreenshotManager::OnScreenshotEncodeComplete, | 179 base::Bind(&NavigationEntryScreenshotManager::OnScreenshotEncodeComplete, |
181 screenshot_factory_.GetWeakPtr(), | 180 screenshot_factory_.GetWeakPtr(), |
182 unique_id, | 181 unique_id, |
183 screenshot)); | 182 screenshot)); |
(...skipping 24 matching lines...) Expand all Loading... | |
208 } | 207 } |
209 } | 208 } |
210 if (!entry) | 209 if (!entry) |
211 return; | 210 return; |
212 entry->SetScreenshotPNGData(screenshot->data()); | 211 entry->SetScreenshotPNGData(screenshot->data()); |
213 OnScreenshotSet(entry); | 212 OnScreenshotSet(entry); |
214 } | 213 } |
215 | 214 |
216 void NavigationEntryScreenshotManager::OnScreenshotSet( | 215 void NavigationEntryScreenshotManager::OnScreenshotSet( |
217 NavigationEntryImpl* entry) { | 216 NavigationEntryImpl* entry) { |
218 if (entry->screenshot().get()) | 217 CHECK(entry->screenshot().get()); |
219 PurgeScreenshotsIfNecessary(); | 218 PurgeScreenshotsIfNecessary(); |
220 } | 219 } |
221 | 220 |
222 bool NavigationEntryScreenshotManager::ClearScreenshot( | 221 bool NavigationEntryScreenshotManager::ClearScreenshot( |
223 NavigationEntryImpl* entry) { | 222 NavigationEntryImpl* entry) { |
224 if (!entry->screenshot().get()) | 223 if (!entry->screenshot().get()) |
225 return false; | 224 return false; |
226 | 225 |
227 entry->SetScreenshotPNGData(NULL); | 226 entry->SetScreenshotPNGData(NULL); |
228 return true; | 227 return true; |
229 } | 228 } |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
287 owner_->GetEntryAtIndex(forward)); | 286 owner_->GetEntryAtIndex(forward)); |
288 if (ClearScreenshot(entry)) | 287 if (ClearScreenshot(entry)) |
289 --screenshot_count; | 288 --screenshot_count; |
290 ++forward; | 289 ++forward; |
291 } | 290 } |
292 CHECK_GE(screenshot_count, 0); | 291 CHECK_GE(screenshot_count, 0); |
293 CHECK_LE(screenshot_count, kMaxScreenshots); | 292 CHECK_LE(screenshot_count, kMaxScreenshots); |
294 } | 293 } |
295 | 294 |
296 } // namespace content | 295 } // namespace content |
OLD | NEW |