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.
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"
17 using xwalk::application::Application;
18 using xwalk::application::ApplicationService;
19 using namespace xwalk::extensions; // NOLINT
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"));
31 ApplicationBrowserTest::~ApplicationBrowserTest() {
34 void ApplicationBrowserTest::SetUp() {
35 XWalkExtensionService::SetCreateUIThreadExtensionsCallbackForTesting(
36 base::Bind(&ApplicationBrowserTest::CreateExtensions,
37 base::Unretained(this)));
38 InProcessBrowserTest::SetUp();
41 void ApplicationBrowserTest::ProperMainThreadCleanup() {
42 const ScopedVector<Application>& apps =
43 application_sevice()->active_applications();
45 std::for_each(apps.begin(), apps.end(),
46 std::mem_fun(&Application::Terminate));
49 ApplicationService* ApplicationBrowserTest::application_sevice() const {
50 return xwalk::XWalkRunner::GetInstance()->app_system()
51 ->application_service();
54 void ApplicationBrowserTest::CreateExtensions(
55 XWalkExtensionVector* extensions) {
56 ApiTestExtension* extension = new ApiTestExtension;
57 extension->SetObserver(test_runner_.get());
58 extensions->push_back(extension);
61 IN_PROC_BROWSER_TEST_F(ApplicationBrowserTest, ApiTest) {
62 Application* app = application_sevice()->Launch(
63 test_data_dir_.Append(FILE_PATH_LITERAL("api")));
65 test_runner_->WaitForTestNotification();
66 EXPECT_EQ(test_runner_->GetTestsResult(), ApiTestRunner::PASS);