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 #include "athena/content/public/app_registry.h"
7 #include "athena/content/app_activity_registry.h"
8 #include "base/logging.h"
12 class AppRegistryImpl
: public AppRegistry
{
15 virtual ~AppRegistryImpl();
18 virtual AppActivityRegistry
* GetAppActivityRegistry(
19 const std::string
& app_id
,
20 content::BrowserContext
* browser_context
) OVERRIDE
;
21 virtual int NumberOfApplications() const OVERRIDE
{ return app_list_
.size(); }
24 virtual void RemoveAppActivityRegistry(
25 AppActivityRegistry
* registry
) OVERRIDE
;
27 std::vector
<AppActivityRegistry
*> app_list_
;
29 DISALLOW_COPY_AND_ASSIGN(AppRegistryImpl
);
34 AppRegistryImpl
* instance
= NULL
;
38 AppRegistryImpl::AppRegistryImpl() {
40 AppRegistryImpl::~AppRegistryImpl() {
41 DCHECK(app_list_
.empty());
44 AppActivityRegistry
* AppRegistryImpl::GetAppActivityRegistry(
45 const std::string
& app_id
,
46 content::BrowserContext
* browser_context
) {
47 // Search for an existing proxy.
48 for (std::vector
<AppActivityRegistry
*>::iterator it
= app_list_
.begin();
49 it
!= app_list_
.end(); ++it
) {
50 if ((*it
)->app_id() == app_id
&&
51 (*it
)->browser_context() == browser_context
)
55 // Create and return a new application object.
56 AppActivityRegistry
* app_activity_registry
=
57 new AppActivityRegistry(app_id
, browser_context
);
58 app_list_
.push_back(app_activity_registry
);
59 return app_activity_registry
;
62 void AppRegistryImpl::RemoveAppActivityRegistry(AppActivityRegistry
* registry
) {
63 std::vector
<AppActivityRegistry
*>::iterator item
=
64 std::find(app_list_
.begin(), app_list_
.end(), registry
);
65 CHECK(item
!= app_list_
.end());
66 app_list_
.erase(item
);
71 void AppRegistry::Create() {
73 instance
= new AppRegistryImpl();
77 AppRegistry
* AppRegistry::Get() {
83 void AppRegistry::ShutDown() {
88 AppRegistry::AppRegistry() {}
90 AppRegistry::~AppRegistry() {