| Index: test/intl/break-iterator/protected-icu-internals.js
 | 
| diff --git a/src/extensions/i18n/i18n-extension.h b/test/intl/break-iterator/protected-icu-internals.js
 | 
| similarity index 72%
 | 
| copy from src/extensions/i18n/i18n-extension.h
 | 
| copy to test/intl/break-iterator/protected-icu-internals.js
 | 
| index 050c336a67a21fd6cb32892e14215cac11971111..08b6bdfcff1ce7f1fac24aebb9b3924d37314100 100644
 | 
| --- a/src/extensions/i18n/i18n-extension.h
 | 
| +++ b/test/intl/break-iterator/protected-icu-internals.js
 | 
| @@ -26,26 +26,25 @@
 | 
|  // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
|  // limitations under the License.
 | 
|  
 | 
| -#ifndef V8_EXTENSIONS_I18N_I18N_EXTENSION_H_
 | 
| -#define V8_EXTENSIONS_I18N_I18N_EXTENSION_H_
 | 
| +// Internal object we got from native code should not be writable,
 | 
| +// configurable or enumerable. One can still change its public properties, but
 | 
| +// we don't use them to do actual work.
 | 
|  
 | 
| -#include "v8.h"
 | 
| +var iterator = new Intl.v8BreakIterator([]);
 | 
|  
 | 
| -namespace v8_i18n {
 | 
| +// Direct write should fail.
 | 
| +iterator.iterator = {'zzz':'some random object'};
 | 
|  
 | 
| -class Extension : public v8::Extension {
 | 
| - public:
 | 
| -  Extension();
 | 
| +assertFalse(iterator.iterator.hasOwnProperty('zzz'));
 | 
|  
 | 
| -  virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction(
 | 
| -      v8::Handle<v8::String> name);
 | 
| +// Try redefining the property.
 | 
| +var didThrow = false;
 | 
| +try {
 | 
| +  Object.defineProperty(iterator, 'iterator', {value: undefined});
 | 
| +} catch(e) {
 | 
| +  didThrow = true;
 | 
| +}
 | 
| +assertTrue(didThrow);
 | 
|  
 | 
| -  static void Register();
 | 
| -
 | 
| - private:
 | 
| -  static Extension* extension_;
 | 
| -};
 | 
| -
 | 
| -}  // namespace v8_i18n
 | 
| -
 | 
| -#endif  // V8_EXTENSIONS_I18N_I18N_EXTENSION_H_
 | 
| +// Try deleting the property.
 | 
| +assertFalse(delete iterator.iterator);
 | 
| 
 |