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

Side by Side Diff: mojo/application_manager/background_shell_application_loader.h

Issue 788243007: Moves BackgroundShellApplicationLoader to shell/android (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: merge 2 trunk Created 6 years 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
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 #ifndef MOJO_APPLICATION_MANAGER_BACKGROUND_SHELL_APPLICATION_LOADER_H_
6 #define MOJO_APPLICATION_MANAGER_BACKGROUND_SHELL_APPLICATION_LOADER_H_
7
8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/synchronization/waitable_event.h"
12 #include "base/threading/simple_thread.h"
13 #include "mojo/application_manager/application_loader.h"
14
15 namespace mojo {
16
17 // TODO(tim): Eventually this should be Android-only to support services
18 // that we need to bundle with the shell (such as NetworkService). Perhaps
19 // we should move it to shell/ as well.
20 class MOJO_APPLICATION_MANAGER_EXPORT BackgroundShellApplicationLoader
21 : public ApplicationLoader,
22 public base::DelegateSimpleThread::Delegate {
23 public:
24 BackgroundShellApplicationLoader(scoped_ptr<ApplicationLoader> real_loader,
25 const std::string& thread_name,
26 base::MessageLoop::Type message_loop_type);
27 ~BackgroundShellApplicationLoader() override;
28
29 // ApplicationLoader overrides:
30 void Load(ApplicationManager* manager,
31 const GURL& url,
32 ScopedMessagePipeHandle shell_handle,
33 LoadCallback callback) override;
34 void OnApplicationError(ApplicationManager* manager,
35 const GURL& url) override;
36
37 private:
38 // |base::DelegateSimpleThread::Delegate| method:
39 void Run() override;
40
41 // These functions are exected on the background thread. They call through
42 // to |background_loader_| to do the actual loading.
43 // TODO: having this code take a |manager| is fragile (as ApplicationManager
44 // isn't thread safe).
45 void LoadOnBackgroundThread(ApplicationManager* manager,
46 const GURL& url,
47 ScopedMessagePipeHandle shell_handle);
48 void OnApplicationErrorOnBackgroundThread(ApplicationManager* manager,
49 const GURL& url);
50 bool quit_on_shutdown_;
51 scoped_ptr<ApplicationLoader> loader_;
52
53 const base::MessageLoop::Type message_loop_type_;
54 const std::string thread_name_;
55
56 // Created on |thread_| during construction of |this|. Protected against
57 // uninitialized use by |message_loop_created_|, and protected against
58 // use-after-free by holding a reference to the thread-safe object. Note
59 // that holding a reference won't hold |thread_| from exiting.
60 scoped_refptr<base::TaskRunner> task_runner_;
61 base::WaitableEvent message_loop_created_;
62
63 // Lives on |thread_|.
64 base::Closure quit_closure_;
65
66 scoped_ptr<base::DelegateSimpleThread> thread_;
67
68 DISALLOW_COPY_AND_ASSIGN(BackgroundShellApplicationLoader);
69 };
70
71 } // namespace mojo
72
73 #endif // MOJO_APPLICATION_MANAGER_BACKGROUND_SHELL_APPLICATION_LOADER_H_
OLDNEW
« no previous file with comments | « mojo/application_manager/BUILD.gn ('k') | mojo/application_manager/background_shell_application_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698