Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(730)

Side by Side Diff: mojo/shell/dynamic_service_loader_unittest.cc

Issue 414173004: mojo: fix little bug in DynamicServiceLoader/Runner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comment Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. 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/files/scoped_temp_dir.h"
6 #include "mojo/shell/context.h"
7 #include "mojo/shell/dynamic_service_loader.h"
8 #include "mojo/shell/dynamic_service_runner.h"
9 #include "net/base/filename_util.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace mojo {
13 namespace shell {
14
15 namespace {
16
17 struct TestState {
18 bool runner_was_started;
19 bool runner_was_destroyed;
20 };
21
22 class TestDynamicServiceRunner : public DynamicServiceRunner {
23 public:
24 explicit TestDynamicServiceRunner(TestState* state) : state_(state) {}
25 virtual ~TestDynamicServiceRunner() {
26 state_->runner_was_destroyed = true;
27 base::MessageLoop::current()->Quit();
28 }
29 virtual void Start(const base::FilePath& app_path,
30 ScopedMessagePipeHandle service_handle,
31 const base::Closure& app_completed_callback) OVERRIDE {
32 state_->runner_was_started = true;
33 }
34 private:
35 TestState* state_;
36 };
37
38 class TestDynamicServiceRunnerFactory : public DynamicServiceRunnerFactory {
39 public:
40 explicit TestDynamicServiceRunnerFactory(TestState* state) : state_(state) {}
41 virtual ~TestDynamicServiceRunnerFactory() {}
42 virtual scoped_ptr<DynamicServiceRunner> Create(Context* context) OVERRIDE {
43 return scoped_ptr<DynamicServiceRunner>(
44 new TestDynamicServiceRunner(state_));
45 }
46 private:
47 TestState* state_;
48 };
49
50 } // namespace
51
52 class DynamicServiceLoaderTest : public testing::Test {
53 public:
54 DynamicServiceLoaderTest() {}
55 virtual ~DynamicServiceLoaderTest() {}
56 virtual void SetUp() OVERRIDE {
57 scoped_ptr<DynamicServiceRunnerFactory> factory(
58 new TestDynamicServiceRunnerFactory(&state_));
59 loader_.reset(new DynamicServiceLoader(&context_, factory.Pass()));
60 }
61 protected:
62 base::MessageLoop loop_;
63 Context context_;
64 scoped_ptr<DynamicServiceLoader> loader_;
65 TestState state_;
66 };
67
68 TEST_F(DynamicServiceLoaderTest, DoesNotExist) {
69 base::ScopedTempDir temp_dir;
70 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
71 base::FilePath nonexistent_file(FILE_PATH_LITERAL("nonexistent.txt"));
72 GURL url(net::FilePathToFileURL(temp_dir.path().Append(nonexistent_file)));
73 MessagePipe pipe;
74 loader_->LoadService(context_.service_manager(), url, pipe.handle0.Pass());
75 loop_.Run();
76 EXPECT_FALSE(state_.runner_was_started);
77 EXPECT_TRUE(state_.runner_was_destroyed);
78 }
79
80 } // namespace shell
81 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698