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 |