diff options
author | ager@chromium.org <ager@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-03 18:41:05 +0000 |
---|---|---|
committer | ager@chromium.org <ager@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-03 18:41:05 +0000 |
commit | b1824215dd9018ca43e1fb08f91d08dd2dc37fba (patch) | |
tree | bb5ded64ad974d3c53eca5431458998564565740 /webkit | |
parent | 3e90d4a00082fd985ab610cd2faff84b5c597a4e (diff) | |
download | chromium_src-b1824215dd9018ca43e1fb08f91d08dd2dc37fba.zip chromium_src-b1824215dd9018ca43e1fb08f91d08dd2dc37fba.tar.gz chromium_src-b1824215dd9018ca43e1fb08f91d08dd2dc37fba.tar.bz2 |
Add RGBColor::create to handle ref counts for RGBColor objects
correctly. Currently, we leak all allocated RGBColor values because
we are messing up the refcounting.
This is part one of three of fixing http://crbug.com/9514. Part two
is landing the corresponding codegenerator change upstream. Part
three is making the RGBColor constructor private.
TEST=LayoutTests/transitions/shorthand-border-transitions.html
BUG=9514
Review URL: http://codereview.chromium.org/155049
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19911 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/port/bindings/v8/RGBColor.cpp | 26 | ||||
-rw-r--r-- | webkit/port/bindings/v8/RGBColor.h | 18 |
2 files changed, 28 insertions, 16 deletions
diff --git a/webkit/port/bindings/v8/RGBColor.cpp b/webkit/port/bindings/v8/RGBColor.cpp index 4a37ea6..fbeff38 100644 --- a/webkit/port/bindings/v8/RGBColor.cpp +++ b/webkit/port/bindings/v8/RGBColor.cpp @@ -31,19 +31,27 @@ namespace WebCore { -PassRefPtr<CSSPrimitiveValue> RGBColor::red() { - unsigned int value = (m_rgbcolor >> 16) & 0xFF; - return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); +PassRefPtr<RGBColor> RGBColor::create(unsigned rgbcolor) +{ + return adoptRef(new RGBColor(rgbcolor)); } -PassRefPtr<CSSPrimitiveValue> RGBColor::green() { - unsigned int value = (m_rgbcolor >> 8) & 0xFF; - return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); +PassRefPtr<CSSPrimitiveValue> RGBColor::red() +{ + unsigned int value = (m_rgbcolor >> 16) & 0xFF; + return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); } -PassRefPtr<CSSPrimitiveValue> RGBColor::blue() { - unsigned int value = m_rgbcolor & 0xFF; - return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); +PassRefPtr<CSSPrimitiveValue> RGBColor::green() +{ + unsigned int value = (m_rgbcolor >> 8) & 0xFF; + return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); +} + +PassRefPtr<CSSPrimitiveValue> RGBColor::blue() +{ + unsigned int value = m_rgbcolor & 0xFF; + return CSSPrimitiveValue::create(value, CSSPrimitiveValue::CSS_NUMBER); } } // namespace WebCore diff --git a/webkit/port/bindings/v8/RGBColor.h b/webkit/port/bindings/v8/RGBColor.h index afc0500..c96edfd 100644 --- a/webkit/port/bindings/v8/RGBColor.h +++ b/webkit/port/bindings/v8/RGBColor.h @@ -12,15 +12,19 @@ namespace WebCore { class RGBColor : public RefCounted<RGBColor> { - public: - RGBColor(unsigned rgbcolor) : m_rgbcolor(rgbcolor) { } +public: + // TODO(ager): Make constructor private once codegenerator changes + // have landed upstream. + RGBColor(unsigned rgbcolor) : m_rgbcolor(rgbcolor) { } - PassRefPtr<CSSPrimitiveValue> red(); - PassRefPtr<CSSPrimitiveValue> green(); - PassRefPtr<CSSPrimitiveValue> blue(); + static PassRefPtr<RGBColor> create(unsigned rgbcolor); - private: - unsigned m_rgbcolor; + PassRefPtr<CSSPrimitiveValue> red(); + PassRefPtr<CSSPrimitiveValue> green(); + PassRefPtr<CSSPrimitiveValue> blue(); + +private: + unsigned m_rgbcolor; }; } // namespace WebCore |