| 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..7e9a4a67f38f79e8ce69aef7e0132f44ac2a7cff 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) {
|
| + }
|
| +
|
| + virtual ~TestPrerenderContents() {
|
| + 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,6 +77,12 @@ 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;
|
| @@ -43,18 +96,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 +137,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
|
|
|