• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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/stringprintf.h"
6 #if defined (OS_WIN)
7 #include "base/win/windows_version.h"
8 #endif  // defined (OS_WIN)
9 
10 #include "chrome/browser/extensions/extension_apitest.h"
11 #include "chrome/browser/extensions/extension_webstore_private_api.h"
12 #include "chrome/common/chrome_switches.h"
13 #include "chrome/test/ui_test_utils.h"
14 #include "net/base/mock_host_resolver.h"
15 
16 class ExtensionGalleryInstallApiTest : public ExtensionApiTest {
17  public:
SetUpCommandLine(CommandLine * command_line)18   void SetUpCommandLine(CommandLine* command_line) {
19     ExtensionApiTest::SetUpCommandLine(command_line);
20     command_line->AppendSwitchASCII(switches::kAppsGalleryURL,
21         "http://www.example.com");
22   }
23 
RunInstallTest(const std::string & page)24   bool RunInstallTest(const std::string& page) {
25     std::string base_url = base::StringPrintf(
26         "http://www.example.com:%u/files/extensions/",
27         test_server()->host_port_pair().port());
28 
29     std::string testing_install_base_url = base_url;
30     testing_install_base_url += "good.crx";
31 
32     CommandLine::ForCurrentProcess()->AppendSwitchASCII(
33       switches::kAppsGalleryUpdateURL, testing_install_base_url);
34 
35     std::string page_url = base_url;
36     page_url += "api_test/extension_gallery_install/" + page;
37 
38     return RunPageTest(page_url.c_str());
39   }
40 };
41 
42 namespace {
43 
RunningOnXP()44 bool RunningOnXP() {
45 #if defined (OS_WIN)
46   return GetVersion() < base::win::VERSION_VISTA;
47 #else
48   return false;
49 #endif  // defined (OS_WIN)
50 }
51 
52 }  // namespace
53 
54 // TODO(asargent) - for some reason this test occasionally fails on XP,
55 // but not other versions of windows. http://crbug.com/55642
56 #if defined (OS_WIN)
57 #define MAYBE_InstallAndUninstall FLAKY_InstallAndUninstall
58 #else
59 #define MAYBE_InstallAndUninstall InstallAndUninstall
60 #endif
IN_PROC_BROWSER_TEST_F(ExtensionGalleryInstallApiTest,MAYBE_InstallAndUninstall)61 IN_PROC_BROWSER_TEST_F(ExtensionGalleryInstallApiTest,
62                        MAYBE_InstallAndUninstall) {
63   if (RunningOnXP()) {
64     LOG(INFO) << "Adding host resolver rule";
65   }
66   host_resolver()->AddRule("www.example.com", "127.0.0.1");
67   if (RunningOnXP()) {
68     LOG(INFO) << "Starting test server";
69   }
70   ASSERT_TRUE(test_server()->Start());
71 
72   if (RunningOnXP()) {
73     LOG(INFO) << "Starting tests without user gesture checking";
74   }
75   BeginInstallFunction::SetIgnoreUserGestureForTests(true);
76   ASSERT_TRUE(RunInstallTest("test.html"));
77   ASSERT_TRUE(RunInstallTest("complete_without_begin.html"));
78   ASSERT_TRUE(RunInstallTest("invalid_begin.html"));
79 
80   if (RunningOnXP()) {
81     LOG(INFO) << "Starting tests with user gesture checking";
82   }
83   BeginInstallFunction::SetIgnoreUserGestureForTests(false);
84   ASSERT_TRUE(RunInstallTest("no_user_gesture.html"));
85 }
86