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..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 |