Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / xwalk / extensions / test / v8tools_module.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 "xwalk/extensions/test/xwalk_extensions_test_base.h"
6
7 #include "content/public/test/browser_test_utils.h"
8 #include "content/public/test/test_utils.h"
9 #include "xwalk/extensions/common/xwalk_extension.h"
10 #include "xwalk/runtime/browser/runtime.h"
11 #include "xwalk/test/base/in_process_browser_test.h"
12 #include "xwalk/test/base/xwalk_test_utils.h"
13
14 using namespace xwalk::extensions;  // NOLINT
15 using xwalk::Runtime;
16
17 class TestV8ToolsExtensionInstance : public XWalkExtensionInstance {
18  public:
19   void HandleMessage(scoped_ptr<base::Value> msg) override {}
20 };
21
22 class TestV8ToolsExtension : public XWalkExtension {
23  public:
24   TestV8ToolsExtension()
25       : XWalkExtension() {
26     set_name("test_v8tools");
27     set_javascript_api(
28         "var v8tools = requireNative('v8tools');"
29         "exports.forceSetProperty = function(obj, key, value) {"
30         "  v8tools.forceSetProperty(obj, key, value);"
31         "};"
32         "exports.lifecycleTracker = function() {"
33         "  return v8tools.lifecycleTracker();"
34         "};");
35   }
36
37   XWalkExtensionInstance* CreateInstance() override {
38     return new TestV8ToolsExtensionInstance();
39   }
40 };
41
42 class XWalkExtensionsV8ToolsTest : public XWalkExtensionsTestBase {
43  public:
44   void CreateExtensionsForUIThread(
45       XWalkExtensionVector* extensions) override {
46     extensions->push_back(new TestV8ToolsExtension);
47   }
48 };
49
50 IN_PROC_BROWSER_TEST_F(XWalkExtensionsV8ToolsTest,
51                        V8ToolsWorks) {
52   Runtime* runtime = CreateRuntime();
53   GURL url = GetExtensionsTestURL(base::FilePath(),
54       base::FilePath().AppendASCII("test_v8tools.html"));
55
56   content::TitleWatcher title_watcher(runtime->web_contents(), kPassString);
57   title_watcher.AlsoWaitForTitle(kFailString);
58   xwalk_test_utils::NavigateToURL(runtime, url);
59
60   EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
61 }