f657ff415102a04259cf0c9ac6ab83fc63d13769
[platform/framework/web/crosswalk.git] / src / xwalk / sysapps / raw_socket / raw_socket_api_browsertest.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/path_service.h"
6 #include "base/strings/utf_string_conversions.h"
7 #include "content/public/test/browser_test_utils.h"
8 #include "content/public/test/test_utils.h"
9 #include "net/base/filename_util.h"
10 #include "xwalk/extensions/browser/xwalk_extension_service.h"
11 #include "xwalk/extensions/common/xwalk_extension.h"
12 #include "xwalk/runtime/browser/runtime.h"
13 #include "xwalk/test/base/in_process_browser_test.h"
14 #include "xwalk/test/base/xwalk_test_utils.h"
15
16 using namespace xwalk::extensions;  // NOLINT
17
18 namespace {
19
20 class SysAppsRawSocketTestInstance : public XWalkExtensionInstance {
21  public:
22   SysAppsRawSocketTestInstance() {}
23
24   virtual void HandleMessage(scoped_ptr<base::Value> msg) OVERRIDE {}
25 };
26
27 class SysAppsRawSocketTestExtension : public XWalkExtension {
28  public:
29   SysAppsRawSocketTestExtension() {
30     set_name("sysapps_raw_socket_test");
31     set_javascript_api(
32         "exports.v8tools = requireNative('v8tools');");
33   }
34
35   virtual XWalkExtensionInstance* CreateInstance() OVERRIDE {
36     return new SysAppsRawSocketTestInstance();
37   }
38 };
39
40 class SysAppsRawSocketTest : public InProcessBrowserTest {
41  public:
42   virtual void SetUp() {
43     XWalkExtensionService::SetCreateUIThreadExtensionsCallbackForTesting(
44         base::Bind(&SysAppsRawSocketTest::CreateExtensions,
45                    base::Unretained(this)));
46     InProcessBrowserTest::SetUp();
47   }
48
49   void CreateExtensions(XWalkExtensionVector* extensions) {
50     extensions->push_back(new SysAppsRawSocketTestExtension);
51   }
52 };
53
54 }  // namespace
55
56 IN_PROC_BROWSER_TEST_F(SysAppsRawSocketTest, SysAppsRawSocket) {
57   const base::string16 passString = base::ASCIIToUTF16("Pass");
58   const base::string16 failString = base::ASCIIToUTF16("Fail");
59
60   content::RunAllPendingInMessageLoop();
61   content::TitleWatcher title_watcher(runtime()->web_contents(), passString);
62   title_watcher.AlsoWaitForTitle(failString);
63
64   base::FilePath test_file;
65   PathService::Get(base::DIR_SOURCE_ROOT, &test_file);
66   test_file = test_file
67       .Append(FILE_PATH_LITERAL("xwalk"))
68       .Append(FILE_PATH_LITERAL("sysapps"))
69       .Append(FILE_PATH_LITERAL("raw_socket"))
70       .Append(FILE_PATH_LITERAL("raw_socket_api_browsertest.html"));
71
72   xwalk_test_utils::NavigateToURL(runtime(), net::FilePathToFileURL(test_file));
73   EXPECT_EQ(passString, title_watcher.WaitAndGetTitle());
74 }