1ef9166d141c2a57838c6ed170f58854e1b86597
[platform/framework/web/crosswalk.git] / src / xwalk / extensions / test / export_object.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
16 class TestExportObjectExtensionInstance : public XWalkExtensionInstance {
17  public:
18   TestExportObjectExtensionInstance() {}
19
20   virtual void HandleMessage(scoped_ptr<base::Value> msg) OVERRIDE {}
21 };
22
23 class TestExportObjectExtension : public XWalkExtension {
24  public:
25   TestExportObjectExtension()
26       : XWalkExtension() {
27     set_name("export_object");
28     set_javascript_api(
29         "exports.data = 54321");
30   }
31
32   virtual XWalkExtensionInstance* CreateInstance() OVERRIDE {
33     return new TestExportObjectExtensionInstance();
34   }
35 };
36
37 class TestExportCustomObjectExtension : public XWalkExtension {
38  public:
39   TestExportCustomObjectExtension()
40       : XWalkExtension() {
41     set_name("export_custom_object");
42     set_javascript_api(
43         "var ExportObject = function(data) {"
44         "  this.data = data;"
45         "};"
46         "exports = new ExportObject(12345)");
47   }
48
49   virtual XWalkExtensionInstance* CreateInstance() OVERRIDE {
50     return new TestExportObjectExtensionInstance();
51   }
52 };
53
54 class XWalkExtensionsExportObjectTest : public XWalkExtensionsTestBase {
55  public:
56   virtual void CreateExtensionsForUIThread(
57       XWalkExtensionVector* extensions) OVERRIDE {
58     extensions->push_back(new TestExportObjectExtension);
59     extensions->push_back(new TestExportCustomObjectExtension);
60   }
61 };
62
63 IN_PROC_BROWSER_TEST_F(XWalkExtensionsExportObjectTest,
64                        ExportObjectWorks) {
65   content::RunAllPendingInMessageLoop();
66   GURL url = GetExtensionsTestURL(base::FilePath(),
67       base::FilePath().AppendASCII("test_export_object.html"));
68
69   content::TitleWatcher title_watcher(runtime()->web_contents(), kPassString);
70   title_watcher.AlsoWaitForTitle(kFailString);
71   xwalk_test_utils::NavigateToURL(runtime(), url);
72
73   EXPECT_EQ(kPassString, title_watcher.WaitAndGetTitle());
74 }