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

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: Rename to setHook; pass value to hook. Created 9 years, 11 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..27f273ce27ad62c7326eb8650132f9a3c888a908 100644
--- a/chrome/browser/resources/shared/js/cr_test.html
+++ b/chrome/browser/resources/shared/js/cr_test.html
@@ -57,6 +57,21 @@ function testDefinePropertyWithDefault() {
assertEquals(2, obj.test_);
}
+function testDefinePropertyWithSetter() {
+ var obj = new EventTarget;
+
+ var hit = false;
+ function onTestSet(value) {
+ assertEquals(this, obj);
+ assertEquals(this.test, 2);
+ assertEquals(value, 2);
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', null, 1, onTestSet);
+ obj.test = 2;
+ assertTrue(hit);
+}
+
function testDefinePropertyEvent() {
var obj = new EventTarget;
cr.defineProperty(obj, 'test');
@@ -136,6 +151,21 @@ function testDefinePropertyAttrWithDefault() {
assertEquals('b', obj.getAttribute('test'));
}
+function testDefinePropertyAttrWithSetter() {
+ var obj = document.createElement('div');
+
+ var hit = false;
+ function onTestSet(value) {
+ assertEquals(this, obj);
+ assertEquals(value, 'b');
+ assertEquals(this.test, 'b');
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR, 'a', onTestSet);
+ obj.test = 'b';
+ assertTrue(hit);
+}
+
function testDefinePropertyAttrEvent() {
var obj = document.createElement('div');
cr.defineProperty(obj, 'test', cr.PropertyKind.ATTR);
@@ -223,6 +253,27 @@ function testDefinePropertyBoolAttrEvent() {
assertEquals(1, count);
}
+function testDefinePropertyBoolAttrWithTruthyDefaultFails() {
+ var obj = document.createElement('div');
+ assertThrows(function() {
+ cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, true);
+ });
+}
+
+function testDefinePropertyBoolAttrEvent() {
+ var obj = document.createElement('div');
+ var hit = false;
+ function onTestSet(value) {
+ assertEquals(this, obj);
+ assertTrue(this.test);
+ assertTrue(value);
+ hit = true;
+ }
+ cr.defineProperty(obj, 'test', cr.PropertyKind.BOOL_ATTR, false, onTestSet);
+ obj.test = true;
+ assertTrue(hit);
+}
+
function testAddSingletonGetter() {
function Foo() {};
cr.addSingletonGetter(Foo);
« chrome/browser/resources/shared/js/cr.js ('K') | « chrome/browser/resources/shared/js/cr.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698