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/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"
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
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"));
34 ApplicationBrowserTest::~ApplicationBrowserTest() {
37 void ApplicationBrowserTest::SetUp() {
38 XWalkExtensionService::SetCreateUIThreadExtensionsCallbackForTesting(
39 base::Bind(&ApplicationBrowserTest::CreateExtensions,
40 base::Unretained(this)));
41 InProcessBrowserTest::SetUp();
44 void ApplicationBrowserTest::ProperMainThreadCleanup() {
45 const ScopedVector<Application>& apps =
46 application_sevice()->active_applications();
48 std::for_each(apps.begin(), apps.end(),
49 std::mem_fun(&Application::Terminate));
52 ApplicationService* ApplicationBrowserTest::application_sevice() const {
53 return xwalk::XWalkRunner::GetInstance()->app_system()
54 ->application_service();
57 void ApplicationBrowserTest::CreateExtensions(
58 XWalkExtensionVector* extensions) {
59 ApiTestExtension* extension = new ApiTestExtension;
60 extension->SetObserver(test_runner_.get());
61 extensions->push_back(extension);
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);
71 test_runner_->WaitForTestNotification();
72 EXPECT_EQ(test_runner_->GetTestsResult(), ApiTestRunner::PASS);