author | Boris Zbarsky <bzbarsky@mit.edu> |
Tue, 11 Oct 2011 17:29:12 -0400 | |
changeset 78582 | 073b4ef6933f72797df80332490ae2d37b09eb92 |
parent 78581 | 39c5a324b3746f1a6a0006f1824506c672e5f53b |
child 78583 | c7b4452ef1d2d7ba6fa2673cbfc7621e4b9d7c4f |
push id | 21314 |
push user | mak77@bonardo.net |
push date | Wed, 12 Oct 2011 10:03:40 +0000 |
treeherder | mozilla-central@866b2b1793cd [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | dbaron |
bugs | 682088 |
milestone | 10.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/nsPresContext.cpp +++ b/layout/base/nsPresContext.cpp @@ -113,30 +113,33 @@ // Needed for Start/Stop of Image Animation #include "imgIContainer.h" #include "nsIImageLoadingContent.h" //needed for resetting of image service color #include "nsLayoutCID.h" +#include "nsCSSParser.h" + using namespace mozilla; using namespace mozilla::dom; static nscolor -MakeColorPref(const nsCString& aColor) +MakeColorPref(const nsString& aColor) { - PRUint32 red, green, blue; - nscolor colorref; - - // 4.x stored RGB color values as a string rather than as an int, - // thus we need to do this conversion - PR_sscanf(aColor.get(), "#%02x%02x%02x", &red, &green, &blue); - colorref = NS_RGB(red, green, blue); - return colorref; + nscolor color; + nsCSSParser parser; + nsresult rv = + parser.ParseColorString(aColor, nsnull, 0, &color); + if (NS_FAILED(rv)) { + // Any better choices? + color = NS_RGB(0, 0, 0); + } + return color; } int nsPresContext::PrefChangedCallback(const char* aPrefName, void* instance_data) { nsPresContext* presContext = (nsPresContext*)instance_data; NS_ASSERTION(nsnull != presContext, "bad instance data"); @@ -596,24 +599,24 @@ nsPresContext::GetDocumentColorPreferenc } if (usePrefColors) { usePrefColors = !Preferences::GetBool("browser.display.use_system_colors", false); } if (usePrefColors) { - nsAdoptingCString colorStr = - Preferences::GetCString("browser.display.foreground_color"); + nsAdoptingString colorStr = + Preferences::GetString("browser.display.foreground_color"); if (!colorStr.IsEmpty()) { mDefaultColor = MakeColorPref(colorStr); } - colorStr = Preferences::GetCString("browser.display.background_color"); + colorStr = Preferences::GetString("browser.display.background_color"); if (!colorStr.IsEmpty()) { mBackgroundColor = MakeColorPref(colorStr); } } else { mDefaultColor = LookAndFeel::GetColor(LookAndFeel::eColorID_WindowForeground, @@ -651,47 +654,47 @@ nsPresContext::GetUserPreferences() mSendAfterPaintToContent = Preferences::GetBool("dom.send_after_paint_to_content", mSendAfterPaintToContent); // * link colors mUnderlineLinks = Preferences::GetBool("browser.underline_anchors", mUnderlineLinks); - nsAdoptingCString colorStr = Preferences::GetCString("browser.anchor_color"); + nsAdoptingString colorStr = Preferences::GetString("browser.anchor_color"); if (!colorStr.IsEmpty()) { mLinkColor = MakeColorPref(colorStr); } - colorStr = Preferences::GetCString("browser.active_color"); + colorStr = Preferences::GetString("browser.active_color"); if (!colorStr.IsEmpty()) { mActiveLinkColor = MakeColorPref(colorStr); } - colorStr = Preferences::GetCString("browser.visited_color"); + colorStr = Preferences::GetString("browser.visited_color"); if (!colorStr.IsEmpty()) { mVisitedLinkColor = MakeColorPref(colorStr); } mUseFocusColors = Preferences::GetBool("browser.display.use_focus_colors", mUseFocusColors); mFocusTextColor = mDefaultColor; mFocusBackgroundColor = mBackgroundColor; - colorStr = Preferences::GetCString("browser.display.focus_text_color"); + colorStr = Preferences::GetString("browser.display.focus_text_color"); if (!colorStr.IsEmpty()) { mFocusTextColor = MakeColorPref(colorStr); } - colorStr = Preferences::GetCString("browser.display.focus_background_color"); + colorStr = Preferences::GetString("browser.display.focus_background_color"); if (!colorStr.IsEmpty()) { mFocusBackgroundColor = MakeColorPref(colorStr); } mFocusRingWidth = Preferences::GetInt("browser.display.focus_ring_width", mFocusRingWidth);