1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ 6#define CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ 7#pragma once 8 9#include <string> 10 11#include "base/lazy_instance.h" 12#include "base/memory/scoped_ptr.h" 13#include "chrome/browser/chromeos/notifications/system_notification.h" 14#include "content/common/notification_observer.h" 15#include "content/common/notification_registrar.h" 16#include "content/common/notification_type.h" 17 18class ListValue; 19class NotificationDetails; 20class NotificationSource; 21class Profile; 22 23namespace chromeos { 24 25// Performs check whether locale has been changed automatically recently 26// (based on synchronized user preference). If so: shows notification that 27// allows user to revert change. 28class LocaleChangeGuard : public NotificationObserver { 29 public: 30 explicit LocaleChangeGuard(Profile* profile); 31 32 // Called just before changing locale. 33 void PrepareChangingLocale( 34 const std::string& from_locale, const std::string& to_locale); 35 36 // Called after login. 37 void OnLogin(); 38 39 private: 40 class Delegate; 41 42 void RevertLocaleChange(const ListValue* list); 43 void AcceptLocaleChange(); 44 void Check(); 45 46 // NotificationObserver implementation. 47 virtual void Observe(NotificationType type, 48 const NotificationSource& source, 49 const NotificationDetails& details); 50 51 std::string from_locale_; 52 std::string to_locale_; 53 Profile* profile_; 54 scoped_ptr<chromeos::SystemNotification> note_; 55 bool reverted_; 56 NotificationRegistrar registrar_; 57 58 // We want to show locale change notification in previous language however 59 // we cannot directly load strings for non-current locale. So we cache 60 // messages before locale change. 61 string16 title_text_; 62 string16 message_text_; 63 string16 revert_link_text_; 64}; 65 66} // namespace chromeos 67 68#endif // CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ 69