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/extensions/extension_apitest.h"
6#include "net/dns/mock_host_resolver.h"
7
8class ExecuteScriptApiTest : public ExtensionApiTest {
9 protected:
10  void SetupDelayedHostResolver() {
11    // We need a.com to be a little bit slow to trigger a race condition.
12    host_resolver()->AddRuleWithLatency("a.com", "127.0.0.1", 500);
13    host_resolver()->AddRule("b.com", "127.0.0.1");
14    host_resolver()->AddRule("c.com", "127.0.0.1");
15  }
16};
17
18// If failing, mark disabled and update http://crbug.com/92105.
19IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptBasic) {
20  SetupDelayedHostResolver();
21  ASSERT_TRUE(StartEmbeddedTestServer());
22  ASSERT_TRUE(RunExtensionTest("executescript/basic")) << message_;
23}
24
25// If failing, mark disabled and update http://crbug.com/92105.
26IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptInFrame) {
27  SetupDelayedHostResolver();
28  ASSERT_TRUE(StartEmbeddedTestServer());
29  ASSERT_TRUE(RunExtensionTest("executescript/in_frame")) << message_;
30}
31
32// Fails often on Windows.
33// http://crbug.com/174715
34#if defined(OS_WIN)
35#define MAYBE_ExecuteScriptPermissions DISABLED_ExecuteScriptPermissions
36#else
37#define MAYBE_ExecuteScriptPermissions ExecuteScriptPermissions
38#endif  // defined(OS_WIN)
39
40IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, MAYBE_ExecuteScriptPermissions) {
41  SetupDelayedHostResolver();
42  ASSERT_TRUE(StartEmbeddedTestServer());
43  ASSERT_TRUE(RunExtensionTest("executescript/permissions")) << message_;
44}
45
46// If failing, mark disabled and update http://crbug.com/84760.
47IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptFileAfterClose) {
48  host_resolver()->AddRule("b.com", "127.0.0.1");
49  ASSERT_TRUE(StartEmbeddedTestServer());
50  ASSERT_TRUE(RunExtensionTest("executescript/file_after_close")) << message_;
51}
52
53// If crashing, mark disabled and update http://crbug.com/67774.
54IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptFragmentNavigation) {
55  ASSERT_TRUE(StartEmbeddedTestServer());
56  const char* extension_name = "executescript/fragment";
57  ASSERT_TRUE(RunExtensionTest(extension_name)) << message_;
58}
59
60// Fails often on Windows dbg bots. http://crbug.com/177163
61#if defined(OS_WIN)
62#define MAYBE_NavigationRaceExecuteScript DISABLED_NavigationRaceExecuteScript
63#else
64#define MAYBE_NavigationRaceExecuteScript NavigationRaceExecuteScript
65#endif  // defined(OS_WIN)
66IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest,
67                       MAYBE_NavigationRaceExecuteScript) {
68  host_resolver()->AddRule("a.com", "127.0.0.1");
69  host_resolver()->AddRule("b.com", "127.0.0.1");
70  ASSERT_TRUE(StartEmbeddedTestServer());
71  ASSERT_TRUE(RunExtensionSubtest("executescript/navigation_race",
72                                  "execute_script.html")) << message_;
73}
74
75IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, NavigationRaceJavaScriptURL) {
76  host_resolver()->AddRule("a.com", "127.0.0.1");
77  host_resolver()->AddRule("b.com", "127.0.0.1");
78  ASSERT_TRUE(StartEmbeddedTestServer());
79  ASSERT_TRUE(RunExtensionSubtest("executescript/navigation_race",
80                                  "javascript_url.html")) << message_;
81}
82
83// If failing, mark disabled and update http://crbug.com/92105.
84IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptFrameAfterLoad) {
85  SetupDelayedHostResolver();
86  ASSERT_TRUE(StartEmbeddedTestServer());
87  ASSERT_TRUE(RunExtensionTest("executescript/frame_after_load")) << message_;
88}
89
90IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptRunAt) {
91  SetupDelayedHostResolver();
92  ASSERT_TRUE(StartEmbeddedTestServer());
93  ASSERT_TRUE(RunExtensionTest("executescript/run_at")) << message_;
94}
95
96IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, ExecuteScriptCallback) {
97  SetupDelayedHostResolver();
98  ASSERT_TRUE(StartEmbeddedTestServer());
99  ASSERT_TRUE(RunExtensionTest("executescript/callback")) << message_;
100}
101
102IN_PROC_BROWSER_TEST_F(ExecuteScriptApiTest, UserGesture) {
103  SetupDelayedHostResolver();
104  ASSERT_TRUE(StartEmbeddedTestServer());
105  ASSERT_TRUE(RunExtensionTest("executescript/user_gesture")) << message_;
106}
107