1 // Copyright (c) 2013 Intel Corporation. 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.
5 #include "base/native_library.h"
6 #include "base/path_service.h"
7 #include "base/strings/utf_string_conversions.h"
8 #include "xwalk/extensions/browser/xwalk_extension_service.h"
9 #include "xwalk/extensions/test/xwalk_extensions_test_base.h"
10 #include "xwalk/runtime/browser/runtime.h"
11 #include "xwalk/test/base/xwalk_test_utils.h"
12 #include "content/public/test/browser_test_utils.h"
13 #include "content/public/test/test_utils.h"
15 using xwalk::extensions::XWalkExtensionService;
18 class ExternalExtensionTest : public XWalkExtensionsTestBase {
20 virtual void SetUp() OVERRIDE {
21 XWalkExtensionService::SetExternalExtensionsPathForTesting(
22 GetExternalExtensionTestPath(FILE_PATH_LITERAL("echo_extension")));
23 XWalkExtensionsTestBase::SetUp();
27 class RuntimeInterfaceTest : public XWalkExtensionsTestBase {
29 virtual void SetUp() OVERRIDE {
30 XWalkExtensionService::SetExternalExtensionsPathForTesting(
31 GetExternalExtensionTestPath(
32 FILE_PATH_LITERAL("get_runtime_variable")));
33 XWalkExtensionsTestBase::SetUp();
37 class MultipleEntryPointsExtension : public XWalkExtensionsTestBase {
39 virtual void SetUp() OVERRIDE {
40 XWalkExtensionService::SetExternalExtensionsPathForTesting(
41 GetExternalExtensionTestPath(FILE_PATH_LITERAL("multiple_extension")));
42 XWalkExtensionsTestBase::SetUp();
46 IN_PROC_BROWSER_TEST_F(ExternalExtensionTest, ExternalExtension) {
47 Runtime* runtime = CreateRuntime();
48 GURL url = GetExtensionsTestURL(base::FilePath(),
49 base::FilePath().AppendASCII("echo.html"));
50 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
51 title_watcher.AlsoWaitForTitle(kFailString);
52 xwalk_test_utils::NavigateToURL(runtime, url);
53 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
56 IN_PROC_BROWSER_TEST_F(ExternalExtensionTest, NavigateWithExternalExtension) {
57 Runtime* runtime = CreateRuntime();
58 GURL url = GetExtensionsTestURL(base::FilePath(),
59 base::FilePath().AppendASCII("echo.html"));
60 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
61 title_watcher.AlsoWaitForTitle(kFailString);
63 for (int i = 0; i < 5; i++) {
64 xwalk_test_utils::NavigateToURL(runtime, url);
65 WaitForLoadStop(runtime->web_contents());
66 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
70 IN_PROC_BROWSER_TEST_F(ExternalExtensionTest, ExternalExtensionSync) {
71 Runtime* runtime = CreateRuntime();
72 GURL url = GetExtensionsTestURL(
74 base::FilePath().AppendASCII("sync_echo.html"));
75 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
76 title_watcher.AlsoWaitForTitle(kFailString);
77 xwalk_test_utils::NavigateToURL(runtime, url);
78 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
81 IN_PROC_BROWSER_TEST_F(RuntimeInterfaceTest, GetRuntimeVariable) {
82 Runtime* runtime = CreateRuntime();
83 GURL url = GetExtensionsTestURL(
85 base::FilePath().AppendASCII("get_runtime_variable.html"));
86 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
87 title_watcher.AlsoWaitForTitle(kFailString);
88 xwalk_test_utils::NavigateToURL(runtime, url);
89 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
92 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, MultipleEntryPoints) {
93 Runtime* runtime = CreateRuntime();
94 GURL url = GetExtensionsTestURL(
96 base::FilePath().AppendASCII("entry_points.html"));
97 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
98 title_watcher.AlsoWaitForTitle(kFailString);
99 xwalk_test_utils::NavigateToURL(runtime, url);
100 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
103 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, SetterLoadsExtension) {
104 Runtime* runtime = CreateRuntime();
105 GURL url = GetExtensionsTestURL(
107 base::FilePath().AppendASCII("setter_callback_entry_point.html"));
108 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
109 title_watcher.AlsoWaitForTitle(kFailString);
110 xwalk_test_utils::NavigateToURL(runtime, url);
111 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
114 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, ReplacementObjectIsUsed) {
115 Runtime* runtime = CreateRuntime();
116 GURL url = GetExtensionsTestURL(
118 base::FilePath().AppendASCII(
119 "lazy_loaded_extension_overrides_object.html"));
120 content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
121 title_watcher.AlsoWaitForTitle(kFailString);
122 xwalk_test_utils::NavigateToURL(runtime, url);
123 EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());