Revision: 7170
Author: [email protected]
Date: Tue Mar 15 03:00:20 2011
Log: Merge revision 6179 to trunk
Review URL: http://codereview.chromium.org/6694021
http://code.google.com/p/v8/source/detail?r=7170
Modified:
/trunk/src/runtime.cc
/trunk/src/version.cc
/trunk/test/cctest/test-api.cc
=======================================
--- /trunk/src/runtime.cc Thu Mar 10 02:14:28 2011
+++ /trunk/src/runtime.cc Tue Mar 15 03:00:20 2011
@@ -3761,6 +3761,14 @@
LookupResult result;
js_object->LookupRealNamedProperty(*name, &result);
+
+ // To be compatible with safari we do not change the value on API objects
+ // in defineProperty. Firefox disagrees here, and actually changes the
value.
+ if (result.IsProperty() &&
+ (result.type() == CALLBACKS) &&
+ result.GetCallbackObject()->IsAccessorInfo()) {
+ return Heap::undefined_value();
+ }
// Take special care when attributes are different and there is already
// a property. For simplicity we normalize the property which enables us
=======================================
--- /trunk/src/version.cc Mon Mar 14 09:13:42 2011
+++ /trunk/src/version.cc Tue Mar 15 03:00:20 2011
@@ -35,7 +35,7 @@
#define MAJOR_VERSION 3
#define MINOR_VERSION 2
#define BUILD_NUMBER 2
-#define PATCH_LEVEL 0
+#define PATCH_LEVEL 1
#define CANDIDATE_VERSION false
// Define SONAME to have the SCons build the put a specific SONAME into the
=======================================
--- /trunk/test/cctest/test-api.cc Thu Mar 10 02:14:28 2011
+++ /trunk/test/cctest/test-api.cc Tue Mar 15 03:00:20 2011
@@ -5659,6 +5659,14 @@
global_template->SetAccessCheckCallbacks(NamedAccessBlocker,
IndexedAccessBlocker);
+ // Add accessible accessor.
+ global_template->SetAccessor(
+ v8_str("accessible_prop"),
+ EchoGetter, EchoSetter,
+ v8::Handle<Value>(),
+ v8::AccessControl(v8::ALL_CAN_READ | v8::ALL_CAN_WRITE));
+
+
// Add an accessor that is not accessible by cross-domain JS code.
global_template->SetAccessor(v8_str("blocked_prop"),
UnreachableGetter, UnreachableSetter,
@@ -5699,6 +5707,18 @@
CompileRun("Object.seal(other)");
ExpectTrue("Object.isExtensible(other)");
+
+ // Regression test for issue 1250.
+ // Make sure that we can set the accessible accessors value using normal
+ // assignment.
+ CompileRun("other.accessible_prop = 42");
+ CHECK_EQ(42, g_echo_value);
+
+ v8::Handle<Value> value;
+ // We follow Safari in ignoring assignments to host object accessors.
+ CompileRun("Object.defineProperty(other, 'accessible_prop', {value:
-1})");
+ value = CompileRun("other.accessible_prop == 42");
+ CHECK(value->IsTrue());
}
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev