| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 #include "chrome/browser/chromeos/extensions/screenlock_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/screenlock_private_api.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/values.h" | 8 #include "base/values.h" |
| 9 #include "chrome/browser/chromeos/login/screen_locker.h" | 9 #include "chrome/browser/chromeos/login/screen_locker.h" |
| 10 #include "chrome/browser/extensions/image_loader.h" | 10 #include "chrome/browser/extensions/image_loader.h" |
| 11 #include "chrome/common/extensions/api/screenlock_private.h" | 11 #include "chrome/common/extensions/api/screenlock_private.h" |
| 12 #include "chromeos/dbus/dbus_thread_manager.h" | 12 #include "chromeos/dbus/dbus_thread_manager.h" |
| 13 #include "extensions/browser/event_router.h" | 13 #include "extensions/browser/event_router.h" |
| 14 #include "extensions/browser/extension_system.h" | 14 #include "extensions/browser/extension_system.h" |
| 15 #include "ui/gfx/image/image.h" |
| 15 | 16 |
| 16 namespace screenlock = extensions::api::screenlock_private; | 17 namespace screenlock = extensions::api::screenlock_private; |
| 17 | 18 |
| 18 namespace extensions { | 19 namespace extensions { |
| 19 | 20 |
| 20 ScreenlockPrivateGetLockedFunction::ScreenlockPrivateGetLockedFunction() {} | 21 ScreenlockPrivateGetLockedFunction::ScreenlockPrivateGetLockedFunction() {} |
| 21 | 22 |
| 22 ScreenlockPrivateGetLockedFunction::~ScreenlockPrivateGetLockedFunction() {} | 23 ScreenlockPrivateGetLockedFunction::~ScreenlockPrivateGetLockedFunction() {} |
| 23 | 24 |
| 24 bool ScreenlockPrivateGetLockedFunction::RunImpl() { | 25 bool ScreenlockPrivateGetLockedFunction::RunImpl() { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 ScreenlockPrivateEventRouter* router = | 104 ScreenlockPrivateEventRouter* router = |
| 104 ScreenlockPrivateEventRouter::GetFactoryInstance()->GetForProfile( | 105 ScreenlockPrivateEventRouter::GetFactoryInstance()->GetForProfile( |
| 105 GetProfile()); | 106 GetProfile()); |
| 106 locker->ShowUserPodButton( | 107 locker->ShowUserPodButton( |
| 107 GetProfile()->GetProfileName(), image, | 108 GetProfile()->GetProfileName(), image, |
| 108 base::Bind(&ScreenlockPrivateEventRouter::OnButtonClicked, | 109 base::Bind(&ScreenlockPrivateEventRouter::OnButtonClicked, |
| 109 base::Unretained(router))); | 110 base::Unretained(router))); |
| 110 SendResponse(error_.empty()); | 111 SendResponse(error_.empty()); |
| 111 } | 112 } |
| 112 | 113 |
| 113 ScreenlockPrivateEventRouter::ScreenlockPrivateEventRouter(Profile* profile) | 114 ScreenlockPrivateEventRouter::ScreenlockPrivateEventRouter( |
| 114 : profile_(profile) { | 115 content::BrowserContext* context) |
| 116 : browser_context_(context) { |
| 115 chromeos::SessionManagerClient* session_manager = | 117 chromeos::SessionManagerClient* session_manager = |
| 116 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(); | 118 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(); |
| 117 if (!session_manager->HasObserver(this)) | 119 if (!session_manager->HasObserver(this)) |
| 118 session_manager->AddObserver(this); | 120 session_manager->AddObserver(this); |
| 119 } | 121 } |
| 120 | 122 |
| 121 ScreenlockPrivateEventRouter::~ScreenlockPrivateEventRouter() {} | 123 ScreenlockPrivateEventRouter::~ScreenlockPrivateEventRouter() {} |
| 122 | 124 |
| 123 void ScreenlockPrivateEventRouter::ScreenIsLocked() { | 125 void ScreenlockPrivateEventRouter::ScreenIsLocked() { |
| 124 DispatchEvent(screenlock::OnChanged::kEventName, | 126 DispatchEvent(screenlock::OnChanged::kEventName, |
| 125 new base::FundamentalValue(true)); | 127 new base::FundamentalValue(true)); |
| 126 } | 128 } |
| 127 | 129 |
| 128 void ScreenlockPrivateEventRouter::ScreenIsUnlocked() { | 130 void ScreenlockPrivateEventRouter::ScreenIsUnlocked() { |
| 129 DispatchEvent(screenlock::OnChanged::kEventName, | 131 DispatchEvent(screenlock::OnChanged::kEventName, |
| 130 new base::FundamentalValue(false)); | 132 new base::FundamentalValue(false)); |
| 131 } | 133 } |
| 132 | 134 |
| 133 void ScreenlockPrivateEventRouter::DispatchEvent( | 135 void ScreenlockPrivateEventRouter::DispatchEvent( |
| 134 const std::string& event_name, | 136 const std::string& event_name, |
| 135 base::Value* arg) { | 137 base::Value* arg) { |
| 136 scoped_ptr<base::ListValue> args(new base::ListValue()); | 138 scoped_ptr<base::ListValue> args(new base::ListValue()); |
| 137 if (arg) | 139 if (arg) |
| 138 args->Append(arg); | 140 args->Append(arg); |
| 139 scoped_ptr<extensions::Event> event(new extensions::Event( | 141 scoped_ptr<extensions::Event> event(new extensions::Event( |
| 140 event_name, args.Pass())); | 142 event_name, args.Pass())); |
| 141 extensions::ExtensionSystem::Get(profile_)->event_router()-> | 143 extensions::ExtensionSystem::Get(browser_context_) |
| 142 BroadcastEvent(event.Pass()); | 144 ->event_router() |
| 145 ->BroadcastEvent(event.Pass()); |
| 143 } | 146 } |
| 144 | 147 |
| 145 static base::LazyInstance<extensions::ProfileKeyedAPIFactory< | 148 static base::LazyInstance<extensions::ProfileKeyedAPIFactory< |
| 146 ScreenlockPrivateEventRouter> > | 149 ScreenlockPrivateEventRouter> > |
| 147 g_factory = LAZY_INSTANCE_INITIALIZER; | 150 g_factory = LAZY_INSTANCE_INITIALIZER; |
| 148 | 151 |
| 149 // static | 152 // static |
| 150 extensions::ProfileKeyedAPIFactory<ScreenlockPrivateEventRouter>* | 153 extensions::ProfileKeyedAPIFactory<ScreenlockPrivateEventRouter>* |
| 151 ScreenlockPrivateEventRouter::GetFactoryInstance() { | 154 ScreenlockPrivateEventRouter::GetFactoryInstance() { |
| 152 return g_factory.Pointer(); | 155 return g_factory.Pointer(); |
| 153 } | 156 } |
| 154 | 157 |
| 155 void ScreenlockPrivateEventRouter::Shutdown() { | 158 void ScreenlockPrivateEventRouter::Shutdown() { |
| 156 chromeos::SessionManagerClient* session_manager = | 159 chromeos::SessionManagerClient* session_manager = |
| 157 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(); | 160 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(); |
| 158 if (session_manager->HasObserver(this)) | 161 if (session_manager->HasObserver(this)) |
| 159 session_manager->RemoveObserver(this); | 162 session_manager->RemoveObserver(this); |
| 160 } | 163 } |
| 161 | 164 |
| 162 void ScreenlockPrivateEventRouter::OnButtonClicked() { | 165 void ScreenlockPrivateEventRouter::OnButtonClicked() { |
| 163 DispatchEvent(screenlock::OnButtonClicked::kEventName, NULL); | 166 DispatchEvent(screenlock::OnButtonClicked::kEventName, NULL); |
| 164 } | 167 } |
| 165 | 168 |
| 166 } // namespace extensions | 169 } // namespace extensions |
| OLD | NEW |