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..2f1389a234de8baf78183bf0f29cbc5ba49df1b4 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,11 +44,15 @@ |
#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" |
+#include "content/public/browser/browser_thread.h" |
#endif |
namespace { |
@@ -74,6 +80,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 +339,11 @@ void ChromeShellDelegate::Observe(int type, |
case chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED: |
ash::Shell::GetInstance()->CreateLauncher(); |
break; |
+ case chrome::NOTIFICATION_PREF_CHANGED: |
+ DCHECK(prefs::kDisableScreenshots == |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
DCHECK_EQ
qfel
2012/07/06 17:00:39
Done
|
+ *content::Details<std::string>(details).ptr()); |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
4 spaces indentation after line breaks
qfel
2012/07/06 17:00:39
Done
|
+ UpdateScreenshotDelegate(); |
+ break; |
default: |
NOTREACHED() << "Unexpected notification " << type; |
} |
@@ -339,3 +352,20 @@ void ChromeShellDelegate::Observe(int type, |
NOTREACHED() << "Unexpected notification " << type; |
#endif |
} |
+ |
+#if defined(OS_CHROMEOS) |
+void ChromeShellDelegate::UpdateScreenshotDelegate() |
+{ |
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
I don't think we need this here, because the class
qfel
2012/07/06 17:00:39
Done
|
+ ash::AcceleratorController* accelerator_controller = |
+ ash::Shell::GetInstance()->accelerator_controller(); |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
indentation
qfel
2012/07/06 17:00:39
Done
|
+ PrefService* service = g_browser_process->local_state(); |
+ DCHECK(service); |
+ if (service->GetBoolean(prefs::kDisableScreenshots)) |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
add curlies for multi-line block
qfel
2012/07/06 17:00:39
Done.
|
+ accelerator_controller->SetScreenshotDelegate( |
+ scoped_ptr<ash::ScreenshotDelegate>()); |
+ else |
+ accelerator_controller->SetScreenshotDelegate( |
+ scoped_ptr<ash::ScreenshotDelegate>(new ScreenshotTaker).Pass()); |
Mattias Nissler (ping if slow)
2012/07/06 15:15:52
Maybe this is shorter:
scoped_ptr<ash::Screenshot
qfel
2012/07/06 17:00:39
Done.
|
+} |
+#endif |