| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 a_bitmap.getSize()) == 0; | 67 a_bitmap.getSize()) == 0; |
| 68 } | 68 } |
| 69 | 69 |
| 70 class MockScreenshotManager : public content::NavigationEntryScreenshotManager { | 70 class MockScreenshotManager : public content::NavigationEntryScreenshotManager { |
| 71 public: | 71 public: |
| 72 explicit MockScreenshotManager(content::NavigationControllerImpl* owner) | 72 explicit MockScreenshotManager(content::NavigationControllerImpl* owner) |
| 73 : content::NavigationEntryScreenshotManager(owner), | 73 : content::NavigationEntryScreenshotManager(owner), |
| 74 encoding_screenshot_in_progress_(false) { | 74 encoding_screenshot_in_progress_(false) { |
| 75 } | 75 } |
| 76 | 76 |
| 77 virtual ~MockScreenshotManager() { | 77 ~MockScreenshotManager() override {} |
| 78 } | |
| 79 | 78 |
| 80 void TakeScreenshotFor(content::NavigationEntryImpl* entry) { | 79 void TakeScreenshotFor(content::NavigationEntryImpl* entry) { |
| 81 SkBitmap bitmap; | 80 SkBitmap bitmap; |
| 82 bitmap.allocPixels(SkImageInfo::Make( | 81 bitmap.allocPixels(SkImageInfo::Make( |
| 83 1, 1, kAlpha_8_SkColorType, kPremul_SkAlphaType)); | 82 1, 1, kAlpha_8_SkColorType, kPremul_SkAlphaType)); |
| 84 bitmap.eraseARGB(0, 0, 0, 0); | 83 bitmap.eraseARGB(0, 0, 0, 0); |
| 85 encoding_screenshot_in_progress_ = true; | 84 encoding_screenshot_in_progress_ = true; |
| 86 OnScreenshotTaken(entry->GetUniqueID(), true, bitmap); | 85 OnScreenshotTaken(entry->GetUniqueID(), true, bitmap); |
| 87 WaitUntilScreenshotIsReady(); | 86 WaitUntilScreenshotIsReady(); |
| 88 } | 87 } |
| 89 | 88 |
| 90 int GetScreenshotCount() { | 89 int GetScreenshotCount() { |
| 91 return content::NavigationEntryScreenshotManager::GetScreenshotCount(); | 90 return content::NavigationEntryScreenshotManager::GetScreenshotCount(); |
| 92 } | 91 } |
| 93 | 92 |
| 94 void WaitUntilScreenshotIsReady() { | 93 void WaitUntilScreenshotIsReady() { |
| 95 if (!encoding_screenshot_in_progress_) | 94 if (!encoding_screenshot_in_progress_) |
| 96 return; | 95 return; |
| 97 message_loop_runner_ = new content::MessageLoopRunner; | 96 message_loop_runner_ = new content::MessageLoopRunner; |
| 98 message_loop_runner_->Run(); | 97 message_loop_runner_->Run(); |
| 99 } | 98 } |
| 100 | 99 |
| 101 private: | 100 private: |
| 102 // Overridden from content::NavigationEntryScreenshotManager: | 101 // Overridden from content::NavigationEntryScreenshotManager: |
| 103 virtual void TakeScreenshotImpl( | 102 void TakeScreenshotImpl(content::RenderViewHost* host, |
| 104 content::RenderViewHost* host, | 103 content::NavigationEntryImpl* entry) override {} |
| 105 content::NavigationEntryImpl* entry) override { | |
| 106 } | |
| 107 | 104 |
| 108 virtual void OnScreenshotSet(content::NavigationEntryImpl* entry) override { | 105 void OnScreenshotSet(content::NavigationEntryImpl* entry) override { |
| 109 encoding_screenshot_in_progress_ = false; | 106 encoding_screenshot_in_progress_ = false; |
| 110 NavigationEntryScreenshotManager::OnScreenshotSet(entry); | 107 NavigationEntryScreenshotManager::OnScreenshotSet(entry); |
| 111 if (message_loop_runner_.get()) | 108 if (message_loop_runner_.get()) |
| 112 message_loop_runner_->Quit(); | 109 message_loop_runner_->Quit(); |
| 113 } | 110 } |
| 114 | 111 |
| 115 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; | 112 scoped_refptr<content::MessageLoopRunner> message_loop_runner_; |
| 116 bool encoding_screenshot_in_progress_; | 113 bool encoding_screenshot_in_progress_; |
| 117 | 114 |
| 118 DISALLOW_COPY_AND_ASSIGN(MockScreenshotManager); | 115 DISALLOW_COPY_AND_ASSIGN(MockScreenshotManager); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 } | 186 } |
| 190 | 187 |
| 191 virtual void SetUp() override { | 188 virtual void SetUp() override { |
| 192 RenderViewHostImplTestHarness::SetUp(); | 189 RenderViewHostImplTestHarness::SetUp(); |
| 193 WebContents* web_contents = RenderViewHostImplTestHarness::web_contents(); | 190 WebContents* web_contents = RenderViewHostImplTestHarness::web_contents(); |
| 194 ASSERT_TRUE(web_contents); // The WebContents should be created by now. | 191 ASSERT_TRUE(web_contents); // The WebContents should be created by now. |
| 195 WebContentsObserver::Observe(web_contents); | 192 WebContentsObserver::Observe(web_contents); |
| 196 } | 193 } |
| 197 | 194 |
| 198 // WebContentsObserver: | 195 // WebContentsObserver: |
| 199 virtual void DidStartNavigationToPendingEntry( | 196 void DidStartNavigationToPendingEntry( |
| 200 const GURL& url, | 197 const GURL& url, |
| 201 NavigationController::ReloadType reload_type) override { | 198 NavigationController::ReloadType reload_type) override { |
| 202 navigated_url_ = url; | 199 navigated_url_ = url; |
| 203 } | 200 } |
| 204 | 201 |
| 205 virtual void NavigationEntryCommitted( | 202 void NavigationEntryCommitted( |
| 206 const LoadCommittedDetails& load_details) override { | 203 const LoadCommittedDetails& load_details) override { |
| 207 navigation_entry_committed_counter_++; | 204 navigation_entry_committed_counter_++; |
| 208 } | 205 } |
| 209 | 206 |
| 210 const GURL& navigated_url() const { | 207 const GURL& navigated_url() const { |
| 211 return navigated_url_; | 208 return navigated_url_; |
| 212 } | 209 } |
| 213 | 210 |
| 214 NavigationControllerImpl& controller_impl() { | 211 NavigationControllerImpl& controller_impl() { |
| 215 return static_cast<NavigationControllerImpl&>(controller()); | 212 return static_cast<NavigationControllerImpl&>(controller()); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 240 | 237 |
| 241 int navigation_state_change_count() { | 238 int navigation_state_change_count() { |
| 242 return navigation_state_change_count_; | 239 return navigation_state_change_count_; |
| 243 } | 240 } |
| 244 | 241 |
| 245 int repost_form_warning_count() { | 242 int repost_form_warning_count() { |
| 246 return repost_form_warning_count_; | 243 return repost_form_warning_count_; |
| 247 } | 244 } |
| 248 | 245 |
| 249 // Keep track of whether the tab has notified us of a navigation state change. | 246 // Keep track of whether the tab has notified us of a navigation state change. |
| 250 virtual void NavigationStateChanged(const WebContents* source, | 247 void NavigationStateChanged(const WebContents* source, |
| 251 InvalidateTypes changed_flags) override { | 248 InvalidateTypes changed_flags) override { |
| 252 navigation_state_change_count_++; | 249 navigation_state_change_count_++; |
| 253 } | 250 } |
| 254 | 251 |
| 255 virtual void ShowRepostFormWarningDialog(WebContents* source) override { | 252 void ShowRepostFormWarningDialog(WebContents* source) override { |
| 256 repost_form_warning_count_++; | 253 repost_form_warning_count_++; |
| 257 } | 254 } |
| 258 | 255 |
| 259 private: | 256 private: |
| 260 // The number of times NavigationStateChanged has been called. | 257 // The number of times NavigationStateChanged has been called. |
| 261 int navigation_state_change_count_; | 258 int navigation_state_change_count_; |
| 262 | 259 |
| 263 // The number of times ShowRepostFormWarningDialog() was called. | 260 // The number of times ShowRepostFormWarningDialog() was called. |
| 264 int repost_form_warning_count_; | 261 int repost_form_warning_count_; |
| 265 }; | 262 }; |
| (...skipping 2019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2285 // NotificationObserver implementation used in verifying we've received the | 2282 // NotificationObserver implementation used in verifying we've received the |
| 2286 // NOTIFICATION_NAV_LIST_PRUNED method. | 2283 // NOTIFICATION_NAV_LIST_PRUNED method. |
| 2287 class PrunedListener : public NotificationObserver { | 2284 class PrunedListener : public NotificationObserver { |
| 2288 public: | 2285 public: |
| 2289 explicit PrunedListener(NavigationControllerImpl* controller) | 2286 explicit PrunedListener(NavigationControllerImpl* controller) |
| 2290 : notification_count_(0) { | 2287 : notification_count_(0) { |
| 2291 registrar_.Add(this, NOTIFICATION_NAV_LIST_PRUNED, | 2288 registrar_.Add(this, NOTIFICATION_NAV_LIST_PRUNED, |
| 2292 Source<NavigationController>(controller)); | 2289 Source<NavigationController>(controller)); |
| 2293 } | 2290 } |
| 2294 | 2291 |
| 2295 virtual void Observe(int type, | 2292 void Observe(int type, |
| 2296 const NotificationSource& source, | 2293 const NotificationSource& source, |
| 2297 const NotificationDetails& details) override { | 2294 const NotificationDetails& details) override { |
| 2298 if (type == NOTIFICATION_NAV_LIST_PRUNED) { | 2295 if (type == NOTIFICATION_NAV_LIST_PRUNED) { |
| 2299 notification_count_++; | 2296 notification_count_++; |
| 2300 details_ = *(Details<PrunedDetails>(details).ptr()); | 2297 details_ = *(Details<PrunedDetails>(details).ptr()); |
| 2301 } | 2298 } |
| 2302 } | 2299 } |
| 2303 | 2300 |
| 2304 // Number of times NAV_LIST_PRUNED has been observed. | 2301 // Number of times NAV_LIST_PRUNED has been observed. |
| 2305 int notification_count_; | 2302 int notification_count_; |
| 2306 | 2303 |
| 2307 // Details from the last NAV_LIST_PRUNED. | 2304 // Details from the last NAV_LIST_PRUNED. |
| (...skipping 2046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4354 params.post_id = -1; | 4351 params.post_id = -1; |
| 4355 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); | 4352 contents()->GetMainFrame()->SendNavigateWithParams(¶ms); |
| 4356 | 4353 |
| 4357 // Now reload. replaceState overrides the POST, so we should not show a | 4354 // Now reload. replaceState overrides the POST, so we should not show a |
| 4358 // repost warning dialog. | 4355 // repost warning dialog. |
| 4359 controller_impl().Reload(true); | 4356 controller_impl().Reload(true); |
| 4360 EXPECT_EQ(0, delegate->repost_form_warning_count()); | 4357 EXPECT_EQ(0, delegate->repost_form_warning_count()); |
| 4361 } | 4358 } |
| 4362 | 4359 |
| 4363 } // namespace content | 4360 } // namespace content |
| OLD | NEW |