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

Side by Side Diff: mojo/shell/public/cpp/app_lifetime_helper.h

Issue 1675153002: ApplicationImpl->ShellConnection, mojom::Application->mojom::ShellClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ci2
Patch Set: . Created 4 years, 10 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
« no previous file with comments | « mojo/shell/public/cpp/BUILD.gn ('k') | mojo/shell/public/cpp/application_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_ 5 #ifndef MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_
6 #define MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_ 6 #define MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_
7 7
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/single_thread_task_runner.h" 10 #include "base/single_thread_task_runner.h"
11 11
12 namespace mojo { 12 namespace mojo {
13 13
14 class ApplicationImpl; 14 class ShellConnection;
15 class AppLifetimeHelper; 15 class AppLifetimeHelper;
16 16
17 // A service implementation should keep this object as a member variable to hold 17 // A service implementation should keep this object as a member variable to hold
18 // a reference on the application. 18 // a reference on the application.
19 // Since services can live on different threads than the app, this class is 19 // Since services can live on different threads than the app, this class is
20 // safe to use on any thread. However, each instance should only be used on one 20 // safe to use on any thread. However, each instance should only be used on one
21 // thread at a time (otherwise there'll be races between the addref resulting 21 // thread at a time (otherwise there'll be races between the addref resulting
22 // from cloning and destruction). 22 // from cloning and destruction).
23 class AppRefCount { 23 class AppRefCount {
24 public: 24 public:
(...skipping 22 matching lines...) Expand all
47 47
48 DISALLOW_COPY_AND_ASSIGN(AppRefCount); 48 DISALLOW_COPY_AND_ASSIGN(AppRefCount);
49 }; 49 };
50 50
51 // This is a helper class for apps to manage their lifetime, specifically so 51 // This is a helper class for apps to manage their lifetime, specifically so
52 // apps can quit when they're not used anymore. 52 // apps can quit when they're not used anymore.
53 // An app can contain an object of this class as a member variable. Each time it 53 // An app can contain an object of this class as a member variable. Each time it
54 // creates an instance of a service, it gives it a refcount using 54 // creates an instance of a service, it gives it a refcount using
55 // CreateAppRefCount. The service implementation then keeps that object as a 55 // CreateAppRefCount. The service implementation then keeps that object as a
56 // member variable. When all the service implemenations go away, the app will be 56 // member variable. When all the service implemenations go away, the app will be
57 // quit with a call to mojo::ApplicationImpl::Terminate(). 57 // quit with a call to mojo::ShellConnection::Terminate().
58 class AppLifetimeHelper { 58 class AppLifetimeHelper {
59 public: 59 public:
60 explicit AppLifetimeHelper(ApplicationImpl* app); 60 explicit AppLifetimeHelper(ShellConnection* app);
61 ~AppLifetimeHelper(); 61 ~AppLifetimeHelper();
62 62
63 scoped_ptr<AppRefCount> CreateAppRefCount(); 63 scoped_ptr<AppRefCount> CreateAppRefCount();
64 64
65 private: 65 private:
66 friend AppRefCount; 66 friend AppRefCount;
67 void AddRef(); 67 void AddRef();
68 void Release(); 68 void Release();
69 69
70 friend ApplicationImpl; 70 friend ShellConnection;
71 void OnQuit(); 71 void OnQuit();
72 72
73 ApplicationImpl* app_; 73 ShellConnection* app_;
74 int ref_count_; 74 int ref_count_;
75 75
76 DISALLOW_COPY_AND_ASSIGN(AppLifetimeHelper); 76 DISALLOW_COPY_AND_ASSIGN(AppLifetimeHelper);
77 }; 77 };
78 78
79 } // namespace mojo 79 } // namespace mojo
80 80
81 #endif // MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_ 81 #endif // MOJO_SHELL_PUBLIC_CPP_APP_LIFETIME_HELPER_H_
OLDNEW
« no previous file with comments | « mojo/shell/public/cpp/BUILD.gn ('k') | mojo/shell/public/cpp/application_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698