Upstream version 9.38.207.0
[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/common/application_file_util.h"
13 #include "xwalk/application/test/application_browsertest.h"
14 #include "xwalk/application/test/application_testapi.h"
15 #include "xwalk/extensions/browser/xwalk_extension_service.h"
16 #include "xwalk/runtime/browser/xwalk_runner.h"
17
18 using xwalk::application::Application;
19 using xwalk::application::ApplicationService;
20 using xwalk::application::Manifest;
21 using xwalk::application::GetManifestPath;
22 using namespace xwalk::extensions;  // NOLINT
23
24 ApplicationBrowserTest::ApplicationBrowserTest()
25   : test_runner_(new ApiTestRunner()) {
26   PathService::Get(base::DIR_SOURCE_ROOT, &test_data_dir_);
27   test_data_dir_ = test_data_dir_
28     .Append(FILE_PATH_LITERAL("xwalk"))
29     .Append(FILE_PATH_LITERAL("application"))
30     .Append(FILE_PATH_LITERAL("test"))
31     .Append(FILE_PATH_LITERAL("data"));
32 }
33
34 ApplicationBrowserTest::~ApplicationBrowserTest() {
35 }
36
37 void ApplicationBrowserTest::SetUp() {
38   XWalkExtensionService::SetCreateUIThreadExtensionsCallbackForTesting(
39       base::Bind(&ApplicationBrowserTest::CreateExtensions,
40                  base::Unretained(this)));
41   InProcessBrowserTest::SetUp();
42 }
43
44 void ApplicationBrowserTest::ProperMainThreadCleanup() {
45   const ScopedVector<Application>& apps =
46     application_sevice()->active_applications();
47
48   std::for_each(apps.begin(), apps.end(),
49     std::mem_fun(&Application::Terminate));
50 }
51
52 ApplicationService* ApplicationBrowserTest::application_sevice() const {
53   return xwalk::XWalkRunner::GetInstance()->app_system()
54       ->application_service();
55 }
56
57 void ApplicationBrowserTest::CreateExtensions(
58      XWalkExtensionVector* extensions) {
59   ApiTestExtension* extension = new ApiTestExtension;
60   extension->SetObserver(test_runner_.get());
61   extensions->push_back(extension);
62 }
63
64 IN_PROC_BROWSER_TEST_F(ApplicationBrowserTest, ApiTest) {
65   base::FilePath manifest_path =
66       GetManifestPath(test_data_dir_.Append(FILE_PATH_LITERAL("api")),
67           Manifest::TYPE_MANIFEST);
68   Application* app = application_sevice()->LaunchFromManifestPath(
69       manifest_path, Manifest::TYPE_MANIFEST);
70   ASSERT_TRUE(app);
71   test_runner_->WaitForTestNotification();
72   EXPECT_EQ(test_runner_->GetTestsResult(), ApiTestRunner::PASS);
73 }