Add abhijeet.k@samsung.com to AUTHORS list.
[chromium-blink-merge.git] / components / dom_distiller / core / distilled_page_prefs.cc
blob01d1a07c96cea313b4f07fdd378af3febad7fc2f
1 // Copyright 2014 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.
5 #include "components/dom_distiller/core/distilled_page_prefs.h"
7 #include "base/bind.h"
8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop/message_loop.h"
10 #include "base/observer_list.h"
11 #include "base/prefs/pref_service.h"
12 #include "components/pref_registry/pref_registry_syncable.h"
14 namespace {
16 // Path to the integer corresponding to user's preference theme.
17 const char kFontPref[] = "dom_distiller.font_family";
18 // Path to the integer corresponding to user's preference font family.
19 const char kThemePref[] = "dom_distiller.theme";
22 namespace dom_distiller {
24 DistilledPagePrefs::DistilledPagePrefs(PrefService* pref_service)
25 : pref_service_(pref_service), weak_ptr_factory_(this) {
28 DistilledPagePrefs::~DistilledPagePrefs() {
31 // static
32 void DistilledPagePrefs::RegisterProfilePrefs(
33 user_prefs::PrefRegistrySyncable* registry) {
34 registry->RegisterIntegerPref(
35 kThemePref,
36 DistilledPagePrefs::LIGHT,
37 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
38 registry->RegisterIntegerPref(
39 kFontPref,
40 DistilledPagePrefs::SANS_SERIF,
41 user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
44 void DistilledPagePrefs::SetFontFamily(
45 DistilledPagePrefs::FontFamily new_font_family) {
46 pref_service_->SetInteger(kFontPref, new_font_family);
47 base::MessageLoop::current()->PostTask(
48 FROM_HERE,
49 base::Bind(&DistilledPagePrefs::NotifyOnChangeFontFamily,
50 weak_ptr_factory_.GetWeakPtr(),
51 new_font_family));
54 DistilledPagePrefs::FontFamily DistilledPagePrefs::GetFontFamily() {
55 int font_family = pref_service_->GetInteger(kFontPref);
56 if (font_family < 0 || font_family >= DistilledPagePrefs::FONT_FAMILY_COUNT) {
57 // Persisted data was incorrect, trying to clean it up by storing the
58 // default.
59 SetFontFamily(DistilledPagePrefs::SANS_SERIF);
60 return DistilledPagePrefs::SANS_SERIF;
62 return static_cast<FontFamily>(font_family);
65 void DistilledPagePrefs::SetTheme(DistilledPagePrefs::Theme new_theme) {
66 pref_service_->SetInteger(kThemePref, new_theme);
67 base::MessageLoop::current()->PostTask(
68 FROM_HERE,
69 base::Bind(&DistilledPagePrefs::NotifyOnChangeTheme,
70 weak_ptr_factory_.GetWeakPtr(),
71 new_theme));
74 DistilledPagePrefs::Theme DistilledPagePrefs::GetTheme() {
75 int theme = pref_service_->GetInteger(kThemePref);
76 if (theme < 0 || theme >= DistilledPagePrefs::THEME_COUNT) {
77 // Persisted data was incorrect, trying to clean it up by storing the
78 // default.
79 SetTheme(DistilledPagePrefs::LIGHT);
80 return DistilledPagePrefs::LIGHT;
82 return static_cast<Theme>(theme);
85 void DistilledPagePrefs::AddObserver(Observer* obs) {
86 observers_.AddObserver(obs);
89 void DistilledPagePrefs::RemoveObserver(Observer* obs) {
90 observers_.RemoveObserver(obs);
93 void DistilledPagePrefs::NotifyOnChangeFontFamily(
94 DistilledPagePrefs::FontFamily new_font_family) {
95 FOR_EACH_OBSERVER(Observer, observers_, OnChangeFontFamily(new_font_family));
98 void DistilledPagePrefs::NotifyOnChangeTheme(
99 DistilledPagePrefs::Theme new_theme) {
100 FOR_EACH_OBSERVER(Observer, observers_, OnChangeTheme(new_theme));
103 } // namespace dom_distiller