| 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 "chrome/browser/ui/webui/ntp/ntp_resource_cache.h" | 5 #include "chrome/browser/ui/webui/ntp/ntp_resource_cache.h" | 
| 6 | 6 | 
| 7 #include <string> | 7 #include <string> | 
| 8 #include <vector> | 8 #include <vector> | 
| 9 | 9 | 
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 111   SkColor color = tp->GetColor(id); | 111   SkColor color = tp->GetColor(id); | 
| 112   // If web contents are being inverted because the system is in high-contrast | 112   // If web contents are being inverted because the system is in high-contrast | 
| 113   // mode, any system theme colors we use must be inverted too to cancel out. | 113   // mode, any system theme colors we use must be inverted too to cancel out. | 
| 114   return gfx::IsInvertedColorScheme() ? | 114   return gfx::IsInvertedColorScheme() ? | 
| 115       color_utils::InvertColor(color) : color; | 115       color_utils::InvertColor(color) : color; | 
| 116 } | 116 } | 
| 117 | 117 | 
| 118 // Get the CSS string for the background position on the new tab page for the | 118 // Get the CSS string for the background position on the new tab page for the | 
| 119 // states when the bar is attached or detached. | 119 // states when the bar is attached or detached. | 
| 120 std::string GetNewTabBackgroundCSS(const ui::ThemeProvider* theme_provider, | 120 std::string GetNewTabBackgroundCSS(const ui::ThemeProvider* theme_provider, | 
| 121                                    bool bar_attached) { | 121                                    bool bar_attached, | 
|  | 122                                    bool is_ntp_search) { | 
| 122   int alignment; | 123   int alignment; | 
| 123   theme_provider->GetDisplayProperty( | 124   theme_provider->GetDisplayProperty( | 
| 124       ThemeService::NTP_BACKGROUND_ALIGNMENT, &alignment); | 125       ThemeService::NTP_BACKGROUND_ALIGNMENT, &alignment); | 
| 125 | 126 | 
| 126   // TODO(glen): This is a quick workaround to hide the notused.png image when | 127   // TODO(glen): This is a quick workaround to hide the notused.png image when | 
| 127   // no image is provided - we don't have time right now to figure out why | 128   // no image is provided - we don't have time right now to figure out why | 
| 128   // this is painting as white. | 129   // this is painting as white. | 
| 129   // http://crbug.com/17593 | 130   // http://crbug.com/17593 | 
| 130   if (!theme_provider->HasCustomImage(IDR_THEME_NTP_BACKGROUND)) { | 131   if (!theme_provider->HasCustomImage(IDR_THEME_NTP_BACKGROUND)) { | 
| 131     return "-64px"; | 132     return "-64px"; | 
| 132   } | 133   } | 
| 133 | 134 | 
| 134   if (bar_attached) | 135   // For instant extended API i.e. |is_ntp_search| is true, bookmark bar is | 
|  | 136   // always detached at bottom of content view in the y-direction, floating on | 
|  | 137   // top of it in the z-order, and not showing any part of the theme background | 
|  | 138   // image, so the content view should show the entire theme background image as | 
|  | 139   // is, with no vertical offset. | 
|  | 140   if (bar_attached || is_ntp_search) | 
| 135     return ThemeService::AlignmentToString(alignment); | 141     return ThemeService::AlignmentToString(alignment); | 
| 136 | 142 | 
| 137   if (alignment & ThemeService::ALIGN_TOP) { | 143   if (alignment & ThemeService::ALIGN_TOP) { | 
| 138     // The bar is detached, so we must offset the background by the bar size | 144     // The bar is detached, so we must offset the background by the bar size | 
| 139     // if it's a top-aligned bar. | 145     // if it's a top-aligned bar. | 
| 140     int offset = chrome::kNTPBookmarkBarHeight; | 146     int offset = chrome::kNTPBookmarkBarHeight; | 
| 141 | 147 | 
| 142     if (alignment & ThemeService::ALIGN_LEFT) | 148     if (alignment & ThemeService::ALIGN_LEFT) | 
| 143       return "left " + base::IntToString(-offset) + "px"; | 149       return "left " + base::IntToString(-offset) + "px"; | 
| 144     else if (alignment & ThemeService::ALIGN_RIGHT) | 150     else if (alignment & ThemeService::ALIGN_RIGHT) | 
| (...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 448   SkColor color_background = | 454   SkColor color_background = | 
| 449       GetThemeColor(tp, ThemeService::COLOR_NTP_BACKGROUND); | 455       GetThemeColor(tp, ThemeService::COLOR_NTP_BACKGROUND); | 
| 450 | 456 | 
| 451   // Generate the replacements. | 457   // Generate the replacements. | 
| 452   std::vector<std::string> subst; | 458   std::vector<std::string> subst; | 
| 453 | 459 | 
| 454   // Cache-buster for background. | 460   // Cache-buster for background. | 
| 455   subst.push_back( | 461   subst.push_back( | 
| 456       profile_->GetPrefs()->GetString(prefs::kCurrentThemeID));  // $1 | 462       profile_->GetPrefs()->GetString(prefs::kCurrentThemeID));  // $1 | 
| 457 | 463 | 
|  | 464   bool is_ntp_search = chrome::search::IsInstantExtendedAPIEnabled(profile_); | 
|  | 465 | 
| 458   // Colors. | 466   // Colors. | 
| 459   subst.push_back(SkColorToRGBAString(color_background));  // $2 | 467   subst.push_back(SkColorToRGBAString(color_background));  // $2 | 
| 460   subst.push_back(GetNewTabBackgroundCSS(tp, false));  // $3 | 468   subst.push_back(GetNewTabBackgroundCSS(tp, false, is_ntp_search));  // $3 | 
| 461   subst.push_back(GetNewTabBackgroundCSS(tp, true));  // $4 | 469   subst.push_back(GetNewTabBackgroundCSS(tp, true, is_ntp_search));  // $4 | 
| 462   subst.push_back(GetNewTabBackgroundTilingCSS(tp));  // $5 | 470   subst.push_back(GetNewTabBackgroundTilingCSS(tp));  // $5 | 
| 463 | 471 | 
| 464   // Get our template. | 472   // Get our template. | 
| 465   static const base::StringPiece new_tab_theme_css( | 473   static const base::StringPiece new_tab_theme_css( | 
| 466       ResourceBundle::GetSharedInstance().GetRawDataResource( | 474       ResourceBundle::GetSharedInstance().GetRawDataResource( | 
| 467           IDR_NEW_INCOGNITO_TAB_THEME_CSS)); | 475           IDR_NEW_INCOGNITO_TAB_THEME_CSS)); | 
| 468 | 476 | 
| 469   // Create the string from our template and the replacements. | 477   // Create the string from our template and the replacements. | 
| 470   std::string full_css = ReplaceStringPlaceholders( | 478   std::string full_css = ReplaceStringPlaceholders( | 
| 471       new_tab_theme_css, subst, NULL); | 479       new_tab_theme_css, subst, NULL); | 
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 522                      SkColorGetG(color_header), | 530                      SkColorGetG(color_header), | 
| 523                      SkColorGetB(color_header)); | 531                      SkColorGetB(color_header)); | 
| 524 | 532 | 
| 525   // Generate the replacements. | 533   // Generate the replacements. | 
| 526   std::vector<std::string> subst; | 534   std::vector<std::string> subst; | 
| 527 | 535 | 
| 528   // Cache-buster for background. | 536   // Cache-buster for background. | 
| 529   subst.push_back( | 537   subst.push_back( | 
| 530       profile_->GetPrefs()->GetString(prefs::kCurrentThemeID));  // $1 | 538       profile_->GetPrefs()->GetString(prefs::kCurrentThemeID));  // $1 | 
| 531 | 539 | 
|  | 540   bool is_ntp_search = chrome::search::IsInstantExtendedAPIEnabled(profile_); | 
|  | 541 | 
| 532   // Colors. | 542   // Colors. | 
| 533   subst.push_back(SkColorToRGBAString(color_background));  // $2 | 543   subst.push_back(SkColorToRGBAString(color_background));  // $2 | 
| 534   subst.push_back(GetNewTabBackgroundCSS(tp, false));  // $3 | 544   subst.push_back(GetNewTabBackgroundCSS(tp, false, is_ntp_search));  // $3 | 
| 535   subst.push_back(GetNewTabBackgroundCSS(tp, true));  // $4 | 545   subst.push_back(GetNewTabBackgroundCSS(tp, true, is_ntp_search));  // $4 | 
| 536   subst.push_back(GetNewTabBackgroundTilingCSS(tp));  // $5 | 546   subst.push_back(GetNewTabBackgroundTilingCSS(tp));  // $5 | 
| 537   subst.push_back(SkColorToRGBAString(color_header));  // $6 | 547   subst.push_back(SkColorToRGBAString(color_header));  // $6 | 
| 538   subst.push_back(SkColorToRGBAString(color_header_gradient_light));  // $7 | 548   subst.push_back(SkColorToRGBAString(color_header_gradient_light));  // $7 | 
| 539   subst.push_back(SkColorToRGBAString(color_text));  // $8 | 549   subst.push_back(SkColorToRGBAString(color_text));  // $8 | 
| 540   subst.push_back(SkColorToRGBAString(color_link));  // $9 | 550   subst.push_back(SkColorToRGBAString(color_link));  // $9 | 
| 541   subst.push_back(SkColorToRGBAString(color_section));  // $10 | 551   subst.push_back(SkColorToRGBAString(color_section));  // $10 | 
| 542   subst.push_back(SkColorToRGBAString(color_section_border));  // $11 | 552   subst.push_back(SkColorToRGBAString(color_section_border));  // $11 | 
| 543   subst.push_back(SkColorToRGBAString(color_section_text));  // $12 | 553   subst.push_back(SkColorToRGBAString(color_section_text));  // $12 | 
| 544   subst.push_back(SkColorToRGBAString(color_section_link));  // $13 | 554   subst.push_back(SkColorToRGBAString(color_section_link));  // $13 | 
| 545   subst.push_back(SkColorToRGBAString(color_link_underline));  // $14 | 555   subst.push_back(SkColorToRGBAString(color_link_underline));  // $14 | 
| 546   subst.push_back(SkColorToRGBAString(color_section_link_underline));  // $15 | 556   subst.push_back(SkColorToRGBAString(color_section_link_underline));  // $15 | 
| 547   subst.push_back(SkColorToRGBAString(color_section_header_text));  // $16 | 557   subst.push_back(SkColorToRGBAString(color_section_header_text));  // $16 | 
| 548   subst.push_back(SkColorToRGBAString( | 558   subst.push_back(SkColorToRGBAString( | 
| 549       color_section_header_text_hover));  // $17 | 559       color_section_header_text_hover));  // $17 | 
| 550   subst.push_back(SkColorToRGBAString(color_section_header_rule));  // $18 | 560   subst.push_back(SkColorToRGBAString(color_section_header_rule));  // $18 | 
| 551   subst.push_back(SkColorToRGBAString( | 561   subst.push_back(SkColorToRGBAString( | 
| 552       color_section_header_rule_light));  // $19 | 562       color_section_header_rule_light));  // $19 | 
| 553   subst.push_back(SkColorToRGBAString( | 563   subst.push_back(SkColorToRGBAString( | 
| 554       SkColorSetA(color_section_header_rule, 0)));  // $20 | 564       SkColorSetA(color_section_header_rule, 0)));  // $20 | 
| 555   subst.push_back(SkColorToRGBAString(color_text_light));  // $21 | 565   subst.push_back(SkColorToRGBAString(color_text_light));  // $21 | 
| 556   subst.push_back(SkColorToRGBComponents(color_section_border));  // $22 | 566   subst.push_back(SkColorToRGBComponents(color_section_border));  // $22 | 
| 557   subst.push_back(SkColorToRGBComponents(color_text));  // $23 | 567   subst.push_back(SkColorToRGBComponents(color_text));  // $23 | 
| 558 | 568 | 
| 559   // Get our template. | 569   // Get our template. | 
| 560   static const base::StringPiece new_tab_theme_css( | 570   static const base::StringPiece new_tab_theme_css( | 
| 561       ResourceBundle::GetSharedInstance().GetRawDataResource( | 571       ResourceBundle::GetSharedInstance().GetRawDataResource(is_ntp_search ? | 
| 562           chrome::search::IsInstantExtendedAPIEnabled(profile_) ? |  | 
| 563           IDR_NEW_TAB_SEARCH_THEME_CSS : IDR_NEW_TAB_4_THEME_CSS)); | 572           IDR_NEW_TAB_SEARCH_THEME_CSS : IDR_NEW_TAB_4_THEME_CSS)); | 
| 564 | 573 | 
| 565   // Create the string from our template and the replacements. | 574   // Create the string from our template and the replacements. | 
| 566   std::string css_string; | 575   std::string css_string; | 
| 567   css_string = ReplaceStringPlaceholders(new_tab_theme_css, subst, NULL); | 576   css_string = ReplaceStringPlaceholders(new_tab_theme_css, subst, NULL); | 
| 568   new_tab_css_ = base::RefCountedString::TakeString(&css_string); | 577   new_tab_css_ = base::RefCountedString::TakeString(&css_string); | 
| 569 } | 578 } | 
| OLD | NEW | 
|---|