Chromium Code Reviews| Index: chrome/browser/prerender/prerender_tracker_unittest.cc |
| diff --git a/chrome/browser/prerender/prerender_tracker_unittest.cc b/chrome/browser/prerender/prerender_tracker_unittest.cc |
| index 0fd4b47e09c21e8d0a4d48545e6d9f60c1294e6b..260ccf2e9b85fdc70e3b13406db729704cc07f01 100644 |
| --- a/chrome/browser/prerender/prerender_tracker_unittest.cc |
| +++ b/chrome/browser/prerender/prerender_tracker_unittest.cc |
| @@ -3,9 +3,11 @@ |
| // found in the LICENSE file. |
| #include <set> |
| +#include <utility> |
| #include "base/logging.h" |
| #include "base/message_loop.h" |
| +#include "chrome/browser/prerender/prerender_contents.h" |
| #include "chrome/browser/prerender/prerender_manager.h" |
| #include "chrome/browser/prerender/prerender_tracker.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| @@ -18,6 +20,51 @@ namespace prerender { |
| namespace { |
| +class TestPrerenderContents : public PrerenderContents { |
| + public: |
| + TestPrerenderContents(PrerenderManager* prerender_manager, |
| + int child_id, int route_id) |
| + : PrerenderContents(prerender_manager, static_cast<Profile*>(NULL), |
| + GURL(), content::Referrer(), ORIGIN_NONE, |
| + PrerenderManager::kNoExperiment), |
| + child_id_(child_id), |
| + route_id_(route_id) { |
| + } |
| + |
| + ~TestPrerenderContents() { |
|
mmenke
2012/12/06 19:54:22
nit: virtual
gavinp
2012/12/07 17:37:04
Done.
|
| + if (final_status() == FINAL_STATUS_MAX) |
| + SetFinalStatus(FINAL_STATUS_USED); |
| + } |
| + |
| + virtual bool GetChildId(int* child_id) const OVERRIDE { |
| + *child_id = child_id_; |
| + return true; |
| + } |
| + |
| + virtual bool GetRouteId(int* route_id) const OVERRIDE { |
| + *route_id = route_id_; |
| + return true; |
| + } |
| + |
| + void Start() { |
| + AddObserver(prerender_manager()->prerender_tracker()); |
| + prerendering_has_started_ = true; |
| + NotifyPrerenderStart(); |
| + } |
| + |
| + void Cancel() { |
| + Destroy(FINAL_STATUS_CANCELLED); |
| + } |
| + |
| + void Use() { |
| + SetFinalStatus(FINAL_STATUS_USED); |
| + } |
| + |
| + private: |
| + int child_id_; |
| + int route_id_; |
| +}; |
| + |
| class TestPrerenderManager : public PrerenderManager { |
| public: |
| explicit TestPrerenderManager(PrerenderTracker* prerender_tracker) : |
| @@ -30,11 +77,18 @@ class TestPrerenderManager : public PrerenderManager { |
| cancelled_id_pairs_.insert(std::make_pair(process_id, view_id)); |
| } |
| + // We never allocate our PrerenderContents in PrerenderManager, so we don't |
| + // ever want the default pending delete behaviour. |
| + virtual void MoveEntryToPendingDelete(PrerenderContents* entry, |
| + FinalStatus final_status) OVERRIDE { |
| + } |
| + |
| bool WasPrerenderCancelled(int child_id, int route_id) { |
| std::pair<int, int> child_route_id_pair(child_id, route_id); |
| return cancelled_id_pairs_.count(child_route_id_pair) != 0; |
| } |
| + |
|
mmenke
2012/12/06 19:54:22
nit: Remove blank line.
gavinp
2012/12/07 17:37:04
Done.
|
| // Set of all the RenderViews that have been cancelled. |
| std::set<std::pair<int, int> > cancelled_id_pairs_; |
| }; |
| @@ -43,18 +97,26 @@ class TestPrerenderManager : public PrerenderManager { |
| class PrerenderTrackerTest : public testing::Test { |
| public: |
| + static const int kDefaultChildId = 0; |
| + static const int kDefaultRouteId = 100; |
| + |
| PrerenderTrackerTest() : |
| ui_thread_(BrowserThread::UI, &message_loop_), |
| io_thread_(BrowserThread::IO, &message_loop_), |
| - prerender_manager_(new TestPrerenderManager(prerender_tracker())) { |
| + prerender_manager_(prerender_tracker()), |
| + test_contents_(&prerender_manager_, kDefaultChildId, kDefaultRouteId) { |
| + } |
| + |
| + PrerenderTracker* prerender_tracker() { |
| + return g_browser_process->prerender_tracker(); |
| } |
| TestPrerenderManager* prerender_manager() { |
| - return prerender_manager_.get(); |
| + return &prerender_manager_; |
| } |
| - PrerenderTracker* prerender_tracker() { |
| - return g_browser_process->prerender_tracker(); |
| + TestPrerenderContents* test_contents() { |
| + return &test_contents_; |
| } |
| int GetCurrentStatus(int child_id, int route_id) { |
| @@ -76,223 +138,289 @@ class PrerenderTrackerTest : public testing::Test { |
| content::TestBrowserThread ui_thread_; |
| content::TestBrowserThread io_thread_; |
| - scoped_ptr<TestPrerenderManager> prerender_manager_; |
| + TestPrerenderManager prerender_manager_; |
| + TestPrerenderContents test_contents_; |
| }; |
| // Check that a non-existant RenderView is handled correctly. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerNull) { |
| - FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_HTTPS)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| + FinalStatus final_status; |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled( |
| + kDefaultChildId, kDefaultRouteId)); |
| } |
| // Check that a page that is used is handled correctly. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerUsed) { |
| - prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); |
| - EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); |
| + test_contents()->Start(); |
| + |
| + EXPECT_EQ(FINAL_STATUS_MAX, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This calls AddPrerenderOnIOThreadTask(). |
| RunEvents(); |
| - EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| - EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); |
| + EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_EQ(FINAL_STATUS_MAX, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // Display the prerendered RenderView. |
| - EXPECT_TRUE(prerender_tracker()->TryUse(0, 0)); |
| + EXPECT_TRUE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| // Make sure the page can't be destroyed or claim it was destroyed after |
| // it's been used. |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_EQ(FINAL_STATUS_USED, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This would call DestroyPrerenderForChildRouteIdPair(), if the prerender |
| // were cancelled. |
| RunEvents(); |
| // These functions should all behave as before. |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| EXPECT_FALSE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus( |
| + kDefaultChildId, kDefaultRouteId)); |
| // This calls DestroyPrerenderForChildRouteIdPair(). |
| - prerender_tracker()->OnPrerenderingFinished(0, 0); |
| - EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + test_contents()->Use(); |
| + EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| // This calls RemovePrerenderOnIOThreadTask(). |
| RunEvents(); |
| FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| - EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| + EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled( |
| + kDefaultChildId, kDefaultRouteId)); |
| } |
| // Check that a prerendered page cancelled by TryCancel() is handled correctly. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelled) { |
| - prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); |
| - EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); |
| + test_contents()->Start(); |
| + EXPECT_EQ(FINAL_STATUS_MAX, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This calls AddPrerenderOnIOThreadTask(). |
| RunEvents(); |
| // Cancel the prerender. |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| - EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_EQ(FINAL_STATUS_CANCELLED, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This calls DestroyPrerenderForChildRouteIdPair(). |
| RunEvents(); |
| - EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| + EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled( |
| + kDefaultChildId, kDefaultRouteId)); |
| // These should all work until the prerendering RenderViewHost is destroyed. |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_EQ(FINAL_STATUS_CANCELLED, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| - prerender_tracker()->OnPrerenderingFinished(0, 0); |
| - EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + test_contents()->Cancel(); |
| + EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| // This calls RemovePrerenderOnIOThreadTask(). |
| RunEvents(); |
| FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| } |
| // Check that a prerendered page cancelled on the IO thread by |
| // TryCancelOnIOThread() is handled correctly. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledOnIO) { |
| - prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); |
| - EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(0, 0)); |
| + test_contents()->Start(); |
| + EXPECT_EQ(FINAL_STATUS_MAX, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This calls AddPrerenderOnIOThreadTask(). |
| RunEvents(); |
| // Cancel the prerender. |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel(kDefaultChildId, kDefaultRouteId, |
| + FINAL_STATUS_CANCELLED)); |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_HTTPS)); |
| - EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| + EXPECT_EQ(FINAL_STATUS_TIMED_OUT, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| // This calls DestroyPrerenderForChildRouteIdPair(). |
| RunEvents(); |
| - EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| + EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled( |
| + kDefaultChildId, kDefaultRouteId)); |
| // These should all work until the prerendering RenderViewHost is destroyed. |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_HTTPS)); |
| - EXPECT_EQ(FINAL_STATUS_TIMED_OUT, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| + EXPECT_EQ(FINAL_STATUS_TIMED_OUT, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| - prerender_tracker()->OnPrerenderingFinished(0, 0); |
| - EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + test_contents()->Cancel(); |
| + EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| // This calls RemovePrerenderOnIOThreadTask(). |
| RunEvents(); |
| FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| } |
| // Check that a prerendered page cancelled before it reaches the IO thread is |
| // handled correctly. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerCancelledFast) { |
| - prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); |
| + test_contents()->Start(); |
| + |
| // Cancel the prerender. |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| - EXPECT_FALSE(prerender_tracker()->TryUse(0, 0)); |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| // This calls AddPrerenderOnIOThreadTask() and |
| // DestroyPrerenderForChildRouteIdPair(). |
| RunEvents(); |
| - EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| + EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled( |
| + kDefaultChildId, kDefaultRouteId)); |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_TIMED_OUT)); |
| - EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(0, 0)); |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_TIMED_OUT)); |
| + EXPECT_EQ(FINAL_STATUS_CANCELLED, GetCurrentStatus( |
| + kDefaultChildId, kDefaultRouteId)); |
| - prerender_tracker()->OnPrerenderingFinished(0, 0); |
| + test_contents()->Cancel(); |
| // This calls RemovePrerenderOnIOThreadTask(). |
| RunEvents(); |
| FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| } |
| // Check that handling two pages at once works. |
| TEST_F(PrerenderTrackerTest, PrerenderTrackerMultiple) { |
| - prerender_tracker()->OnPrerenderingStarted(0, 0, prerender_manager()); |
| + test_contents()->Start(); |
| // This calls AddPrerenderOnIOThreadTask(). |
| RunEvents(); |
| - EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2)); |
| - EXPECT_FALSE(prerender_tracker()->TryUse(1, 2)); |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS)); |
| + EXPECT_TRUE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId + 1, kDefaultRouteId + 1)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse( |
| + kDefaultChildId + 1, kDefaultRouteId + 1)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId + 1, kDefaultRouteId + 1, FINAL_STATUS_CANCELLED)); |
| // Start second prerender. |
| - prerender_tracker()->OnPrerenderingStarted(1, 2, prerender_manager()); |
| + TestPrerenderContents second_test_contents(prerender_manager(), |
| + kDefaultChildId + 1, |
| + kDefaultRouteId + 1); |
| + |
| + second_test_contents.Start(); |
| // This calls AddPrerenderOnIOThreadTask(). |
| RunEvents(); |
| - // Use (0, 0). |
| - EXPECT_TRUE(prerender_tracker()->TryUse(0, 0)); |
| - EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); |
| - EXPECT_EQ(FINAL_STATUS_MAX, GetCurrentStatus(1, 2)); |
| + // Use (kDefaultChildId, kDefaultRouteId). |
| + EXPECT_TRUE(prerender_tracker()->TryUse(kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus( |
| + kDefaultChildId, kDefaultRouteId)); |
| + EXPECT_EQ(FINAL_STATUS_MAX, |
| + GetCurrentStatus(kDefaultChildId + 1, kDefaultRouteId + 1)); |
| - // Cancel (1, 2). |
| + // Cancel (kDefaultChildId + 1, kDefaultRouteId + 1). |
| EXPECT_TRUE(prerender_tracker()->TryCancelOnIOThread( |
| - 1, 2, FINAL_STATUS_HTTPS)); |
| + kDefaultChildId + 1, kDefaultRouteId + 1, FINAL_STATUS_CANCELLED)); |
| - EXPECT_FALSE(prerender_tracker()->TryCancel(0, 0, FINAL_STATUS_HTTPS)); |
| - EXPECT_EQ(FINAL_STATUS_USED, GetCurrentStatus(0, 0)); |
| + EXPECT_FALSE(prerender_tracker()->TryCancel( |
| + kDefaultChildId, kDefaultRouteId, FINAL_STATUS_CANCELLED)); |
| + EXPECT_EQ(FINAL_STATUS_USED, |
| + GetCurrentStatus(kDefaultChildId, kDefaultRouteId)); |
| - EXPECT_FALSE(prerender_tracker()->TryUse(1, 2)); |
| - EXPECT_TRUE(prerender_tracker()->TryCancel(1, 2, FINAL_STATUS_HTTPS)); |
| - EXPECT_EQ(FINAL_STATUS_HTTPS, GetCurrentStatus(1, 2)); |
| + EXPECT_FALSE(prerender_tracker()->TryUse( |
| + kDefaultChildId + 1, kDefaultRouteId + 1)); |
| + EXPECT_TRUE(prerender_tracker()->TryCancel( |
| + kDefaultChildId + 1, kDefaultRouteId + 1, FINAL_STATUS_CANCELLED)); |
| + EXPECT_EQ(FINAL_STATUS_CANCELLED, |
| + GetCurrentStatus(kDefaultChildId + 1, kDefaultRouteId + 1)); |
| // This calls DestroyPrerenderForChildRouteIdPair(). |
| RunEvents(); |
| - EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(0, 0)); |
| - EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(1, 2)); |
| + EXPECT_FALSE(prerender_manager()->WasPrerenderCancelled(kDefaultChildId, |
| + kDefaultRouteId)); |
| + EXPECT_TRUE(prerender_manager()->WasPrerenderCancelled(kDefaultChildId + 1, |
| + kDefaultRouteId + 1)); |
| - prerender_tracker()->OnPrerenderingFinished(0, 0); |
| - prerender_tracker()->OnPrerenderingFinished(1, 2); |
| + test_contents()->Cancel(); |
| + second_test_contents.Cancel(); |
| // This calls RemovePrerenderOnIOThreadTask(). |
| RunEvents(); |
| FinalStatus final_status; |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(0, 0, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(0, 0)); |
| - |
| - EXPECT_FALSE(prerender_tracker()->GetFinalStatus(1, 2, &final_status)); |
| - EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread(1, 2)); |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId, kDefaultRouteId, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId, kDefaultRouteId)); |
| + |
| + EXPECT_FALSE(prerender_tracker()->GetFinalStatus( |
| + kDefaultChildId + 1, kDefaultRouteId + 1, &final_status)); |
| + EXPECT_FALSE(prerender_tracker()->IsPrerenderingOnIOThread( |
| + kDefaultChildId + 1, kDefaultRouteId + 1)); |
| } |
| } // namespace prerender |