b6dbff0f1982e26e3c38782ba03e9b60a9c80ba9
[platform/framework/web/crosswalk.git] / src / xwalk / application / test / application_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 "content/public/test/browser_test_utils.h"
7 #include "content/public/test/test_utils.h"
8 #include "net/base/net_util.h"
9 #include "xwalk/application/browser/application.h"
10 #include "xwalk/application/browser/application_system.h"
11 #include "xwalk/application/browser/application_service.h"
12 #include "xwalk/application/test/application_browsertest.h"
13 #include "xwalk/application/test/application_testapi.h"
14 #include "xwalk/extensions/browser/xwalk_extension_service.h"
15 #include "xwalk/runtime/browser/xwalk_runner.h"
16
17 using xwalk::application::Application;
18 using xwalk::application::ApplicationService;
19 using namespace xwalk::extensions;  // NOLINT
20
21 ApplicationBrowserTest::ApplicationBrowserTest()
22   : test_runner_(new ApiTestRunner()) {
23   PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir_);
24   test_data_dir_ = test_data_dir_
25     .Append(FILE_PATH_LITERAL("xwalk"))
26     .Append(FILE_PATH_LITERAL("application"))
27     .Append(FILE_PATH_LITERAL("test"))
28     .Append(FILE_PATH_LITERAL("data"));
29 }
30
31 ApplicationBrowserTest::~ApplicationBrowserTest() {
32 }
33
34 void ApplicationBrowserTest::SetUp() {
35   XWalkExtensionService::SetCreateUIThreadExtensionsCallbackForTesting(
36       base::Bind(&ApplicationBrowserTest::CreateExtensions,
37                  base::Unretained(this)));
38   InProcessBrowserTest::SetUp();
39 }
40
41 void ApplicationBrowserTest::ProperMainThreadCleanup() {
42   const ScopedVector<Application>& apps =
43     application_sevice()->active_applications();
44
45   std::for_each(apps.begin(), apps.end(),
46     std::mem_fun(&Application::Terminate));
47 }
48
49 ApplicationService* ApplicationBrowserTest::application_sevice() const {
50   return xwalk::XWalkRunner::GetInstance()->app_system()
51       ->application_service();
52 }
53
54 void ApplicationBrowserTest::CreateExtensions(
55      XWalkExtensionVector* extensions) {
56   ApiTestExtension* extension = new ApiTestExtension;
57   extension->SetObserver(test_runner_.get());
58   extensions->push_back(extension);
59 }
60
61 IN_PROC_BROWSER_TEST_F(ApplicationBrowserTest, ApiTest) {
62   Application* app = application_sevice()->LaunchFromUnpackedPath(
63       test_data_dir_.Append(FILE_PATH_LITERAL("api")));
64   ASSERT_TRUE(app);
65   test_runner_->WaitForTestNotification();
66   EXPECT_EQ(test_runner_->GetTestsResult(), ApiTestRunner::PASS);
67 }