a6f09bd265bb665e6f1fb3ac5385aa8b137bebef
[platform/framework/web/crosswalk.git] / src / xwalk / extensions / test / external_extension.cc
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.
4
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"
14
15 using xwalk::extensions::XWalkExtensionService;
16 using xwalk::Runtime;
17
18 class ExternalExtensionTest : public XWalkExtensionsTestBase {
19  public:
20   virtual void SetUp() OVERRIDE {
21     XWalkExtensionService::SetExternalExtensionsPathForTesting(
22         GetExternalExtensionTestPath(FILE_PATH_LITERAL("echo_extension")));
23     XWalkExtensionsTestBase::SetUp();
24   }
25 };
26
27 class RuntimeInterfaceTest : public XWalkExtensionsTestBase {
28  public:
29   virtual void SetUp() OVERRIDE {
30     XWalkExtensionService::SetExternalExtensionsPathForTesting(
31         GetExternalExtensionTestPath(
32             FILE_PATH_LITERAL("get_runtime_variable")));
33     XWalkExtensionsTestBase::SetUp();
34   }
35 };
36
37 class MultipleEntryPointsExtension : public XWalkExtensionsTestBase {
38  public:
39   virtual void SetUp() OVERRIDE {
40     XWalkExtensionService::SetExternalExtensionsPathForTesting(
41         GetExternalExtensionTestPath(FILE_PATH_LITERAL("multiple_extension")));
42     XWalkExtensionsTestBase::SetUp();
43   }
44 };
45
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());
54 }
55
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);
62
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());
67   }
68 }
69
70 IN_PROC_BROWSER_TEST_F(ExternalExtensionTest, ExternalExtensionSync) {
71   Runtime* runtime = CreateRuntime();
72   GURL url = GetExtensionsTestURL(
73       base::FilePath(),
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());
79 }
80
81 IN_PROC_BROWSER_TEST_F(RuntimeInterfaceTest, GetRuntimeVariable) {
82   Runtime* runtime = CreateRuntime();
83   GURL url = GetExtensionsTestURL(
84       base::FilePath(),
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());
90 }
91
92 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, MultipleEntryPoints) {
93   Runtime* runtime = CreateRuntime();
94   GURL url = GetExtensionsTestURL(
95       base::FilePath(),
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());
101 }
102
103 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, SetterLoadsExtension) {
104   Runtime* runtime = CreateRuntime();
105   GURL url = GetExtensionsTestURL(
106       base::FilePath(),
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());
112 }
113
114 IN_PROC_BROWSER_TEST_F(MultipleEntryPointsExtension, ReplacementObjectIsUsed) {
115   Runtime* runtime = CreateRuntime();
116   GURL url = GetExtensionsTestURL(
117       base::FilePath(),
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());
124 }