| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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/dom_ui/new_tab_ui.h" | 7 #include "chrome/browser/dom_ui/new_tab_ui.h" |
| 8 | 8 |
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/file_util.h" |
| 12 #include "base/histogram.h" | 13 #include "base/histogram.h" |
| 13 #include "base/string_piece.h" | 14 #include "base/string_piece.h" |
| 14 #include "chrome/browser/bookmarks/bookmark_model.h" | 15 #include "chrome/browser/bookmarks/bookmark_model.h" |
| 15 #include "chrome/browser/bookmarks/bookmark_utils.h" | 16 #include "chrome/browser/bookmarks/bookmark_utils.h" |
| 16 #include "chrome/browser/browser.h" | 17 #include "chrome/browser/browser.h" |
| 17 #include "chrome/browser/browser_process.h" | 18 #include "chrome/browser/browser_process.h" |
| 18 #include "chrome/browser/dom_ui/dom_ui_favicon_source.h" | 19 #include "chrome/browser/dom_ui/dom_ui_favicon_source.h" |
| 19 #include "chrome/browser/dom_ui/dom_ui_thumbnail_source.h" | 20 #include "chrome/browser/dom_ui/dom_ui_thumbnail_source.h" |
| 20 #include "chrome/browser/dom_ui/dom_ui_theme_source.h" | 21 #include "chrome/browser/dom_ui/dom_ui_theme_source.h" |
| 21 #include "chrome/browser/dom_ui/downloads_dom_handler.h" | 22 #include "chrome/browser/dom_ui/downloads_dom_handler.h" |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 | 193 |
| 193 virtual std::string GetMimeType(const std::string&) const { | 194 virtual std::string GetMimeType(const std::string&) const { |
| 194 return "text/html"; | 195 return "text/html"; |
| 195 } | 196 } |
| 196 | 197 |
| 197 // Setters and getters for first_view. | 198 // Setters and getters for first_view. |
| 198 static void set_first_view(bool first_view) { first_view_ = first_view; } | 199 static void set_first_view(bool first_view) { first_view_ = first_view; } |
| 199 static bool first_view() { return first_view_; } | 200 static bool first_view() { return first_view_; } |
| 200 | 201 |
| 201 private: | 202 private: |
| 203 // In case a file path to the new new tab page was provided this tries to load |
| 204 // the file and returns the file content if successful. This returns an empty |
| 205 // string in case of failure. |
| 206 static std::string GetNewNewTabFromCommandLine(); |
| 207 |
| 202 // Whether this is the is the first viewing of the new tab page and | 208 // Whether this is the is the first viewing of the new tab page and |
| 203 // we think it is the user's startup page. | 209 // we think it is the user's startup page. |
| 204 static bool first_view_; | 210 static bool first_view_; |
| 205 | 211 |
| 206 DISALLOW_COPY_AND_ASSIGN(NewTabHTMLSource); | 212 DISALLOW_COPY_AND_ASSIGN(NewTabHTMLSource); |
| 207 }; | 213 }; |
| 208 | 214 |
| 209 bool NewTabHTMLSource::first_view_ = true; | 215 bool NewTabHTMLSource::first_view_ = true; |
| 210 | 216 |
| 211 NewTabHTMLSource::NewTabHTMLSource() | 217 NewTabHTMLSource::NewTabHTMLSource() |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 SetFontAndTextDirection(&localized_strings); | 282 SetFontAndTextDirection(&localized_strings); |
| 277 | 283 |
| 278 // Let the tab know whether it's the first tab being viewed. | 284 // Let the tab know whether it's the first tab being viewed. |
| 279 localized_strings.SetString(L"firstview", | 285 localized_strings.SetString(L"firstview", |
| 280 first_view_ ? L"true" : std::wstring()); | 286 first_view_ ? L"true" : std::wstring()); |
| 281 first_view_ = false; | 287 first_view_ = false; |
| 282 | 288 |
| 283 #ifdef CHROME_PERSONALIZATION | 289 #ifdef CHROME_PERSONALIZATION |
| 284 localized_strings.SetString(L"p13nsrc", Personalization::GetNewTabSource()); | 290 localized_strings.SetString(L"p13nsrc", Personalization::GetNewTabSource()); |
| 285 #endif | 291 #endif |
| 286 static const StringPiece new_tab_html( | 292 |
| 287 ResourceBundle::GetSharedInstance().GetRawDataResource( | 293 // In case we have the new new tab page enabled we first try to read the file |
| 288 NewTabUI::EnableNewNewTabPage() ? | 294 // provided on the command line. If that fails we just get the resource from |
| 289 IDR_NEW_NEW_TAB_HTML : IDR_NEW_TAB_HTML)); | 295 // the resource bundle. |
| 296 StringPiece new_tab_html; |
| 297 std::string new_tab_html_str; |
| 298 if (NewTabUI::EnableNewNewTabPage()) { |
| 299 new_tab_html_str = GetNewNewTabFromCommandLine(); |
| 300 |
| 301 if (!new_tab_html_str.empty()) { |
| 302 new_tab_html = StringPiece(new_tab_html_str); |
| 303 } else { |
| 304 // Use the new new tab page from the resource bundle. |
| 305 new_tab_html = ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 306 IDR_NEW_NEW_TAB_HTML); |
| 307 } |
| 308 } else { |
| 309 // Use the default new tab page resource. |
| 310 new_tab_html = ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 311 IDR_NEW_TAB_HTML); |
| 312 } |
| 290 | 313 |
| 291 const std::string full_html = jstemplate_builder::GetTemplateHtml( | 314 const std::string full_html = jstemplate_builder::GetTemplateHtml( |
| 292 new_tab_html, &localized_strings, "t" /* template root node id */); | 315 new_tab_html, &localized_strings, "t" /* template root node id */); |
| 293 | 316 |
| 294 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); | 317 scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); |
| 295 html_bytes->data.resize(full_html.size()); | 318 html_bytes->data.resize(full_html.size()); |
| 296 std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); | 319 std::copy(full_html.begin(), full_html.end(), html_bytes->data.begin()); |
| 297 | 320 |
| 298 SendResponse(request_id, html_bytes); | 321 SendResponse(request_id, html_bytes); |
| 299 } | 322 } |
| 300 | 323 |
| 324 // static |
| 325 std::string NewTabHTMLSource::GetNewNewTabFromCommandLine() { |
| 326 const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| 327 const std::wstring file_path_wstring = command_line->GetSwitchValue( |
| 328 switches::kNewNewTabPage); |
| 329 |
| 330 #if defined(OS_WIN) |
| 331 const FilePath::StringType file_path = file_path_wstring; |
| 332 #else |
| 333 const FilePath::StringType file_path = WideToASCII(file_path_wstring); |
| 334 #endif |
| 335 |
| 336 if (!file_path.empty()) { |
| 337 std::string file_contents; |
| 338 if (file_util::ReadFileToString(FilePath(file_path), &file_contents)) |
| 339 return file_contents; |
| 340 } |
| 341 |
| 342 return std::string(); |
| 343 } |
| 344 |
| 301 /////////////////////////////////////////////////////////////////////////////// | 345 /////////////////////////////////////////////////////////////////////////////// |
| 302 // IncognitoTabHTMLSource | 346 // IncognitoTabHTMLSource |
| 303 | 347 |
| 304 class IncognitoTabHTMLSource : public ChromeURLDataManager::DataSource { | 348 class IncognitoTabHTMLSource : public ChromeURLDataManager::DataSource { |
| 305 public: | 349 public: |
| 306 // Creates our datasource and sets our user message to a specific message | 350 // Creates our datasource and sets our user message to a specific message |
| 307 // from our string bundle. | 351 // from our string bundle. |
| 308 IncognitoTabHTMLSource(); | 352 IncognitoTabHTMLSource(); |
| 309 | 353 |
| 310 // Called when the network layer has requested a resource underneath | 354 // Called when the network layer has requested a resource underneath |
| (...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 // static | 1254 // static |
| 1211 void NewTabUI::RegisterUserPrefs(PrefService* prefs) { | 1255 void NewTabUI::RegisterUserPrefs(PrefService* prefs) { |
| 1212 MostVisitedHandler::RegisterUserPrefs(prefs); | 1256 MostVisitedHandler::RegisterUserPrefs(prefs); |
| 1213 } | 1257 } |
| 1214 | 1258 |
| 1215 // static | 1259 // static |
| 1216 bool NewTabUI::EnableNewNewTabPage() { | 1260 bool NewTabUI::EnableNewNewTabPage() { |
| 1217 const CommandLine* command_line = CommandLine::ForCurrentProcess(); | 1261 const CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| 1218 return command_line->HasSwitch(switches::kNewNewTabPage); | 1262 return command_line->HasSwitch(switches::kNewNewTabPage); |
| 1219 } | 1263 } |
| OLD | NEW |