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

Side by Side Diff: src/mirror-debugger.js

Issue 428733007: Throw an exception when an access check fails and no external callback is installed (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: s/ReferenceError/TypeError/ per Toon's wish Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/isolate.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2012 the V8 project authors. All rights reserved. 1 // Copyright 2006-2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Handle id counters. 5 // Handle id counters.
6 var next_handle_ = 0; 6 var next_handle_ = 0;
7 var next_transient_handle_ = -1; 7 var next_transient_handle_ = -1;
8 8
9 // Mirror cache. 9 // Mirror cache.
10 var mirror_cache_ = []; 10 var mirror_cache_ = [];
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 164
165 // Maximum length when sending strings through the JSON protocol. 165 // Maximum length when sending strings through the JSON protocol.
166 var kMaxProtocolStringLength = 80; 166 var kMaxProtocolStringLength = 80;
167 167
168 // Different kind of properties. 168 // Different kind of properties.
169 var PropertyKind = {}; 169 var PropertyKind = {};
170 PropertyKind.Named = 1; 170 PropertyKind.Named = 1;
171 PropertyKind.Indexed = 2; 171 PropertyKind.Indexed = 2;
172 172
173 173
174 // A copy of the PropertyType enum from global.h 174 // A copy of the PropertyType enum from property-details.h
175 var PropertyType = {}; 175 var PropertyType = {};
176 PropertyType.Normal = 0; 176 PropertyType.Normal = 0;
177 PropertyType.Field = 1; 177 PropertyType.Field = 1;
178 PropertyType.Constant = 2; 178 PropertyType.Constant = 2;
179 PropertyType.Callbacks = 3; 179 PropertyType.Callbacks = 3;
180 PropertyType.Handler = 4; 180 PropertyType.Handler = 4;
181 PropertyType.Interceptor = 5; 181 PropertyType.Interceptor = 5;
182 PropertyType.Transition = 6; 182 PropertyType.Nonexistent = 6;
183 PropertyType.Nonexistent = 7;
184 183
185 184
186 // Different attributes for a property. 185 // Different attributes for a property.
187 var PropertyAttribute = {}; 186 var PropertyAttribute = {};
188 PropertyAttribute.None = NONE; 187 PropertyAttribute.None = NONE;
189 PropertyAttribute.ReadOnly = READ_ONLY; 188 PropertyAttribute.ReadOnly = READ_ONLY;
190 PropertyAttribute.DontEnum = DONT_ENUM; 189 PropertyAttribute.DontEnum = DONT_ENUM;
191 PropertyAttribute.DontDelete = DONT_DELETE; 190 PropertyAttribute.DontDelete = DONT_DELETE;
192 191
193 192
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 }; 676 };
678 677
679 678
680 ObjectMirror.prototype.hasIndexedInterceptor = function() { 679 ObjectMirror.prototype.hasIndexedInterceptor = function() {
681 // Get information on interceptors for this object. 680 // Get information on interceptors for this object.
682 var x = %GetInterceptorInfo(this.value_); 681 var x = %GetInterceptorInfo(this.value_);
683 return (x & 1) != 0; 682 return (x & 1) != 0;
684 }; 683 };
685 684
686 685
686 // Get all own property names except for private symbols.
687 function TryGetPropertyNames(object) {
688 try {
689 // TODO(yangguo): Should there be a special debugger implementation of
690 // %GetOwnPropertyNames that doesn't perform access checks?
691 return %GetOwnPropertyNames(object, PROPERTY_ATTRIBUTES_PRIVATE_SYMBOL);
692 } catch (e) {
693 // Might have hit a failed access check.
694 return [];
695 }
696 }
697
698
687 /** 699 /**
688 * Return the property names for this object. 700 * Return the property names for this object.
689 * @param {number} kind Indicate whether named, indexed or both kinds of 701 * @param {number} kind Indicate whether named, indexed or both kinds of
690 * properties are requested 702 * properties are requested
691 * @param {number} limit Limit the number of names returend to the specified 703 * @param {number} limit Limit the number of names returend to the specified
692 value 704 value
693 * @return {Array} Property names for this object 705 * @return {Array} Property names for this object
694 */ 706 */
695 ObjectMirror.prototype.propertyNames = function(kind, limit) { 707 ObjectMirror.prototype.propertyNames = function(kind, limit) {
696 // Find kind and limit and allocate array for the result 708 // Find kind and limit and allocate array for the result
697 kind = kind || PropertyKind.Named | PropertyKind.Indexed; 709 kind = kind || PropertyKind.Named | PropertyKind.Indexed;
698 710
699 var propertyNames; 711 var propertyNames;
700 var elementNames; 712 var elementNames;
701 var total = 0; 713 var total = 0;
702 714
703 // Find all the named properties. 715 // Find all the named properties.
704 if (kind & PropertyKind.Named) { 716 if (kind & PropertyKind.Named) {
705 // Get all own property names except for private symbols. 717 propertyNames = TryGetPropertyNames(this.value_);
706 propertyNames =
707 %GetOwnPropertyNames(this.value_, PROPERTY_ATTRIBUTES_PRIVATE_SYMBOL);
708 total += propertyNames.length; 718 total += propertyNames.length;
709 719
710 // Get names for named interceptor properties if any. 720 // Get names for named interceptor properties if any.
711 if (this.hasNamedInterceptor() && (kind & PropertyKind.Named)) { 721 if (this.hasNamedInterceptor() && (kind & PropertyKind.Named)) {
712 var namedInterceptorNames = 722 var namedInterceptorNames =
713 %GetNamedInterceptorPropertyNames(this.value_); 723 %GetNamedInterceptorPropertyNames(this.value_);
714 if (namedInterceptorNames) { 724 if (namedInterceptorNames) {
715 propertyNames = propertyNames.concat(namedInterceptorNames); 725 propertyNames = propertyNames.concat(namedInterceptorNames);
716 total += namedInterceptorNames.length; 726 total += namedInterceptorNames.length;
717 } 727 }
(...skipping 2151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2869 } 2879 }
2870 if (!NUMBER_IS_FINITE(value)) { 2880 if (!NUMBER_IS_FINITE(value)) {
2871 if (value > 0) { 2881 if (value > 0) {
2872 return 'Infinity'; 2882 return 'Infinity';
2873 } else { 2883 } else {
2874 return '-Infinity'; 2884 return '-Infinity';
2875 } 2885 }
2876 } 2886 }
2877 return value; 2887 return value;
2878 } 2888 }
OLDNEW
« no previous file with comments | « src/isolate.cc ('k') | test/cctest/test-api.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698