Chromium Code Reviews| Index: chrome/browser/ui/views/ash/chrome_shell_delegate.cc |
| diff --git a/chrome/browser/ui/views/ash/chrome_shell_delegate.cc b/chrome/browser/ui/views/ash/chrome_shell_delegate.cc |
| index 9901c4ce283e92cc06513d10ab36405b766d82ed..1802c737a00ba49062a78db9ab00daaf49274c2e 100644 |
| --- a/chrome/browser/ui/views/ash/chrome_shell_delegate.cc |
| +++ b/chrome/browser/ui/views/ash/chrome_shell_delegate.cc |
| @@ -34,7 +34,9 @@ |
| #include "ui/aura/window.h" |
| #if defined(OS_CHROMEOS) |
| +#include "ash/accelerators/accelerator_controller.h" |
| #include "base/chromeos/chromeos_version.h" |
| +#include "chrome/browser/browser_process.h" |
| #include "chrome/browser/chromeos/accessibility/accessibility_util.h" |
| #include "chrome/browser/chromeos/background/ash_user_wallpaper_delegate.h" |
| #include "chrome/browser/chromeos/extensions/file_manager_util.h" |
| @@ -42,9 +44,12 @@ |
| #include "chrome/browser/chromeos/login/user_manager.h" |
| #include "chrome/browser/chromeos/login/webui_login_display_host.h" |
| #include "chrome/browser/chromeos/system/ash_system_tray_delegate.h" |
| +#include "chrome/browser/prefs/pref_service.h" |
| +#include "chrome/browser/ui/views/ash/screenshot_taker.h" |
| #include "chrome/browser/ui/views/keyboard_overlay_dialog_view.h" |
| #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
| #include "chrome/browser/ui/webui/chromeos/mobile_setup_dialog.h" |
| +#include "chrome/common/pref_names.h" |
| #include "chromeos/dbus/dbus_thread_manager.h" |
| #include "chromeos/dbus/power_manager_client.h" |
| #endif |
| @@ -74,6 +79,8 @@ ChromeShellDelegate::ChromeShellDelegate() |
| this, |
| chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, |
| content::NotificationService::AllSources()); |
| + pref_registrar_.Init(g_browser_process->local_state()); |
| + pref_registrar_.Add(prefs::kDisableScreenshots, this); |
| #endif |
| } |
| @@ -331,6 +338,11 @@ void ChromeShellDelegate::Observe(int type, |
| case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED: |
| ash::Shell::GetInstance()->CreateLauncher(); |
| break; |
| + case chrome::NOTIFICATION_PREF_CHANGED: |
| + DCHECK_EQ(prefs::kDisableScreenshots, |
| + *content::Details<std::string>(details).ptr()); |
|
Mattias Nissler (ping if slow)
2012/07/09 09:30:12
align parameters at (
qfel
2012/07/11 12:34:49
Done.
|
| + UpdateScreenshotDelegate(); |
| + break; |
| default: |
| NOTREACHED() << "Unexpected notification " << type; |
| } |
| @@ -339,3 +351,25 @@ void ChromeShellDelegate::Observe(int type, |
| NOTREACHED() << "Unexpected notification " << type; |
| #endif |
| } |
| + |
| +#if defined(OS_CHROMEOS) |
| +void ChromeShellDelegate::RegisterLocalPrefs(PrefService* service) { |
| + service->RegisterBooleanPref(prefs::kDisableScreenshots, false); |
| +} |
| + |
| +void ChromeShellDelegate::RegisterUserPrefs(PrefService* service) { |
| + service->RegisterBooleanPref(prefs::kDisableScreenshots, false, |
| + PrefService::UNSYNCABLE_PREF); |
|
Mattias Nissler (ping if slow)
2012/07/09 09:30:12
align at (
qfel
2012/07/11 12:34:49
Done.
|
| +} |
| + |
| +void ChromeShellDelegate::UpdateScreenshotDelegate() { |
| + ash::AcceleratorController* accelerator_controller = |
| + ash::Shell::GetInstance()->accelerator_controller(); |
| + PrefService* service = g_browser_process->local_state(); |
| + DCHECK(service); |
| + scoped_ptr<ash::ScreenshotDelegate> delegate; |
| + if (!service->GetBoolean(prefs::kDisableScreenshots)) |
| + delegate.reset(new ScreenshotTaker); |
| + accelerator_controller->SetScreenshotDelegate(delegate.Pass()); |
| +} |
| +#endif |