Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2214)

Unified Diff: chrome/browser/resources/shared/js/cr_test.html

Issue 6246078: Add an optional set_hook argument to defineProperty. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/browser/resources
Patch Set: Whoops. x[-1] is undefined. Cleanup accordingly. Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/shared/js/cr_test.html
diff --git a/chrome/browser/resources/shared/js/cr_test.html b/chrome/browser/resources/shared/js/cr_test.html
index b20281c1f8d1e74a71b76b18bc2f246bdcb0d7ba..f2047912e66a38fc141435dd041967350d4ab5b3 100644
--- a/chrome/browser/resources/shared/js/cr_test.html
+++ b/chrome/browser/resources/shared/js/cr_test.html
@@ -39,22 +39,27 @@ function testDefinePropertyOnClass() {
cr.defineProperty(C, 'test');
var obj = new C;
+ assertEquals(undefined, obj.test);
arv (Not doing code reviews) 2011/02/10 20:18:31 assertUndefined
nduca 2011/02/10 20:47:17 Done.
+
obj.test = 1;
assertEquals(1, obj.test);
assertEquals(1, obj.test_);
}
-function testDefinePropertyWithDefault() {
+function testDefinePropertyWithSetter() {
var obj = new EventTarget;
- cr.defineProperty(obj, 'test', null, 1);
-
- assertEquals(1, obj.test);
- assertEquals(1, obj.test_);
-
+ var hit = false;
+ function onTestSet(value, oldValue) {
+ assertEquals(this, obj);
+ assertEquals(this.test, 2);
arv (Not doing code reviews) 2011/02/10 20:18:31 wrong order... expected should be first argument
nduca 2011/02/10 20:47:17 Done.
+ assertEquals(oldValue, undefined);
+ assertEquals(value, 2);
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', cr.PropertyKind.JS, onTestSet);
obj.test = 2;
- assertEquals(2, obj.test);
- assertEquals(2, obj.test_);
+ assertTrue(hit);
}
function testDefinePropertyEvent() {
@@ -82,20 +87,20 @@ function testDefinePropertyEvent() {
function testDefinePropertyEventWithDefault() {
var obj = new EventTarget;
- cr.defineProperty(obj, 'test', cr.PropertyKind.JS, 1);
+ cr.defineProperty(obj, 'test', cr.PropertyKind.JS);
var count = 0;
function f(e) {
assertEquals('testChange', e.type);
assertEquals('test', e.propertyName);
- assertEquals(1, e.oldValue);
+ assertEquals(undefined, e.oldValue);
assertEquals(2, e.newValue);
count++;
}
obj.addEventListener('testChange', f);
- obj.test = 1;
+ obj.test = undefined;
assertEquals('Should not have called the property change listener', 0, count);
obj.test = 2;
@@ -119,62 +124,45 @@ function testDefinePropertyAttrOnClass() {
var obj = document.createElement('button');
cr.defineProperty(HTMLButtonElement, 'test', cr.PropertyKind.ATTR);
+ assertEquals(null, obj.test);
+
obj.test = 'a';
assertEquals('a', obj.test);
assertEquals('a', obj.getAttribute('test'));
}
-function testDefinePropertyAttrWithDefault() {
+function testDefinePropertyAttrWithSetter() {
var obj = document.createElement('div');
- cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a');
-
- assertEquals('a', obj.test);
- assertFalse(obj.hasAttribute('test'));
+ var hit = false;
+ function onTestSet(value, oldValue) {
+ assertEquals(this, obj);
+ assertEquals(oldValue, null);
+ assertEquals(value, 'b');
+ assertEquals(this.test, 'b');
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, onTestSet);
obj.test = 'b';
- assertEquals('b', obj.test);
- assertEquals('b', obj.getAttribute('test'));
+ assertTrue(hit);
}
function testDefinePropertyAttrEvent() {
var obj = document.createElement('div');
cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR);
- obj.test = 'a';
var count = 0;
function f(e) {
assertEquals('testChange', e.type);
assertEquals('test', e.propertyName);
- assertEquals('a', e.oldValue);
+ assertEquals(null, e.oldValue);
assertEquals('b', e.newValue);
count++;
}
obj.addEventListener('testChange', f);
- obj.test = 'b';
- assertEquals('b', obj.test);
- assertEquals('Should have called the property change listener', 1, count);
- obj.test = 'b';
- assertEquals(1, count);
-}
-
-function testDefinePropertyAttrEventWithDefault() {
- var obj = document.createElement('div');
- cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a');
-
- var count = 0;
- function f(e) {
- assertEquals('testChange', e.type);
- assertEquals('test', e.propertyName);
- assertEquals('a', e.oldValue);
- assertEquals('b', e.newValue);
- count++;
- }
-
- obj.addEventListener('testChange', f);
-
- obj.test = 'a';
+ obj.test = null;
assertEquals('Should not have called the property change listener', 0, count);
obj.test = 'b';
@@ -185,6 +173,7 @@ function testDefinePropertyAttrEventWithDefault() {
assertEquals(1, count);
}
arv (Not doing code reviews) 2011/02/10 20:18:31 remove this empty line
nduca 2011/02/10 20:47:17 Done.
+
function testDefinePropertyBoolAttr() {
var obj = document.createElement('div');
cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR);
@@ -223,6 +212,21 @@ function testDefinePropertyBoolAttrEvent() {
assertEquals(1, count);
}
+function testDefinePropertyBoolAttrEvent() {
+ var obj = document.createElement('div');
+ var hit = false;
+ function onTestSet(value, oldValue) {
+ assertEquals(this, obj);
+ assertTrue(this.test);
+ assertFalse(oldValue);
+ assertTrue(value);
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, onTestSet);
+ obj.test = true;
+ assertTrue(hit);
+}
+
function testAddSingletonGetter() {
function Foo() {};
cr.addSingletonGetter(Foo);

Powered by Google App Engine
This is Rietveld 408576698