OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/extensions/extension_test_message_listener.h" | |
6 #include "chrome/browser/extensions/platform_app_browsertest_util.h" | |
7 #include "chrome/common/chrome_switches.h" | |
8 #include "content/test/net/url_request_prepackaged_interceptor.h" | |
9 #include "net/url_request/url_fetcher.h" | |
10 | |
11 class AdViewTest : public extensions::PlatformAppBrowserTest { | |
12 protected: | |
13 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
14 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); | |
15 command_line->AppendSwitch(switches::kEnableAdview); | |
16 command_line->AppendSwitch(switches::kEnableAdviewSrcAttribute); | |
17 } | |
18 }; | |
19 | |
20 // This test checks the "loadcommit" event is called when the page inside an | |
21 // <adview> is loaded. | |
22 IN_PROC_BROWSER_TEST_F(AdViewTest, LoadCommitEventIsCalled) { | |
23 ASSERT_TRUE(StartEmbeddedTestServer()); | |
24 | |
25 ASSERT_TRUE(RunPlatformAppTest( | |
26 "platform_apps/ad_view/loadcommit_event")) << message_; | |
27 } | |
28 | |
29 // This test checks the "loadabort" event is called when the "src" attribute | |
30 // of an <adview> is an invalid URL. | |
31 IN_PROC_BROWSER_TEST_F(AdViewTest, LoadAbortEventIsCalled) { | |
32 ASSERT_TRUE(StartEmbeddedTestServer()); | |
33 | |
34 ASSERT_TRUE(RunPlatformAppTest( | |
35 "platform_apps/ad_view/loadabort_event")) << message_; | |
36 } | |
37 | |
38 // This test checks the page loaded inside an <adview> has the ability to | |
39 // 1) receive "message" events from the application, and 2) use | |
40 // "window.postMessage" to post back a message to the application. | |
41 #if defined(OS_WIN) | |
42 // Flaky, or takes too long time on Win7. (http://crbug.com/230271) | |
43 #define MAYBE_CommitMessageFromAdNetwork DISABLED_CommitMessageFromAdNetwork | |
44 #else | |
45 #define MAYBE_CommitMessageFromAdNetwork CommitMessageFromAdNetwork | |
46 #endif | |
47 IN_PROC_BROWSER_TEST_F(AdViewTest, MAYBE_CommitMessageFromAdNetwork) { | |
48 ASSERT_TRUE(StartEmbeddedTestServer()); | |
49 | |
50 ASSERT_TRUE(RunPlatformAppTest( | |
51 "platform_apps/ad_view/onloadcommit_ack")) << message_; | |
52 } | |
53 | |
54 // This test checks the page running inside an <adview> has the ability to load | |
55 // and display an image inside an <iframe>. | |
56 // Note: Disabled for initial checkin because the test depends on a binary | |
57 // file (image035.png) which the trybots don't process correctly when | |
58 // first checked-in. | |
59 IN_PROC_BROWSER_TEST_F(AdViewTest, DISABLED_DisplayFirstAd) { | |
60 ASSERT_TRUE(StartEmbeddedTestServer()); | |
61 | |
62 ASSERT_TRUE(RunPlatformAppTest( | |
63 "platform_apps/ad_view/display_first_ad")) << message_; | |
64 } | |
65 | |
66 // This test checks that <adview> attributes are also exposed as properties | |
67 // (with the same name and value). | |
68 #if defined(OS_WIN) | |
69 // Flaky on Win XP. (http://crbug.com/264362) | |
70 #define MAYBE_PropertiesAreInSyncWithAttributes \ | |
71 DISABLED_PropertiesAreInSyncWithAttributes | |
72 #else | |
73 #define MAYBE_PropertiesAreInSyncWithAttributes \ | |
74 PropertiesAreInSyncWithAttributes | |
75 #endif | |
76 IN_PROC_BROWSER_TEST_F(AdViewTest, MAYBE_PropertiesAreInSyncWithAttributes) { | |
77 ASSERT_TRUE(StartEmbeddedTestServer()); | |
78 | |
79 ASSERT_TRUE(RunPlatformAppTest( | |
80 "platform_apps/ad_view/properties_exposed")) << message_; | |
81 } | |
82 | |
83 // This test checks an <adview> element has no behavior when the "adview" | |
84 // permission is missing from the application manifest. | |
85 IN_PROC_BROWSER_TEST_F(AdViewTest, AdViewPermissionIsRequired) { | |
86 ASSERT_TRUE(StartEmbeddedTestServer()); | |
87 | |
88 ASSERT_TRUE(RunPlatformAppTest( | |
89 "platform_apps/ad_view/permission_required")) << message_; | |
90 } | |
91 | |
92 // This test checks that 1) it is possible change the value of the "ad-network" | |
93 // attribute of an <adview> element and 2) changing the value will reset the | |
94 // "src" attribute. | |
95 // Broken test: http://crbug.com/257465. | |
96 IN_PROC_BROWSER_TEST_F(AdViewTest, DISABLED_ChangeAdNetworkValue) { | |
97 ASSERT_TRUE(StartEmbeddedTestServer()); | |
98 | |
99 ASSERT_TRUE(RunPlatformAppTest( | |
100 "platform_apps/ad_view/change_ad_network")) << message_; | |
101 } | |
102 | |
103 class AdViewNoSrcTest : public extensions::PlatformAppBrowserTest { | |
104 protected: | |
105 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
106 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); | |
107 command_line->AppendSwitch(switches::kEnableAdview); | |
108 //Note: The "kEnableAdviewSrcAttribute" flag is not here! | |
109 } | |
110 }; | |
111 | |
112 // This test checks an invalid "ad-network" value (i.e. not whitelisted) | |
113 // is ignored. | |
114 IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, InvalidAdNetworkIsIgnored) { | |
115 ASSERT_TRUE(StartEmbeddedTestServer()); | |
116 | |
117 ASSERT_TRUE(RunPlatformAppTest( | |
118 "platform_apps/ad_view/invalid_ad_network")) << message_; | |
119 } | |
120 | |
121 // This test checks the "src" attribute is ignored when the | |
122 // "kEnableAdviewSrcAttribute" is missing. | |
123 IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, EnableAdviewSrcAttributeFlagRequired) { | |
124 ASSERT_TRUE(StartEmbeddedTestServer()); | |
125 | |
126 ASSERT_TRUE(RunPlatformAppTest( | |
127 "platform_apps/ad_view/src_flag_required")) << message_; | |
128 } | |
129 | |
130 // This test checks 1) an <adview> works end-to-end (i.e. page is loaded) when | |
131 // using a whitelisted ad-network, and 2) the "src" attribute is never exposed | |
132 // to the application. | |
133 IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, SrcNotExposed) { | |
134 base::FilePath file_path = test_data_dir_ | |
135 .AppendASCII("platform_apps") | |
136 .AppendASCII("ad_view/src_not_exposed") | |
137 .AppendASCII("ad_network_fake_website.html"); | |
138 | |
139 // Note: The following URL is identical to the whitelisted url | |
140 // for "admob" (see ad_view.js). | |
141 GURL url = GURL("https://admob-sdk.doubleclick.net/chromeapps"); | |
142 std::string scheme = url.scheme(); | |
143 std::string hostname = url.host(); | |
144 | |
145 content::URLRequestPrepackagedInterceptor interceptor(scheme, hostname); | |
146 interceptor.SetResponse(url, file_path); | |
147 | |
148 ASSERT_TRUE(RunPlatformAppTest( | |
149 "platform_apps/ad_view/src_not_exposed")) << message_; | |
150 ASSERT_EQ(1, interceptor.GetHitCount()); | |
151 } | |
152 | |
153 class AdViewNotEnabledTest : public extensions::PlatformAppBrowserTest { | |
154 protected: | |
155 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
156 extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line); | |
157 //Note: The "kEnableAdview" flag is not here! | |
158 } | |
159 }; | |
160 | |
161 // This test checks an <adview> element has no behavior when the "kEnableAdview" | |
162 // flag is missing. | |
163 IN_PROC_BROWSER_TEST_F(AdViewNotEnabledTest, EnableAdviewFlagRequired) { | |
164 ASSERT_TRUE(StartEmbeddedTestServer()); | |
165 | |
166 ASSERT_TRUE(RunPlatformAppTest( | |
167 "platform_apps/ad_view/flag_required")) << message_; | |
168 } | |
OLD | NEW |