Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(283)

Side by Side Diff: chrome/browser/prerender/prerender_manager_unittest.cc

Issue 11028037: Fix prerender histograms for multiple prerender case. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remediate to mmenke review, add tests Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/message_loop.h"
6 #include "chrome/browser/prerender/prerender_manager.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "content/public/test/test_browser_thread.h"
9
10
11 namespace prerender {
12
13 namespace {
14
15 // These tests don't require the dummy PrerenderContents & PrerenderManager that
16 // the heavier PrerenderTest.* tests do.
17 class PrerenderManagerTest : public testing::Test {
18 public:
19 PrerenderManagerTest()
20 : ui_thread_(content::BrowserThread::UI, &message_loop_),
21 prerender_manager_(NULL, NULL) {
22 }
23
24 PrerenderManager* prerender_manager() { return &prerender_manager_; }
25
26 MessageLoop message_loop_;
27 content::TestBrowserThread ui_thread_;
28 PrerenderManager prerender_manager_;
29 };
30
31 TEST_F(PrerenderManagerTest, IsWebContentsPrerenderedTest) {
32 // The methods being tested should not dereference their WebContents, instead
33 // they use it as a unique identifier.
34 int not_a_webcontents = 0;
35 content::WebContents* web_contents =
36 reinterpret_cast<content::WebContents*>(&not_a_webcontents);
37
38 EXPECT_FALSE(prerender_manager()->IsWebContentsPrerendered(
39 web_contents, NULL));
40
41 const Origin origin = ORIGIN_OMNIBOX;
42 prerender_manager()->MarkWebContentsAsPrerendered(web_contents, origin);
43
44 Origin test_origin = ORIGIN_NONE;
45 EXPECT_TRUE(prerender_manager()->IsWebContentsPrerendered(
46 web_contents, &test_origin));
47 EXPECT_EQ(origin, test_origin);
mmenke 2012/10/15 18:46:22 Suggest another false case, after adding one WebCo
gavinp 2012/10/16 13:52:01 Done.
48
49 prerender_manager()->MarkWebContentsAsNotPrerendered(web_contents);
50 EXPECT_FALSE(prerender_manager()->IsWebContentsPrerendered(
51 web_contents, NULL));
52 }
53
54 TEST_F(PrerenderManagerTest, WouldWebContentsBePrerenderedTest) {
55 // The methods being tested should not dereference their WebContents, instead
56 // they use it as a unique identifier.
57 int not_a_webcontents = 0;
58 content::WebContents* web_contents =
59 reinterpret_cast<content::WebContents*>(&not_a_webcontents);
60
61 EXPECT_FALSE(prerender_manager()->WouldWebContentsBePrerendered(
62 web_contents, NULL));
63
64 const Origin origin = ORIGIN_OMNIBOX;
65 prerender_manager()->MarkWebContentsAsWouldBePrerendered(web_contents,
66 origin);
67
68 Origin test_origin = ORIGIN_NONE;
69 EXPECT_TRUE(prerender_manager()->WouldWebContentsBePrerendered(
70 web_contents, &test_origin));
71 EXPECT_EQ(origin, test_origin);
72
73 // Control group (aka WouldBe...) web_contents need to be removed twice. See
74 // the comment in prerender_manager.cc at the definition of
75 // WouldBePrerenderedWebContentsData and its inner enum State.
76 prerender_manager()->MarkWebContentsAsNotPrerendered(web_contents);
77 EXPECT_TRUE(prerender_manager()->WouldWebContentsBePrerendered(
78 web_contents, NULL));
79
80 prerender_manager()->MarkWebContentsAsNotPrerendered(web_contents);
81 EXPECT_FALSE(prerender_manager()->WouldWebContentsBePrerendered(
82 web_contents, NULL));
83 }
84
85 } // namespace
86
87 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698