summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authorager@chromium.org <ager@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-03 18:41:05 +0000
committerager@chromium.org <ager@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-03 18:41:05 +0000
commitb1824215dd9018ca43e1fb08f91d08dd2dc37fba (patch)
treebb5ded64ad974d3c53eca5431458998564565740 /webkit
parent3e90d4a00082fd985ab610cd2faff84b5c597a4e (diff)
downloadchromium_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.cpp26
-rw-r--r--webkit/port/bindings/v8/RGBColor.h18
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