| Index: chrome/browser/extensions/ad_view_browsertest.cc
|
| diff --git a/chrome/browser/extensions/ad_view_browsertest.cc b/chrome/browser/extensions/ad_view_browsertest.cc
|
| index bb6310aef11fed50d22ac8b3e55a046fe19504c5..03912681f7088a7237dd3ba4876e90b6550a755a 100644
|
| --- a/chrome/browser/extensions/ad_view_browsertest.cc
|
| +++ b/chrome/browser/extensions/ad_view_browsertest.cc
|
| @@ -1,10 +1,12 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| #include "chrome/browser/extensions/extension_test_message_listener.h"
|
| #include "chrome/browser/extensions/platform_app_browsertest_util.h"
|
| #include "chrome/common/chrome_switches.h"
|
| +#include "content/test/net/url_request_prepackaged_interceptor.h"
|
| +#include "net/url_request/url_fetcher.h"
|
|
|
| class AdViewTest : public extensions::PlatformAppBrowserTest {
|
| protected:
|
| @@ -15,34 +17,143 @@ class AdViewTest : public extensions::PlatformAppBrowserTest {
|
| }
|
| };
|
|
|
| -IN_PROC_BROWSER_TEST_F(AdViewTest, LoadEventIsCalled) {
|
| +// This test checks the "loadcommit" event is called when the page inside an
|
| +// <adview> is loaded.
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, LoadCommitEventIsCalled) {
|
| ASSERT_TRUE(StartTestServer());
|
|
|
| - ExtensionTestMessageListener listener("guest-loaded", false);
|
| - LoadAndLaunchPlatformApp("ad_view/load_event");
|
| - ASSERT_TRUE(listener.WaitUntilSatisfied());
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/loadcommit_event")) << message_;
|
| }
|
|
|
| +// This test checks the "loadabort" event is called when the "src" attribute
|
| +// of an <adview> is an invalid URL.
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, LoadAbortEventIsCalled) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/loadabort_event")) << message_;
|
| +}
|
| +
|
| +// This test checks the page loaded inside an <adview> has the ability to
|
| +// 1) receive "message" events from the application, and 2) use
|
| +// "window.postMessage" to post back a message to the application.
|
| #if defined(OS_WIN)
|
| // Flaky, or takes too long time on Win7. (http://crbug.com/230271)
|
| -#define MAYBE_AdNetworkIsLoaded DISABLED_AdNetworkIsLoaded
|
| +#define MAYBE_CommitMessageFromAdNetwork DISABLED_CommitMessageFromAdNetwork
|
| #else
|
| -#define MAYBE_AdNetworkIsLoaded AdNetworkIsLoaded
|
| +#define MAYBE_CommitMessageFromAdNetwork CommitMessageFromAdNetwork
|
| #endif
|
| -IN_PROC_BROWSER_TEST_F(AdViewTest, MAYBE_AdNetworkIsLoaded) {
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, MAYBE_CommitMessageFromAdNetwork) {
|
| ASSERT_TRUE(StartTestServer());
|
|
|
| - ExtensionTestMessageListener listener("ad-network-loaded", false);
|
| - LoadAndLaunchPlatformApp("ad_view/ad_network_loaded");
|
| - ASSERT_TRUE(listener.WaitUntilSatisfied());
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/onloadcommit_ack")) << message_;
|
| }
|
|
|
| -// This test currently fails on trybots because it requires new binary file
|
| -// (image315.png). The test will be enabled once the binary files are committed.
|
| +// This test checks the page running inside an <adview> has the ability to load
|
| +// and display an image inside an <iframe>.
|
| +// Note: Disabled for initial checkin because the test depends on a binary
|
| +// file (image035.png) which the trybots don't process correctly when
|
| +// first checked-in.
|
| IN_PROC_BROWSER_TEST_F(AdViewTest, DISABLED_DisplayFirstAd) {
|
| ASSERT_TRUE(StartTestServer());
|
|
|
| - ExtensionTestMessageListener listener("ad-displayed", false);
|
| - LoadAndLaunchPlatformApp("ad_view/display_first_ad");
|
| - ASSERT_TRUE(listener.WaitUntilSatisfied());
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/display_first_ad")) << message_;
|
| +}
|
| +
|
| +// This test checks that <adview> attributes are also exposed as properties
|
| +// (with the same name and value).
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, PropertiesAreInSyncWithAttributes) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/properties_exposed")) << message_;
|
| +}
|
| +
|
| +// This test checks an <adview> element has no behavior when the "adview"
|
| +// permission is missing from the application manifest.
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, AdViewPermissionIsRequired) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/permission_required")) << message_;
|
| +}
|
| +
|
| +// This test checks that 1) it is possible change the value of the "ad-network"
|
| +// attribute of an <adview> element and 2) changing the value will reset the
|
| +// "src" attribute.
|
| +IN_PROC_BROWSER_TEST_F(AdViewTest, ChangeAdNetworkValue) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/change_ad_network")) << message_;
|
| +}
|
| +
|
| +class AdViewNoSrcTest : public extensions::PlatformAppBrowserTest {
|
| + protected:
|
| + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
|
| + extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line);
|
| + command_line->AppendSwitch(switches::kEnableAdview);
|
| + //Note: The "kEnableAdviewSrcAttribute" flag is not here!
|
| + }
|
| +};
|
| +
|
| +// This test checks an invalid "ad-network" value (i.e. not whitelisted)
|
| +// is ignored.
|
| +IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, InvalidAdNetworkIsIgnored) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/invalid_ad_network")) << message_;
|
| +}
|
| +
|
| +// This test checks the "src" attribute is ignored when the
|
| +// "kEnableAdviewSrcAttribute" is missing.
|
| +IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, EnableAdviewSrcAttributeFlagRequired) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/src_flag_required")) << message_;
|
| +}
|
| +
|
| +// This test checks 1) an <adview> works end-to-end (i.e. page is loaded) when
|
| +// using a whitelisted ad-network, and 2) the "src" attribute is never exposed
|
| +// to the application.
|
| +IN_PROC_BROWSER_TEST_F(AdViewNoSrcTest, SrcNotExposed) {
|
| + base::FilePath file_path = test_data_dir_
|
| + .AppendASCII("platform_apps")
|
| + .AppendASCII("ad_view/src_not_exposed")
|
| + .AppendASCII("ad_network_fake_website.html");
|
| +
|
| + // Note: The following URL is identical to the whitelisted url
|
| + // for "admob" (see ad_view.js).
|
| + GURL url = GURL("https://admob-sdk.doubleclick.net/chromeapps");
|
| + std::string scheme = url.scheme();
|
| + std::string hostname = url.host();
|
| +
|
| + content::URLRequestPrepackagedInterceptor interceptor(scheme, hostname);
|
| + interceptor.SetResponse(url, file_path);
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/src_not_exposed")) << message_;
|
| + ASSERT_EQ(1, interceptor.GetHitCount());
|
| +}
|
| +
|
| +class AdViewNotEnabledTest : public extensions::PlatformAppBrowserTest {
|
| + protected:
|
| + virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
|
| + extensions::PlatformAppBrowserTest::SetUpCommandLine(command_line);
|
| + //Note: The "kEnableAdview" flag is not here!
|
| + }
|
| +};
|
| +
|
| +// This test checks an <adview> element has no behavior when the "kEnableAdview"
|
| +// flag is missing.
|
| +IN_PROC_BROWSER_TEST_F(AdViewNotEnabledTest, EnableAdviewFlagRequired) {
|
| + ASSERT_TRUE(StartTestServer());
|
| +
|
| + ASSERT_TRUE(RunPlatformAppTest(
|
| + "platform_apps/ad_view/flag_required")) << message_;
|
| }
|
|
|