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" |
15 #include "chrome/browser/tabs/tab_strip_model.h" | 16 #include "chrome/browser/tabs/tab_strip_model.h" |
16 #include "chrome/browser/ui/browser.h" | 17 #include "chrome/browser/ui/browser.h" |
17 #include "chrome/browser/ui/browser_navigator.h" | 18 #include "chrome/browser/ui/browser_navigator.h" |
18 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
19 #include "grit/chromium_strings.h" | 20 #include "grit/chromium_strings.h" |
20 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
21 #include "grit/theme_resources.h" | 22 #include "grit/theme_resources.h" |
22 #include "ui/base/l10n/l10n_util.h" | 23 #include "ui/base/l10n/l10n_util.h" |
23 | 24 |
24 namespace protector { | 25 namespace protector { |
25 | 26 |
26 // Session startup settings change tracked by Protector. | 27 // Session startup settings change tracked by Protector. |
27 class SessionStartupChange : public BasePrefsChange { | 28 class SessionStartupChange : public BasePrefsChange { |
28 public: | 29 public: |
29 SessionStartupChange(const SessionStartupPref& actual_startup_pref, | 30 SessionStartupChange(const SessionStartupPref& actual_startup_pref, |
30 const PinnedTabCodec::Tabs& actual_pinned_tabs, | 31 const StartupTabs& actual_pinned_tabs, |
31 const SessionStartupPref& backup_startup_pref, | 32 const SessionStartupPref& backup_startup_pref, |
32 const PinnedTabCodec::Tabs& backup_pinned_tabs); | 33 const StartupTabs& backup_pinned_tabs); |
33 | 34 |
34 // BaseSettingChange overrides: | 35 // BaseSettingChange overrides: |
35 virtual bool Init(Profile* profile) OVERRIDE; | 36 virtual bool Init(Profile* profile) OVERRIDE; |
36 virtual void Apply(Browser* browser) OVERRIDE; | 37 virtual void Apply(Browser* browser) OVERRIDE; |
37 virtual void Discard(Browser* browser) OVERRIDE; | 38 virtual void Discard(Browser* browser) OVERRIDE; |
38 virtual void Timeout() OVERRIDE; | 39 virtual void Timeout() OVERRIDE; |
39 virtual int GetBadgeIconID() const OVERRIDE; | 40 virtual int GetBadgeIconID() const OVERRIDE; |
40 virtual int GetMenuItemIconID() const OVERRIDE; | 41 virtual int GetMenuItemIconID() const OVERRIDE; |
41 virtual int GetBubbleIconID() const OVERRIDE; | 42 virtual int GetBubbleIconID() const OVERRIDE; |
42 virtual string16 GetBubbleTitle() const OVERRIDE; | 43 virtual string16 GetBubbleTitle() const OVERRIDE; |
43 virtual string16 GetBubbleMessage() const OVERRIDE; | 44 virtual string16 GetBubbleMessage() const OVERRIDE; |
44 virtual string16 GetApplyButtonText() const OVERRIDE; | 45 virtual string16 GetApplyButtonText() const OVERRIDE; |
45 virtual string16 GetDiscardButtonText() const OVERRIDE; | 46 virtual string16 GetDiscardButtonText() const OVERRIDE; |
46 virtual DisplayName GetApplyDisplayName() const OVERRIDE; | 47 virtual DisplayName GetApplyDisplayName() const OVERRIDE; |
47 virtual GURL GetNewSettingURL() const OVERRIDE; | 48 virtual GURL GetNewSettingURL() const OVERRIDE; |
48 | 49 |
49 private: | 50 private: |
50 virtual ~SessionStartupChange(); | 51 virtual ~SessionStartupChange(); |
51 | 52 |
52 // Returns the first URL that was added to the startup pages. Returns the | 53 // Returns the first URL that was added to the startup pages. Returns the |
53 // first startup URL if they haven't changed. Returns an empty URL if there | 54 // first startup URL if they haven't changed. Returns an empty URL if there |
54 // are no startup URLs. | 55 // are no startup URLs. |
55 GURL GetFirstNewURL() const; | 56 GURL GetFirstNewURL() const; |
56 | 57 |
57 // Opens all tabs in |tabs| and makes them pinned. | 58 // Opens all tabs in |tabs| and makes them pinned. |
58 void OpenPinnedTabs(Browser* browser, const PinnedTabCodec::Tabs& tabs); | 59 void OpenPinnedTabs(Browser* browser, const StartupTabs& tabs); |
59 | 60 |
60 const SessionStartupPref new_startup_pref_; | 61 const SessionStartupPref new_startup_pref_; |
61 const SessionStartupPref backup_startup_pref_; | 62 const SessionStartupPref backup_startup_pref_; |
62 const PinnedTabCodec::Tabs new_pinned_tabs_; | 63 const StartupTabs new_pinned_tabs_; |
63 const PinnedTabCodec::Tabs backup_pinned_tabs_; | 64 const StartupTabs backup_pinned_tabs_; |
64 | 65 |
65 DISALLOW_COPY_AND_ASSIGN(SessionStartupChange); | 66 DISALLOW_COPY_AND_ASSIGN(SessionStartupChange); |
66 }; | 67 }; |
67 | 68 |
68 SessionStartupChange::SessionStartupChange( | 69 SessionStartupChange::SessionStartupChange( |
69 const SessionStartupPref& actual_startup_pref, | 70 const SessionStartupPref& actual_startup_pref, |
70 const PinnedTabCodec::Tabs& actual_pinned_tabs, | 71 const StartupTabs& actual_pinned_tabs, |
71 const SessionStartupPref& backup_startup_pref, | 72 const SessionStartupPref& backup_startup_pref, |
72 const PinnedTabCodec::Tabs& backup_pinned_tabs) | 73 const StartupTabs& backup_pinned_tabs) |
73 : new_startup_pref_(actual_startup_pref), | 74 : new_startup_pref_(actual_startup_pref), |
74 backup_startup_pref_(backup_startup_pref), | 75 backup_startup_pref_(backup_startup_pref), |
75 new_pinned_tabs_(actual_pinned_tabs), | 76 new_pinned_tabs_(actual_pinned_tabs), |
76 backup_pinned_tabs_(backup_pinned_tabs) { | 77 backup_pinned_tabs_(backup_pinned_tabs) { |
77 UMA_HISTOGRAM_ENUMERATION( | 78 UMA_HISTOGRAM_ENUMERATION( |
78 kProtectorHistogramStartupSettingsChanged, | 79 kProtectorHistogramStartupSettingsChanged, |
79 actual_startup_pref.type, | 80 actual_startup_pref.type, |
80 SessionStartupPref::TYPE_COUNT); | 81 SessionStartupPref::TYPE_COUNT); |
81 } | 82 } |
82 | 83 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // First try to find a URL in new settings that is not present in backup. | 198 // First try to find a URL in new settings that is not present in backup. |
198 for (size_t i = 0; i < new_urls.size(); ++i) { | 199 for (size_t i = 0; i < new_urls.size(); ++i) { |
199 if (!old_urls.count(new_urls[i])) | 200 if (!old_urls.count(new_urls[i])) |
200 return new_urls[i]; | 201 return new_urls[i]; |
201 } | 202 } |
202 // Then fallback to the first of the current startup URLs - this means that | 203 // Then fallback to the first of the current startup URLs - this means that |
203 // URLs themselves haven't changed. | 204 // URLs themselves haven't changed. |
204 return new_urls[0]; | 205 return new_urls[0]; |
205 } | 206 } |
206 | 207 |
207 void SessionStartupChange::OpenPinnedTabs( | 208 void SessionStartupChange::OpenPinnedTabs(Browser* browser, |
208 Browser* browser, | 209 const StartupTabs& tabs) { |
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 PinnedTabCodec::Tabs& actual_pinned_tabs, | 223 const StartupTabs& actual_pinned_tabs, |
224 const SessionStartupPref& backup_startup_pref, | 224 const SessionStartupPref& backup_startup_pref, |
225 const PinnedTabCodec::Tabs& backup_pinned_tabs) { | 225 const StartupTabs& 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 |