Index: chrome/browser/chromeos/locale_change_guard.h |
diff --git a/chrome/browser/chromeos/locale_change_guard.h b/chrome/browser/chromeos/locale_change_guard.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ed6fa430d947df01f8dafa0b36c1a0618fbdc55a |
--- /dev/null |
+++ b/chrome/browser/chromeos/locale_change_guard.h |
@@ -0,0 +1,61 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ |
+#define CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ |
+#pragma once |
+ |
+#include "base/lazy_instance.h" |
+#include "base/scoped_ptr.h" |
+#include "chrome/browser/chromeos/notifications/system_notification.h" |
+#include "chrome/browser/notifications/notification_delegate.h" |
+#include "chrome/browser/profiles/profile.h" |
+ |
+class ListValue; |
+class TabContents; |
+ |
+namespace chromeos { |
+ |
+class LocaleChangeGuard { |
+ public: |
+ // When called first time for user profile: performs check whether |
+ // locale has been changed automatically recently (based on synchronized user |
+ // preference). If so: shows notification that allows user to revert change. |
+ // On subsequent calls: does nothing (hopefully fast). |
+ static void Check(TabContents* tab_contents); |
+ |
+ private: |
+ class Delegate : public NotificationDelegate { |
+ public: |
+ explicit Delegate(chromeos::LocaleChangeGuard* master) : master_(master) {} |
+ void Close(bool by_user); |
+ void Display() {} |
+ void Error() {} |
+ void Click() {} |
+ std::string id() const; |
+ |
+ private: |
+ chromeos::LocaleChangeGuard* master_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(Delegate); |
+ }; |
+ |
+ LocaleChangeGuard(); |
+ void CheckLocaleChange(TabContents* tab_contents); |
+ void RevertLocaleChange(const ListValue* list); |
+ void AcceptLocaleChange(); |
+ |
+ std::string from_locale_; |
+ std::string to_locale_; |
+ ProfileId profile_id_; |
+ TabContents* tab_contents_; |
+ scoped_ptr<chromeos::SystemNotification> note_; |
+ bool reverted_; |
+ |
+ friend struct base::DefaultLazyInstanceTraits<LocaleChangeGuard>; |
+}; |
+ |
+} // namespace chromeos |
+ |
+#endif // CHROME_BROWSER_CHROMEOS_LOCALE_CHANGE_GUARD_H_ |