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

Side by Side Diff: chrome/browser/tab_contents/web_contents_user_data_unittest.cc

Issue 10868115: Create base class for TabHelpers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: VS makes me sad Created 8 years, 3 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 "chrome/browser/tab_contents/web_contents_user_data.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
9 #include "chrome/test/base/testing_profile.h"
10 #include "content/public/browser/web_contents.h"
11 #include "content/public/test/web_contents_tester.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 namespace {
15
16 class WebContentsAttachedClass1
17 : public WebContentsUserData<WebContentsAttachedClass1> {
18 public:
19 explicit WebContentsAttachedClass1(content::WebContents* contents) {}
20 virtual ~WebContentsAttachedClass1() {}
21 static int kUserDataKey;
22 };
23
24 class WebContentsAttachedClass2
25 : public WebContentsUserData<WebContentsAttachedClass2> {
26 public:
27 explicit WebContentsAttachedClass2(content::WebContents* contents) {}
28 virtual ~WebContentsAttachedClass2() {}
29 static int kUserDataKey;
30 };
31
32 int WebContentsAttachedClass1::kUserDataKey;
33 int WebContentsAttachedClass2::kUserDataKey;
34
35 } // namespace
36
37 typedef ChromeRenderViewHostTestHarness WebContentsUserDataTest;
38
39 TEST_F(WebContentsUserDataTest, OneInstanceTwoAttachments) {
40 content::WebContents* contents = web_contents();
41 WebContentsAttachedClass1* class1 =
42 WebContentsAttachedClass1::FromWebContents(contents);
43 ASSERT_EQ(NULL, class1);
44 WebContentsAttachedClass2* class2 =
45 WebContentsAttachedClass2::FromWebContents(contents);
46 ASSERT_EQ(NULL, class2);
47
48 WebContentsAttachedClass1::CreateForWebContents(contents);
49 class1 = WebContentsAttachedClass1::FromWebContents(contents);
50 ASSERT_TRUE(class1 != NULL);
51 class2 = WebContentsAttachedClass2::FromWebContents(contents);
52 ASSERT_EQ(NULL, class2);
53
54 WebContentsAttachedClass2::CreateForWebContents(contents);
55 WebContentsAttachedClass1* class1again =
56 WebContentsAttachedClass1::FromWebContents(contents);
57 ASSERT_TRUE(class1again != NULL);
58 class2 = WebContentsAttachedClass2::FromWebContents(contents);
59 ASSERT_TRUE(class2 != NULL);
60 ASSERT_EQ(class1, class1again);
61 ASSERT_NE(static_cast<void*>(class1), static_cast<void*>(class2));
62 }
63
64 TEST_F(WebContentsUserDataTest, TwoInstancesOneAttachment) {
65 content::WebContents* contents1 = web_contents();
66 scoped_ptr<content::WebContents> contents2(
67 content::WebContentsTester::CreateTestWebContents(profile(), NULL));
68
69 WebContentsAttachedClass1* one_class =
70 WebContentsAttachedClass1::FromWebContents(contents1);
71 ASSERT_EQ(NULL, one_class);
72 WebContentsAttachedClass1* two_class =
73 WebContentsAttachedClass1::FromWebContents(contents2.get());
74 ASSERT_EQ(NULL, two_class);
75
76 WebContentsAttachedClass1::CreateForWebContents(contents1);
77 one_class = WebContentsAttachedClass1::FromWebContents(contents1);
78 ASSERT_TRUE(one_class != NULL);
79 two_class = WebContentsAttachedClass1::FromWebContents(contents2.get());
80 ASSERT_EQ(NULL, two_class);
81
82 WebContentsAttachedClass1::CreateForWebContents(contents2.get());
83 WebContentsAttachedClass1* one_class_again =
84 WebContentsAttachedClass1::FromWebContents(contents1);
85 ASSERT_TRUE(one_class_again != NULL);
86 two_class = WebContentsAttachedClass1::FromWebContents(contents2.get());
87 ASSERT_TRUE(two_class != NULL);
88 ASSERT_EQ(one_class, one_class_again);
89 ASSERT_NE(one_class, two_class);
90 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698