| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_PUBLIC_COMMON_MOJO_APPLICATION_INFO_H_ |
| #define CONTENT_PUBLIC_COMMON_MOJO_APPLICATION_INFO_H_ |
| |
| #include <memory> |
| |
| #include "base/callback.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/single_thread_task_runner.h" |
| #include "content/common/content_export.h" |
| |
| namespace shell { |
| class Service; |
| } |
| |
| namespace content { |
| |
| // MojoApplicationInfo provides details necessary to construct and bind new |
| // instances of embedded Mojo applications. |
| struct CONTENT_EXPORT MojoApplicationInfo { |
| using ApplicationFactory = base::Callback<std::unique_ptr<shell::Service>( |
| const base::Closure& quit_closure)>; |
| |
| MojoApplicationInfo(); |
| MojoApplicationInfo(const MojoApplicationInfo& other); |
| ~MojoApplicationInfo(); |
| |
| // A factory function which will be called to produce a new Service |
| // instance for this app whenever one is needed. |
| ApplicationFactory application_factory; |
| |
| // The task runner on which to construct and bind new Service instances |
| // for this app. If null, behavior depends on the value of |use_own_thread| |
| // below. |
| scoped_refptr<base::SingleThreadTaskRunner> application_task_runner; |
| |
| // If |application_task_runner| is null, setting this to |true| will give |
| // each instance of this app its own thread to run on. Setting this to |false| |
| // (the default) will instead run the app on the main thread's task runner. |
| // |
| // If |application_task_runner| is not null, this value is ignored. |
| bool use_own_thread = false; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_PUBLIC_COMMON_MOJO_APPLICATION_INFO_H_ |