Index: chrome/browser/browser_theme_provider.cc |
=================================================================== |
--- chrome/browser/browser_theme_provider.cc (revision 20990) |
+++ chrome/browser/browser_theme_provider.cc (working copy) |
@@ -64,6 +64,8 @@ |
// Strings used by themes to identify miscellaneous numerical properties. |
const char* BrowserThemeProvider::kDisplayPropertyNTPAlignment = |
"ntp_background_alignment"; |
+const char* BrowserThemeProvider::kDisplayPropertyNTPTiling = |
+ "ntp_background_repeat"; |
// Strings used in alignment properties. |
const char* BrowserThemeProvider::kAlignmentTop = "top"; |
@@ -71,6 +73,12 @@ |
const char* BrowserThemeProvider::kAlignmentLeft = "left"; |
const char* BrowserThemeProvider::kAlignmentRight = "right"; |
+// Strings used in background tiling repetition properties. |
+const char* BrowserThemeProvider::kTilingNoRepeat = "no-repeat"; |
+const char* BrowserThemeProvider::kTilingRepeatX = "repeat-x"; |
+const char* BrowserThemeProvider::kTilingRepeatY = "repeat-y"; |
+const char* BrowserThemeProvider::kTilingRepeat = "repeat"; |
+ |
// Default colors. |
const SkColor BrowserThemeProvider::kDefaultColorFrame = |
SkColorSetRGB(77, 139, 217); |
@@ -118,6 +126,8 @@ |
// Default display properties. |
static const int kDefaultDisplayPropertyNTPAlignment = |
BrowserThemeProvider::ALIGN_BOTTOM; |
+static const int kDefaultDisplayPropertyNTPTiling = |
+ BrowserThemeProvider::NO_REPEAT; |
// The image resources that will be tinted by the 'button' tint value. |
static const int kToolbarButtonIDs[] = { |
@@ -264,6 +274,14 @@ |
*result = kDefaultDisplayPropertyNTPAlignment; |
} |
return true; |
+ case NTP_BACKGROUND_TILING: |
+ if (display_properties_.find(kDisplayPropertyNTPTiling) != |
+ display_properties_.end()) { |
+ *result = display_properties_[kDisplayPropertyNTPTiling]; |
+ } else { |
+ *result = kDefaultDisplayPropertyNTPTiling; |
+ } |
+ return true; |
default: |
NOTREACHED() << "Unknown property requested"; |
} |
@@ -507,13 +525,19 @@ |
DictionaryValue::key_iterator iter = display_properties_value->begin_keys(); |
while (iter != display_properties_value->end_keys()) { |
- // New tab page alignment. |
+ // New tab page alignment and background tiling. |
if (base::strcasecmp(WideToUTF8(*iter).c_str(), |
kDisplayPropertyNTPAlignment) == 0) { |
std::string val; |
if (display_properties_value->GetString(*iter, &val)) |
display_properties_[kDisplayPropertyNTPAlignment] = |
StringToAlignment(val); |
+ } else if (base::strcasecmp(WideToUTF8(*iter).c_str(), |
+ kDisplayPropertyNTPTiling) == 0) { |
+ std::string val; |
+ if (display_properties_value->GetString(*iter, &val)) |
+ display_properties_[kDisplayPropertyNTPTiling] = |
+ StringToTiling(val); |
} |
++iter; |
} |
@@ -568,6 +592,33 @@ |
return vertical_string; |
} |
+// static |
+int BrowserThemeProvider::StringToTiling(const std::string &tiling) { |
+ const char* component = tiling.c_str(); |
+ |
+ if (base::strcasecmp(component, kTilingRepeatX) == 0) |
+ return BrowserThemeProvider::REPEAT_X; |
+ else if (base::strcasecmp(component, kTilingRepeatY) == 0) |
+ return BrowserThemeProvider::REPEAT_Y; |
+ else if (base::strcasecmp(component, kTilingRepeat) == 0) |
+ return BrowserThemeProvider::REPEAT; |
+ // NO_REPEAT is the default choice. |
+ return BrowserThemeProvider::NO_REPEAT; |
+} |
+ |
+// static |
+std::string BrowserThemeProvider::TilingToString(int tiling) { |
+ // Convert from a TilingProperty back into a string. |
+ if (tiling == BrowserThemeProvider::REPEAT_X) |
+ return kTilingRepeatX; |
+ else if (tiling == BrowserThemeProvider::REPEAT_Y) |
+ return kTilingRepeatY; |
+ else if (tiling == BrowserThemeProvider::REPEAT) |
+ return kTilingRepeat; |
+ else |
+ return kTilingNoRepeat; |
+} |
+ |
void BrowserThemeProvider::SetColor(const char* key, const SkColor& color) { |
colors_[key] = color; |
} |
@@ -742,6 +793,11 @@ |
pref_display_properties-> |
SetString(UTF8ToWide((*iter).first), AlignmentToString( |
(*iter).second)); |
+ } else if (base::strcasecmp((*iter).first.c_str(), |
+ kDisplayPropertyNTPTiling) == 0) { |
+ pref_display_properties-> |
+ SetString(UTF8ToWide((*iter).first), TilingToString( |
+ (*iter).second)); |
} |
++iter; |
} |