Fix CandidateSessionConfig copy constructor to copy all fields.
[chromium-blink-merge.git] / mojo / runner / out_of_process_native_runner.h
blobd126c36ad4e633ab1e2475a5abf272aca74ea80d
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.
5 #ifndef MOJO_RUNNER_OUT_OF_PROCESS_NATIVE_RUNNER_H_
6 #define MOJO_RUNNER_OUT_OF_PROCESS_NATIVE_RUNNER_H_
8 #include "base/callback.h"
9 #include "base/files/file_path.h"
10 #include "base/macros.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "mojo/public/cpp/bindings/error_handler.h"
13 #include "mojo/shell/native_runner.h"
15 namespace mojo {
16 namespace runner {
18 class ChildProcessHost;
19 class Context;
21 // An implementation of |NativeRunner| that loads/runs the given app (from the
22 // file system) in a separate process (of its own).
23 class OutOfProcessNativeRunner : public shell::NativeRunner {
24 public:
25 explicit OutOfProcessNativeRunner(Context* context);
26 ~OutOfProcessNativeRunner() override;
28 // |NativeRunner| method:
29 void Start(const base::FilePath& app_path,
30 shell::NativeApplicationCleanup cleanup,
31 InterfaceRequest<Application> application_request,
32 const base::Closure& app_completed_callback) override;
34 private:
35 // |ChildController::StartApp()| callback:
36 void AppCompleted(int32_t result);
38 Context* const context_;
40 base::FilePath app_path_;
41 base::Closure app_completed_callback_;
43 scoped_ptr<ChildProcessHost> child_process_host_;
45 DISALLOW_COPY_AND_ASSIGN(OutOfProcessNativeRunner);
48 class OutOfProcessNativeRunnerFactory : public shell::NativeRunnerFactory {
49 public:
50 explicit OutOfProcessNativeRunnerFactory(Context* context)
51 : context_(context) {}
52 ~OutOfProcessNativeRunnerFactory() override {}
54 scoped_ptr<shell::NativeRunner> Create(const Options& options) override;
56 private:
57 Context* const context_;
59 DISALLOW_COPY_AND_ASSIGN(OutOfProcessNativeRunnerFactory);
62 } // namespace runner
63 } // namespace mojo
65 #endif // MOJO_RUNNER_OUT_OF_PROCESS_NATIVE_RUNNER_H_