OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "base/compiler_specific.h" | 6 #include "base/compiler_specific.h" |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "chrome/browser/prefs/session_startup_pref.h" | 10 #include "chrome/browser/prefs/session_startup_pref.h" |
11 #include "chrome/browser/protector/base_prefs_change.h" | 11 #include "chrome/browser/protector/base_prefs_change.h" |
12 #include "chrome/browser/protector/histograms.h" | 12 #include "chrome/browser/protector/histograms.h" |
13 #include "chrome/browser/protector/protector_service.h" | 13 #include "chrome/browser/protector/protector_service.h" |
14 #include "chrome/browser/protector/protector_service_factory.h" | 14 #include "chrome/browser/protector/protector_service_factory.h" |
15 #include "chrome/browser/tabs/pinned_tab_codec.h" | |
16 #include "chrome/browser/tabs/tab_strip_model.h" | 15 #include "chrome/browser/tabs/tab_strip_model.h" |
17 #include "chrome/browser/ui/browser.h" | 16 #include "chrome/browser/ui/browser.h" |
18 #include "chrome/browser/ui/browser_navigator.h" | 17 #include "chrome/browser/ui/browser_navigator.h" |
19 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
20 #include "grit/chromium_strings.h" | 19 #include "grit/chromium_strings.h" |
21 #include "grit/generated_resources.h" | 20 #include "grit/generated_resources.h" |
22 #include "grit/theme_resources.h" | 21 #include "grit/theme_resources.h" |
23 #include "ui/base/l10n/l10n_util.h" | 22 #include "ui/base/l10n/l10n_util.h" |
24 | 23 |
25 namespace protector { | 24 namespace protector { |
26 | 25 |
27 // Session startup settings change tracked by Protector. | 26 // Session startup settings change tracked by Protector. |
28 class SessionStartupChange : public BasePrefsChange { | 27 class SessionStartupChange : public BasePrefsChange { |
29 public: | 28 public: |
30 SessionStartupChange(const SessionStartupPref& actual_startup_pref, | 29 SessionStartupChange(const SessionStartupPref& actual_startup_pref, |
31 const StartupTabs& actual_pinned_tabs, | 30 const PinnedTabCodec::Tabs& actual_pinned_tabs, |
32 const SessionStartupPref& backup_startup_pref, | 31 const SessionStartupPref& backup_startup_pref, |
33 const StartupTabs& backup_pinned_tabs); | 32 const PinnedTabCodec::Tabs& backup_pinned_tabs); |
34 | 33 |
35 // BaseSettingChange overrides: | 34 // BaseSettingChange overrides: |
36 virtual bool Init(Profile* profile) OVERRIDE; | 35 virtual bool Init(Profile* profile) OVERRIDE; |
37 virtual void Apply(Browser* browser) OVERRIDE; | 36 virtual void Apply(Browser* browser) OVERRIDE; |
38 virtual void Discard(Browser* browser) OVERRIDE; | 37 virtual void Discard(Browser* browser) OVERRIDE; |
39 virtual void Timeout() OVERRIDE; | 38 virtual void Timeout() OVERRIDE; |
40 virtual int GetBadgeIconID() const OVERRIDE; | 39 virtual int GetBadgeIconID() const OVERRIDE; |
41 virtual int GetMenuItemIconID() const OVERRIDE; | 40 virtual int GetMenuItemIconID() const OVERRIDE; |
42 virtual int GetBubbleIconID() const OVERRIDE; | 41 virtual int GetBubbleIconID() const OVERRIDE; |
43 virtual string16 GetBubbleTitle() const OVERRIDE; | 42 virtual string16 GetBubbleTitle() const OVERRIDE; |
44 virtual string16 GetBubbleMessage() const OVERRIDE; | 43 virtual string16 GetBubbleMessage() const OVERRIDE; |
45 virtual string16 GetApplyButtonText() const OVERRIDE; | 44 virtual string16 GetApplyButtonText() const OVERRIDE; |
46 virtual string16 GetDiscardButtonText() const OVERRIDE; | 45 virtual string16 GetDiscardButtonText() const OVERRIDE; |
47 virtual DisplayName GetApplyDisplayName() const OVERRIDE; | 46 virtual DisplayName GetApplyDisplayName() const OVERRIDE; |
48 virtual GURL GetNewSettingURL() const OVERRIDE; | 47 virtual GURL GetNewSettingURL() const OVERRIDE; |
49 | 48 |
50 private: | 49 private: |
51 virtual ~SessionStartupChange(); | 50 virtual ~SessionStartupChange(); |
52 | 51 |
53 // Returns the first URL that was added to the startup pages. Returns the | 52 // Returns the first URL that was added to the startup pages. Returns the |
54 // first startup URL if they haven't changed. Returns an empty URL if there | 53 // first startup URL if they haven't changed. Returns an empty URL if there |
55 // are no startup URLs. | 54 // are no startup URLs. |
56 GURL GetFirstNewURL() const; | 55 GURL GetFirstNewURL() const; |
57 | 56 |
58 // Opens all tabs in |tabs| and makes them pinned. | 57 // Opens all tabs in |tabs| and makes them pinned. |
59 void OpenPinnedTabs(Browser* browser, const StartupTabs& tabs); | 58 void OpenPinnedTabs(Browser* browser, const PinnedTabCodec::Tabs& tabs); |
60 | 59 |
61 const SessionStartupPref new_startup_pref_; | 60 const SessionStartupPref new_startup_pref_; |
62 const SessionStartupPref backup_startup_pref_; | 61 const SessionStartupPref backup_startup_pref_; |
63 const StartupTabs new_pinned_tabs_; | 62 const PinnedTabCodec::Tabs new_pinned_tabs_; |
64 const StartupTabs backup_pinned_tabs_; | 63 const PinnedTabCodec::Tabs backup_pinned_tabs_; |
65 | 64 |
66 DISALLOW_COPY_AND_ASSIGN(SessionStartupChange); | 65 DISALLOW_COPY_AND_ASSIGN(SessionStartupChange); |
67 }; | 66 }; |
68 | 67 |
69 SessionStartupChange::SessionStartupChange( | 68 SessionStartupChange::SessionStartupChange( |
70 const SessionStartupPref& actual_startup_pref, | 69 const SessionStartupPref& actual_startup_pref, |
71 const StartupTabs& actual_pinned_tabs, | 70 const PinnedTabCodec::Tabs& actual_pinned_tabs, |
72 const SessionStartupPref& backup_startup_pref, | 71 const SessionStartupPref& backup_startup_pref, |
73 const StartupTabs& backup_pinned_tabs) | 72 const PinnedTabCodec::Tabs& backup_pinned_tabs) |
74 : new_startup_pref_(actual_startup_pref), | 73 : new_startup_pref_(actual_startup_pref), |
75 backup_startup_pref_(backup_startup_pref), | 74 backup_startup_pref_(backup_startup_pref), |
76 new_pinned_tabs_(actual_pinned_tabs), | 75 new_pinned_tabs_(actual_pinned_tabs), |
77 backup_pinned_tabs_(backup_pinned_tabs) { | 76 backup_pinned_tabs_(backup_pinned_tabs) { |
78 UMA_HISTOGRAM_ENUMERATION( | 77 UMA_HISTOGRAM_ENUMERATION( |
79 kProtectorHistogramStartupSettingsChanged, | 78 kProtectorHistogramStartupSettingsChanged, |
80 actual_startup_pref.type, | 79 actual_startup_pref.type, |
81 SessionStartupPref::TYPE_COUNT); | 80 SessionStartupPref::TYPE_COUNT); |
82 } | 81 } |
83 | 82 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 // First try to find a URL in new settings that is not present in backup. | 197 // First try to find a URL in new settings that is not present in backup. |
199 for (size_t i = 0; i < new_urls.size(); ++i) { | 198 for (size_t i = 0; i < new_urls.size(); ++i) { |
200 if (!old_urls.count(new_urls[i])) | 199 if (!old_urls.count(new_urls[i])) |
201 return new_urls[i]; | 200 return new_urls[i]; |
202 } | 201 } |
203 // Then fallback to the first of the current startup URLs - this means that | 202 // Then fallback to the first of the current startup URLs - this means that |
204 // URLs themselves haven't changed. | 203 // URLs themselves haven't changed. |
205 return new_urls[0]; | 204 return new_urls[0]; |
206 } | 205 } |
207 | 206 |
208 void SessionStartupChange::OpenPinnedTabs(Browser* browser, | 207 void SessionStartupChange::OpenPinnedTabs( |
209 const StartupTabs& tabs) { | 208 Browser* browser, |
| 209 const PinnedTabCodec::Tabs& tabs) { |
210 for (size_t i = 0; i < tabs.size(); ++i) { | 210 for (size_t i = 0; i < tabs.size(); ++i) { |
211 browser::NavigateParams params(browser, tabs[i].url, | 211 browser::NavigateParams params(browser, tabs[i].url, |
212 content::PAGE_TRANSITION_START_PAGE); | 212 content::PAGE_TRANSITION_START_PAGE); |
213 params.disposition = NEW_BACKGROUND_TAB; | 213 params.disposition = NEW_BACKGROUND_TAB; |
214 params.tabstrip_index = -1; | 214 params.tabstrip_index = -1; |
215 params.tabstrip_add_types = TabStripModel::ADD_PINNED; | 215 params.tabstrip_add_types = TabStripModel::ADD_PINNED; |
216 params.extension_app_id = tabs[i].app_id; | 216 params.extension_app_id = tabs[i].app_id; |
217 browser::Navigate(¶ms); | 217 browser::Navigate(¶ms); |
218 } | 218 } |
219 } | 219 } |
220 | 220 |
221 BaseSettingChange* CreateSessionStartupChange( | 221 BaseSettingChange* CreateSessionStartupChange( |
222 const SessionStartupPref& actual_startup_pref, | 222 const SessionStartupPref& actual_startup_pref, |
223 const StartupTabs& actual_pinned_tabs, | 223 const PinnedTabCodec::Tabs& actual_pinned_tabs, |
224 const SessionStartupPref& backup_startup_pref, | 224 const SessionStartupPref& backup_startup_pref, |
225 const StartupTabs& backup_pinned_tabs) { | 225 const PinnedTabCodec::Tabs& backup_pinned_tabs) { |
226 return new SessionStartupChange(actual_startup_pref, actual_pinned_tabs, | 226 return new SessionStartupChange(actual_startup_pref, actual_pinned_tabs, |
227 backup_startup_pref, backup_pinned_tabs); | 227 backup_startup_pref, backup_pinned_tabs); |
228 } | 228 } |
229 | 229 |
230 } // namespace protector | 230 } // namespace protector |
OLD | NEW |