| Index: test/intl/date-format/protected-icu-internals.js | 
| diff --git a/src/extensions/i18n/i18n-extension.h b/test/intl/date-format/protected-icu-internals.js | 
| similarity index 72% | 
| copy from src/extensions/i18n/i18n-extension.h | 
| copy to test/intl/date-format/protected-icu-internals.js | 
| index 050c336a67a21fd6cb32892e14215cac11971111..43848ab6caa95ccd35b35d2523fedf32f6f21a79 100644 | 
| --- a/src/extensions/i18n/i18n-extension.h | 
| +++ b/test/intl/date-format/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 format = new Intl.DateTimeFormat([]); | 
|  | 
| -namespace v8_i18n { | 
| +// Direct write should fail. | 
| +format.formatter = {'zzz':'some random object'}; | 
|  | 
| -class Extension : public v8::Extension { | 
| - public: | 
| -  Extension(); | 
| +assertFalse(format.formatter.hasOwnProperty('zzz')); | 
|  | 
| -  virtual v8::Handle<v8::FunctionTemplate> GetNativeFunction( | 
| -      v8::Handle<v8::String> name); | 
| +// Try redefining the property. | 
| +var didThrow = false; | 
| +try { | 
| +  Object.defineProperty(format, 'formatter', {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 format.formatter); | 
|  |