| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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 "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" | 7 #include "chrome/browser/ui/webui/ntp/new_tab_ui.h" |
| 8 | 8 |
| 9 #include <set> | |
| 10 | |
| 11 #include "base/bind.h" | 9 #include "base/bind.h" |
| 12 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 13 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 14 #include "base/i18n/rtl.h" | 12 #include "base/i18n/rtl.h" |
| 15 #include "base/memory/singleton.h" | 13 #include "base/memory/singleton.h" |
| 16 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
| 17 #include "base/string_number_conversions.h" | 15 #include "base/string_number_conversions.h" |
| 18 #include "base/threading/thread.h" | 16 #include "base/threading/thread.h" |
| 19 #include "base/utf_string_conversions.h" | 17 #include "base/utf_string_conversions.h" |
| 20 #include "chrome/browser/defaults.h" | 18 #include "chrome/browser/defaults.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 } // namespace | 65 } // namespace |
| 68 | 66 |
| 69 /////////////////////////////////////////////////////////////////////////////// | 67 /////////////////////////////////////////////////////////////////////////////// |
| 70 // NewTabUI | 68 // NewTabUI |
| 71 | 69 |
| 72 NewTabUI::NewTabUI(TabContents* contents) | 70 NewTabUI::NewTabUI(TabContents* contents) |
| 73 : ChromeWebUI(contents) { | 71 : ChromeWebUI(contents) { |
| 74 // Override some options on the Web UI. | 72 // Override some options on the Web UI. |
| 75 hide_favicon_ = true; | 73 hide_favicon_ = true; |
| 76 | 74 |
| 77 if (!NTP4BookmarkFeaturesEnabled() && | |
| 78 GetProfile()->GetPrefs()->GetBoolean(prefs::kEnableBookmarkBar) && | |
| 79 browser_defaults::bookmarks_enabled) { | |
| 80 set_force_bookmark_bar_visible(true); | |
| 81 } | |
| 82 | |
| 83 focus_location_bar_by_default_ = true; | 75 focus_location_bar_by_default_ = true; |
| 84 should_hide_url_ = true; | 76 should_hide_url_ = true; |
| 85 overridden_title_ = l10n_util::GetStringUTF16(IDS_NEW_TAB_TITLE); | 77 overridden_title_ = l10n_util::GetStringUTF16(IDS_NEW_TAB_TITLE); |
| 86 | 78 |
| 87 // We count all link clicks as AUTO_BOOKMARK, so that site can be ranked more | 79 // We count all link clicks as AUTO_BOOKMARK, so that site can be ranked more |
| 88 // highly. Note this means we're including clicks on not only most visited | 80 // highly. Note this means we're including clicks on not only most visited |
| 89 // thumbnails, but also clicks on recently bookmarked. | 81 // thumbnails, but also clicks on recently bookmarked. |
| 90 link_transition_type_ = PageTransition::AUTO_BOOKMARK; | 82 link_transition_type_ = PageTransition::AUTO_BOOKMARK; |
| 91 | 83 |
| 92 if (!GetProfile()->IsOffTheRecord()) { | 84 if (!GetProfile()->IsOffTheRecord()) { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 122 NewTabHTMLSource* html_source = | 114 NewTabHTMLSource* html_source = |
| 123 new NewTabHTMLSource(GetProfile()->GetOriginalProfile()); | 115 new NewTabHTMLSource(GetProfile()->GetOriginalProfile()); |
| 124 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); | 116 Profile* profile = Profile::FromBrowserContext(contents->browser_context()); |
| 125 profile->GetChromeURLDataManager()->AddDataSource(html_source); | 117 profile->GetChromeURLDataManager()->AddDataSource(html_source); |
| 126 | 118 |
| 127 // Listen for theme installation. | 119 // Listen for theme installation. |
| 128 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, | 120 registrar_.Add(this, chrome::NOTIFICATION_BROWSER_THEME_CHANGED, |
| 129 Source<ThemeService>( | 121 Source<ThemeService>( |
| 130 ThemeServiceFactory::GetForProfile(GetProfile()))); | 122 ThemeServiceFactory::GetForProfile(GetProfile()))); |
| 131 // Listen for bookmark bar visibility changes. | 123 // Listen for bookmark bar visibility changes. |
| 132 registrar_.Add(this, | 124 pref_change_registrar_.Init(GetProfile()->GetPrefs()); |
| 133 chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED, | 125 pref_change_registrar_.Add(prefs::kShowBookmarkBar, this); |
| 134 NotificationService::AllSources()); | |
| 135 } | 126 } |
| 136 | 127 |
| 137 NewTabUI::~NewTabUI() { | 128 NewTabUI::~NewTabUI() { |
| 138 } | 129 } |
| 139 | 130 |
| 140 // The timer callback. If enough time has elapsed since the last paint | 131 // The timer callback. If enough time has elapsed since the last paint |
| 141 // message, we say we're done painting; otherwise, we keep waiting. | 132 // message, we say we're done painting; otherwise, we keep waiting. |
| 142 void NewTabUI::PaintTimeout() { | 133 void NewTabUI::PaintTimeout() { |
| 143 // The amount of time there must be no painting for us to consider painting | 134 // The amount of time there must be no painting for us to consider painting |
| 144 // finished. Observed times are in the ~1200ms range on Windows. | 135 // finished. Observed times are in the ~1200ms range on Windows. |
| (...skipping 26 matching lines...) Expand all Loading... |
| 171 | 162 |
| 172 } | 163 } |
| 173 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) { | 164 void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) { |
| 174 StartTimingPaint(render_view_host); | 165 StartTimingPaint(render_view_host); |
| 175 } | 166 } |
| 176 | 167 |
| 177 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) { | 168 void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) { |
| 178 StartTimingPaint(render_view_host); | 169 StartTimingPaint(render_view_host); |
| 179 } | 170 } |
| 180 | 171 |
| 172 bool NewTabUI::CanShowBookmarkBar() const { |
| 173 PrefService* prefs = GetProfile()->GetPrefs(); |
| 174 bool disabled_by_policy = |
| 175 prefs->IsManagedPreference(prefs::kShowBookmarkBar) && |
| 176 !prefs->GetBoolean(prefs::kShowBookmarkBar); |
| 177 return |
| 178 browser_defaults::bookmarks_enabled && |
| 179 !disabled_by_policy && |
| 180 !NTP4BookmarkFeaturesEnabled(); |
| 181 } |
| 182 |
| 181 void NewTabUI::Observe(int type, | 183 void NewTabUI::Observe(int type, |
| 182 const NotificationSource& source, | 184 const NotificationSource& source, |
| 183 const NotificationDetails& details) { | 185 const NotificationDetails& details) { |
| 184 switch (type) { | 186 switch (type) { |
| 185 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { | 187 case chrome::NOTIFICATION_BROWSER_THEME_CHANGED: { |
| 186 InitializeCSSCaches(); | 188 InitializeCSSCaches(); |
| 187 ListValue args; | 189 ListValue args; |
| 188 args.Append(Value::CreateStringValue( | 190 args.Append(Value::CreateStringValue( |
| 189 ThemeServiceFactory::GetForProfile(GetProfile())->HasCustomImage( | 191 ThemeServiceFactory::GetForProfile(GetProfile())->HasCustomImage( |
| 190 IDR_THEME_NTP_ATTRIBUTION) ? | 192 IDR_THEME_NTP_ATTRIBUTION) ? |
| 191 "true" : "false")); | 193 "true" : "false")); |
| 192 CallJavascriptFunction("themeChanged", args); | 194 CallJavascriptFunction("themeChanged", args); |
| 193 break; | 195 break; |
| 194 } | 196 } |
| 195 case chrome::NOTIFICATION_BOOKMARK_BAR_VISIBILITY_PREF_CHANGED: { | 197 case chrome::NOTIFICATION_PREF_CHANGED: { |
| 196 if (GetProfile()->GetPrefs()->IsManagedPreference( | 198 const std::string& pref_name = *Details<std::string>(details).ptr(); |
| 197 prefs::kEnableBookmarkBar)) { | 199 if (pref_name == prefs::kShowBookmarkBar) { |
| 198 break; | 200 if (!NTP4Enabled() && CanShowBookmarkBar()) { |
| 199 } | 201 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar)) |
| 200 if (!NTP4Enabled()) { | 202 CallJavascriptFunction("bookmarkBarAttached"); |
| 201 if (GetProfile()->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar)) | 203 else |
| 202 CallJavascriptFunction("bookmarkBarAttached"); | 204 CallJavascriptFunction("bookmarkBarDetached"); |
| 203 else | 205 } |
| 204 CallJavascriptFunction("bookmarkBarDetached"); | 206 } else { |
| 207 NOTREACHED(); |
| 205 } | 208 } |
| 206 break; | 209 break; |
| 207 } | 210 } |
| 208 case content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT: { | 211 case content::NOTIFICATION_RENDER_WIDGET_HOST_DID_PAINT: { |
| 209 last_paint_ = base::TimeTicks::Now(); | 212 last_paint_ = base::TimeTicks::Now(); |
| 210 break; | 213 break; |
| 211 } | 214 } |
| 212 default: | 215 default: |
| 213 CHECK(false) << "Unexpected notification: " << type; | 216 CHECK(false) << "Unexpected notification: " << type; |
| 214 } | 217 } |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 334 SendResponse(request_id, html_bytes); | 337 SendResponse(request_id, html_bytes); |
| 335 } | 338 } |
| 336 | 339 |
| 337 std::string NewTabUI::NewTabHTMLSource::GetMimeType(const std::string&) const { | 340 std::string NewTabUI::NewTabHTMLSource::GetMimeType(const std::string&) const { |
| 338 return "text/html"; | 341 return "text/html"; |
| 339 } | 342 } |
| 340 | 343 |
| 341 bool NewTabUI::NewTabHTMLSource::ShouldReplaceExistingSource() const { | 344 bool NewTabUI::NewTabHTMLSource::ShouldReplaceExistingSource() const { |
| 342 return false; | 345 return false; |
| 343 } | 346 } |
| OLD | NEW |