diff --git a/core/README b/core/README
index 031dfa4..8f88f7d 100644
--- a/core/README
+++ b/core/README
@@ -5,5 +5,5 @@
 using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
 
 The current version corresponds to:
-URL: http://src.chromium.org/multivm/trunk/webkit
-Current revision: 1467
+URL: http://src.chromium.org/blink/branches/dart/1700
+Current revision: 164530
diff --git a/core/css/CSSFontFaceLoadEvent.idl b/core/css/CSSFontFaceLoadEvent.idl
index 7ab2522..b77706c 100644
--- a/core/css/CSSFontFaceLoadEvent.idl
+++ b/core/css/CSSFontFaceLoadEvent.idl
@@ -31,7 +31,7 @@
 // FIXME: Make this constructable from Javascript
 [
     NoInterfaceObject,
-    EnabledAtRuntime=FontLoadEvents,
+    RuntimeEnabled=FontLoadEvents,
 ] interface CSSFontFaceLoadEvent : Event {
     readonly attribute FontFace[] fontfaces;
 };
diff --git a/core/css/CSSRule.idl b/core/css/CSSRule.idl
index 94ce538..2489d2d 100644
--- a/core/css/CSSRule.idl
+++ b/core/css/CSSRule.idl
@@ -37,8 +37,8 @@
     const unsigned short KEYFRAME_RULE = 8;
     const unsigned short WEBKIT_KEYFRAME_RULE = 8;
     const unsigned short SUPPORTS_RULE = 12;
-    [EnabledAtRuntime=CSSViewport] const unsigned short VIEWPORT_RULE = 15;
-    [EnabledAtRuntime=CSSRegions] const unsigned short WEBKIT_REGION_RULE = 16;
+    [RuntimeEnabled=CSSViewport] const unsigned short VIEWPORT_RULE = 15;
+    [RuntimeEnabled=CSSRegions] const unsigned short WEBKIT_REGION_RULE = 16;
     const unsigned short WEBKIT_FILTER_RULE = 17;
     const unsigned short HOST_RULE = 1001;
 
diff --git a/core/css/CSSStyleDeclaration.idl b/core/css/CSSStyleDeclaration.idl
index 4f1bdf6..649a579 100644
--- a/core/css/CSSStyleDeclaration.idl
+++ b/core/css/CSSStyleDeclaration.idl
@@ -37,6 +37,6 @@
     [Custom, CustomEnumerateProperty] getter (DOMString or float) (DOMString name);
     [Custom] setter void (DOMString propertyName, [TreatNullAs=NullString] DOMString propertyValue);
     readonly attribute CSSRule          parentRule;
-    [EnabledAtRuntime=CSSVariables] readonly attribute CSSVariablesMap var;
+    [RuntimeEnabled=CSSVariables] readonly attribute CSSVariablesMap var;
 };
 
diff --git a/core/css/CSSStyleSheet.idl b/core/css/CSSStyleSheet.idl
index 986303a..06ca95b 100644
--- a/core/css/CSSStyleSheet.idl
+++ b/core/css/CSSStyleSheet.idl
@@ -25,7 +25,7 @@
     readonly attribute CSSRule          ownerRule;
     readonly attribute CSSRuleList      cssRules;
 
-    [RaisesException] unsigned long insertRule(DOMString rule, unsigned long index);
+    [RaisesException] unsigned long insertRule(DOMString rule, optional unsigned long index);
     [RaisesException] void deleteRule(unsigned long index);
 
     // IE Extensions
diff --git a/core/css/CSSVariablesMap.idl b/core/css/CSSVariablesMap.idl
index b6ab78a..3c88025 100644
--- a/core/css/CSSVariablesMap.idl
+++ b/core/css/CSSVariablesMap.idl
@@ -32,4 +32,5 @@
     [RaisesException] void set(DOMString name, DOMString value);
     [ImplementedAs=remove] boolean delete(DOMString name);
     [RaisesException] void clear();
+    void forEach(CSSVariablesMapForEachCallback callback, optional any thisArg);
 };
diff --git a/core/dom/ErrorEvent.idl b/core/css/CSSVariablesMapForEachCallback.idl
similarity index 64%
copy from core/dom/ErrorEvent.idl
copy to core/css/CSSVariablesMapForEachCallback.idl
index 33f0239..d66eb61 100644
--- a/core/dom/ErrorEvent.idl
+++ b/core/css/CSSVariablesMapForEachCallback.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -11,9 +11,6 @@
  * copyright notice, this list of conditions and the following disclaimer
  * in the documentation and/or other materials provided with the
  * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
@@ -28,13 +25,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+callback interface CSSVariablesMapForEachCallback {
+    [CallWith=ThisValue] boolean handleItem(DOMString value, DOMString name, CSSVariablesMap map);
+    boolean handleItem(DOMString value, DOMString name, CSSVariablesMap map);
 };
-
diff --git a/core/dom/ErrorEvent.idl b/core/css/DocumentFontFaceSet.idl
similarity index 74%
copy from core/dom/ErrorEvent.idl
copy to core/css/DocumentFontFaceSet.idl
index 33f0239..820fdc8 100644
--- a/core/dom/ErrorEvent.idl
+++ b/core/css/DocumentFontFaceSet.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -28,13 +28,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+partial interface Document {
+    [RuntimeEnabled=FontLoadEvents] readonly attribute FontFaceSet fonts;
 };
-
diff --git a/core/css/FontFace.idl b/core/css/FontFace.idl
index a66872b..874872f 100644
--- a/core/css/FontFace.idl
+++ b/core/css/FontFace.idl
@@ -36,7 +36,7 @@
 };
 
 [
-    EnabledAtRuntime=FontLoadEvents,
+    RuntimeEnabled=FontLoadEvents,
     Constructor(DOMString family, DOMString source, Dictionary descriptors),
     ConstructorRaisesException
 ] interface FontFace {
diff --git a/core/css/FontFaceSet.idl b/core/css/FontFaceSet.idl
index 9fe5d56..daa2e8e 100644
--- a/core/css/FontFaceSet.idl
+++ b/core/css/FontFaceSet.idl
@@ -32,7 +32,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=FontLoadEvents,
+    RuntimeEnabled=FontLoadEvents,
     ActiveDOMObject,
     GenerateIsReachable=document
 ] interface FontFaceSet : EventTarget {
@@ -43,8 +43,8 @@
 
     [RaisesException] sequence<FontFace> match(DOMString font, [Default=NullString] optional DOMString text);
     [RaisesException] boolean check(DOMString font, [Default=NullString] optional DOMString text);
-    [EnabledAtRuntime=Promise, RaisesException] Promise load(DOMString font, [Default=NullString] optional DOMString text);
-    [EnabledAtRuntime=Promise] Promise ready();
+    [RaisesException] Promise load(DOMString font, [Default=NullString] optional DOMString text);
+    Promise ready();
 
     readonly attribute FontFaceSetLoadStatus status;
 };
diff --git a/core/css/WebKitCSSRegionRule.idl b/core/css/WebKitCSSRegionRule.idl
index ad91ce0..6811344 100644
--- a/core/css/WebKitCSSRegionRule.idl
+++ b/core/css/WebKitCSSRegionRule.idl
@@ -28,7 +28,7 @@
  */
 
 [
-    EnabledAtRuntime=CSSRegions,
+    RuntimeEnabled=CSSRegions,
     ImplementedAs=CSSRegionRule
 ] interface WebKitCSSRegionRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
diff --git a/core/dom/Attr.idl b/core/dom/Attr.idl
index 0dcdb02..8494da4 100644
--- a/core/dom/Attr.idl
+++ b/core/dom/Attr.idl
@@ -24,17 +24,17 @@
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
 
-    readonly attribute boolean specified;
+    [MeasureAs=AttributeSpecified] readonly attribute boolean specified;
 
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks=Enable] attribute DOMString value;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks] attribute DOMString value;
 
     // DOM Level 2
 
-    readonly attribute Element ownerElement;
+    [MeasureAs=AttributeOwnerElement] readonly attribute Element ownerElement;
 
     // DOM Level 3
 
-    readonly attribute boolean isId;
+    [MeasureAs=AttributeIsId] readonly attribute boolean isId;
 
     // DOM 4
 
diff --git a/core/dom/ChildNode.idl b/core/dom/ChildNode.idl
index 8a0be4d..21441f6 100644
--- a/core/dom/ChildNode.idl
+++ b/core/dom/ChildNode.idl
@@ -26,6 +26,6 @@
 ] interface ChildNode {
     [PerWorldBindings] readonly attribute Element previousElementSibling;
     [PerWorldBindings] readonly attribute Element nextElementSibling;
-    [RaisesException, CustomElementCallbacks=Enable] void remove();
+    [RaisesException, CustomElementCallbacks] void remove();
 };
 
diff --git a/core/dom/Clipboard.idl b/core/dom/Clipboard.idl
index 82453c7..695f70d 100644
--- a/core/dom/Clipboard.idl
+++ b/core/dom/Clipboard.idl
@@ -30,13 +30,13 @@
 ] interface Clipboard {
              [TreatReturnedNullStringAs=Undefined] attribute DOMString dropEffect;
              [TreatReturnedNullStringAs=Undefined] attribute DOMString effectAllowed;
-    [CustomGetter] readonly attribute Array types;
+    readonly attribute DOMString[] types;
     readonly attribute FileList files;
 
-    [Custom, RaisesException] void clearData(optional DOMString type);
+    void clearData(optional DOMString type);
     DOMString getData(DOMString type);
     boolean setData(DOMString type, DOMString data);
-    [Custom, RaisesException] void setDragImage(HTMLImageElement image, long x, long y);
+    [RaisesException] void setDragImage(Element image, long x, long y);
 
     readonly attribute DataTransferItemList items;
 };
diff --git a/core/dom/DOMTokenList.idl b/core/dom/DOMTokenList.idl
index 3f16677..9aef382 100644
--- a/core/dom/DOMTokenList.idl
+++ b/core/dom/DOMTokenList.idl
@@ -28,9 +28,9 @@
     readonly attribute unsigned long length;
     [TreatReturnedNullStringAs=Null] getter DOMString item(unsigned long index);
     [RaisesException] boolean contains(DOMString token);
-    [RaisesException, CustomElementCallbacks=Enable] void add(DOMString... tokens);
-    [RaisesException, CustomElementCallbacks=Enable] void remove(DOMString... tokens);
-    [RaisesException, CustomElementCallbacks=Enable] boolean toggle(DOMString token, optional boolean force);
+    [RaisesException, CustomElementCallbacks] void add(DOMString... tokens);
+    [RaisesException, CustomElementCallbacks] void remove(DOMString... tokens);
+    [RaisesException, CustomElementCallbacks] boolean toggle(DOMString token, optional boolean force);
     [NotEnumerable] DOMString toString();
 };
 
diff --git a/core/dom/DataTransferItem.idl b/core/dom/DataTransferItem.idl
index 7a3327f..8499652 100644
--- a/core/dom/DataTransferItem.idl
+++ b/core/dom/DataTransferItem.idl
@@ -34,7 +34,7 @@
     readonly attribute DOMString kind;
     readonly attribute DOMString type;
 
-    void getAsString(StringCallback? callback);
+    [CallWith=ExecutionContext] void getAsString(StringCallback? callback);
     Blob getAsFile();
 };
 
diff --git a/core/dom/Document.idl b/core/dom/Document.idl
index a18606d..ba1e205 100644
--- a/core/dom/Document.idl
+++ b/core/dom/Document.idl
@@ -21,7 +21,7 @@
 callback CustomElementConstructor = Element ();
 
 [
-    CustomToV8
+    SpecialWrapFor=HTMLDocument|SVGDocument
 ] interface Document : Node {
 
     // DOM Level 1 Core
@@ -29,7 +29,7 @@
     readonly attribute DOMImplementation implementation;
     readonly attribute Element documentElement;
 
-    [CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
     DocumentFragment   createDocumentFragment();
     [PerWorldBindings] Text createTextNode([Default=Undefined] optional DOMString data);
     Comment createComment([Default=Undefined] optional DOMString data);
@@ -41,9 +41,9 @@
 
     // Introduced in DOM Level 2:
 
-    [CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
                     optional boolean deep);
-    [CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                             [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
     [RaisesException, MeasureAs=DocumentCreateAttributeNS] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                                                                   [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName); // Removed from DOM4.
@@ -59,7 +59,7 @@
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException, MeasureAs=DocumentXMLVersion] attribute DOMString xmlVersion; // Removed from DOM4.
     [SetterRaisesException, MeasureAs=DocumentXMLStandalone] attribute boolean xmlStandalone; // Removed from DOM4.
 
-    [RaisesException, CustomElementCallbacks=Enable] Node               adoptNode([Default=Undefined] optional Node source);
+    [RaisesException, CustomElementCallbacks] Node               adoptNode([Default=Undefined] optional Node source);
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString documentURI;
 
@@ -86,7 +86,7 @@
 
     // DOM Level 2 Abstract Views (DocumentView interface)
 
-    readonly attribute Window defaultView;
+    [ImplementedAs=domWindow] readonly attribute Window defaultView;
 
     // DOM Level 2 Style (DocumentStyle interface)
 
@@ -98,7 +98,7 @@
                                                         [Default=Undefined] optional DOMString pseudoElement);
 
     // Common extensions
-    [CustomElementCallbacks=Enable]
+    [CustomElementCallbacks]
     boolean            execCommand([Default=Undefined] optional DOMString command,
                                    [Default=Undefined] optional boolean userInterface,
                                    [TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString value);
@@ -111,14 +111,14 @@
 
     // Moved down from HTMLDocument
 
-             [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString title;
+             [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString title;
     readonly attribute DOMString referrer;
              [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
     readonly attribute DOMString URL;
 
              [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
 
-             [SetterRaisesException, CustomElementCallbacks=Enable] attribute HTMLElement body;
+             [SetterRaisesException, CustomElementCallbacks] attribute HTMLElement body;
 
     readonly attribute HTMLHeadElement head;
     readonly attribute HTMLCollection images;
@@ -130,7 +130,7 @@
 
     [PerWorldBindings] NodeList getElementsByName([Default=Undefined] optional DOMString elementName);
 
-    [Custom, Replaceable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location;
+    [PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
 
     // IE extensions
     [MeasureAs=DocumentCharset, TreatReturnedNullStringAs=Undefined, TreatNullAs=NullString] attribute DOMString charset;
@@ -165,90 +165,31 @@
     void webkitExitPointerLock();
     readonly attribute Element webkitPointerLockElement;
 
-    [EnabledAtRuntime=CSSRegions] WebKitNamedFlowCollection webkitGetNamedFlows();
+    [RuntimeEnabled=CSSRegions] WebKitNamedFlowCollection webkitGetNamedFlows();
 
-    [EnabledAtRuntime=FontLoadEvents] readonly attribute FontFaceSet fonts;
+    // Event handler attributes
+    attribute EventHandler onbeforecopy;
+    attribute EventHandler onbeforecut;
+    attribute EventHandler onbeforepaste;
+    attribute EventHandler oncopy;
+    attribute EventHandler oncut;
+    attribute EventHandler onpaste;
+    attribute EventHandler onreadystatechange;
+    attribute EventHandler onsearch;
+    [RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation;
+    attribute EventHandler onselectionchange;
+    attribute EventHandler onselectstart;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
+    attribute EventHandler onwebkitfullscreenchange;
+    attribute EventHandler onwebkitfullscreenerror;
+    attribute EventHandler onwebkitpointerlockchange;
+    attribute EventHandler onwebkitpointerlockerror;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
 
-    // Event handler DOM attributes
-    [NotEnumerable] attribute EventHandler onabort;
-    [NotEnumerable] attribute EventHandler onblur;
-    [NotEnumerable] attribute EventHandler onchange;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onclick;
-    [NotEnumerable] attribute EventHandler oncontextmenu;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondblclick;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrag;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragend;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragenter;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragleave;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragover;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragstart;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrop;
-    [NotEnumerable] attribute EventHandler onerror;
-    [NotEnumerable] attribute EventHandler onfocus;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler oninput;
-    [NotEnumerable] attribute EventHandler oninvalid;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeydown;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeypress;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeyup;
-    [NotEnumerable] attribute EventHandler onload;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousedown;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseenter;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseleave;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousemove;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseout;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseover;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseup;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousewheel; // Deprecated in favor of onwheel.
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onwheel;
-    [NotEnumerable] attribute EventHandler onreadystatechange;
-    [NotEnumerable] attribute EventHandler onscroll;
-    [NotEnumerable] attribute EventHandler onselect;
-    [NotEnumerable] attribute EventHandler onsubmit;
-
-    // attribute [NotEnumerable] EventHandler oncanplay;
-    // attribute [NotEnumerable] EventHandler oncanplaythrough;
-    // attribute [NotEnumerable] EventHandler ondurationchange;
-    // attribute [NotEnumerable] EventHandler onemptied;
-    // attribute [NotEnumerable] EventHandler onended;
-    // attribute [NotEnumerable] EventHandler onloadeddata;
-    // attribute [NotEnumerable] EventHandler onloadedmetadata;
-    // attribute [NotEnumerable] EventHandler onloadstart;
-    // attribute [NotEnumerable] EventHandler onpause;
-    // attribute [NotEnumerable] EventHandler onplay;
-    // attribute [NotEnumerable] EventHandler onplaying;
-    // attribute [NotEnumerable] EventHandler onprogress;
-    // attribute [NotEnumerable] EventHandler onratechange;
-    // attribute [NotEnumerable] EventHandler onseeked;
-    // attribute [NotEnumerable] EventHandler onseeking;
-    // attribute [NotEnumerable] EventHandler onshow;
-    // attribute [NotEnumerable] EventHandler onstalled;
-    // attribute [NotEnumerable] EventHandler onsuspend;
-    // attribute [NotEnumerable] EventHandler ontimeupdate;
-    // attribute [NotEnumerable] EventHandler onvolumechange;
-    // attribute [NotEnumerable] EventHandler onwaiting;
-
-    // WebKit extensions
-    [NotEnumerable] attribute EventHandler onbeforecut;
-    [NotEnumerable] attribute EventHandler oncut;
-    [NotEnumerable] attribute EventHandler onbeforecopy;
-    [NotEnumerable] attribute EventHandler oncopy;
-    [NotEnumerable] attribute EventHandler onbeforepaste;
-    [NotEnumerable] attribute EventHandler onpaste;
-    [NotEnumerable] attribute EventHandler onreset;
-    [NotEnumerable] attribute EventHandler onsearch;
-    [NotEnumerable] attribute EventHandler onselectstart;
-    [NotEnumerable] attribute EventHandler onselectionchange;
-    [NotEnumerable, EnabledAtRuntime=Touch] attribute EventHandler ontouchstart;
-    [NotEnumerable, EnabledAtRuntime=Touch] attribute EventHandler ontouchmove;
-    [NotEnumerable, EnabledAtRuntime=Touch] attribute EventHandler ontouchend;
-    [NotEnumerable, EnabledAtRuntime=Touch] attribute EventHandler ontouchcancel;
-    [NotEnumerable] attribute EventHandler onwebkitfullscreenchange;
-    [NotEnumerable] attribute EventHandler onwebkitfullscreenerror;
-    [NotEnumerable] attribute EventHandler onwebkitpointerlockchange;
-    [NotEnumerable] attribute EventHandler onwebkitpointerlockerror;
-    [NotEnumerable, EnabledAtRuntime=ExperimentalContentSecurityPolicyFeatures] attribute EventHandler onsecuritypolicyviolation;
-
-    [EnabledAtRuntime=Touch] Touch createTouch([Default=Undefined] optional Window window,
+    [RuntimeEnabled=Touch] Touch createTouch([Default=Undefined] optional Window window,
                                                [Default=Undefined] optional EventTarget target,
                                                [Default=Undefined] optional long identifier,
                                                [Default=Undefined] optional long pageX,
@@ -259,12 +200,12 @@
                                                [Default=Undefined] optional long webkitRadiusY,
                                                [Default=Undefined] optional float webkitRotationAngle,
                                                [Default=Undefined] optional float webkitForce);
-    [EnabledAtRuntime=Touch] TouchList createTouchList(Touch... touches);
+    [RuntimeEnabled=Touch] TouchList createTouchList(Touch... touches);
 
-    [DeprecateAs=PrefixedDocumentRegister, EnabledAtRuntime=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks=Enable, RaisesException] CustomElementConstructor webkitRegister(DOMString name, optional Dictionary options);
-    [EnabledAtRuntime=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks=Enable, RaisesException] CustomElementConstructor register(DOMString name, optional Dictionary options);
-    [CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
-    [CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
+    [DeprecateAs=PrefixedDocumentRegister, RuntimeEnabled=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks, RaisesException] CustomElementConstructor webkitRegister(DOMString name, optional Dictionary options);
+    [RuntimeEnabled=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks, RaisesException] CustomElementConstructor register(DOMString name, optional Dictionary options);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
                             [TreatNullAs=NullString] DOMString typeExtension);
 
     // Page visibility API.
@@ -272,10 +213,10 @@
     readonly attribute boolean webkitHidden;
 
     // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces
-    [EnabledAtRuntime=ExperimentalContentSecurityPolicyFeatures] readonly attribute SecurityPolicy securityPolicy;
+    [RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] readonly attribute SecurityPolicy securityPolicy;
 
     readonly attribute HTMLScriptElement currentScript;
 };
 
+Document implements GlobalEventHandlers;
 Document implements ParentNode;
-
diff --git a/core/dom/DocumentFullscreen.idl b/core/dom/DocumentFullscreen.idl
index 3081eac..561ad80 100644
--- a/core/dom/DocumentFullscreen.idl
+++ b/core/dom/DocumentFullscreen.idl
@@ -20,13 +20,13 @@
  */
 partial interface Document {
     // Mozilla version
-    [EnabledAtRuntime=Fullscreen] readonly attribute boolean webkitIsFullScreen;
-    [EnabledAtRuntime=Fullscreen] readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
-    [EnabledAtRuntime=Fullscreen] readonly attribute Element webkitCurrentFullScreenElement;
-    [EnabledAtRuntime=Fullscreen] void webkitCancelFullScreen();
+    [RuntimeEnabled=Fullscreen] readonly attribute boolean webkitIsFullScreen;
+    [RuntimeEnabled=Fullscreen] readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
+    [RuntimeEnabled=Fullscreen] readonly attribute Element webkitCurrentFullScreenElement;
+    [RuntimeEnabled=Fullscreen] void webkitCancelFullScreen();
 
     // W3C version
-    [EnabledAtRuntime=Fullscreen] readonly attribute boolean webkitFullscreenEnabled;
-    [EnabledAtRuntime=Fullscreen] readonly attribute Element webkitFullscreenElement;
-    [EnabledAtRuntime=Fullscreen] void webkitExitFullscreen();
+    [RuntimeEnabled=Fullscreen] readonly attribute boolean webkitFullscreenEnabled;
+    [RuntimeEnabled=Fullscreen] readonly attribute Element webkitFullscreenElement;
+    [RuntimeEnabled=Fullscreen] void webkitExitFullscreen();
 };
diff --git a/core/dom/Element.idl b/core/dom/Element.idl
index 55df834..3a8d2ba 100644
--- a/core/dom/Element.idl
+++ b/core/dom/Element.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    CustomToV8
+    SpecialWrapFor=HTMLElement|SVGElement
 ] interface Element : Node {
 
     // DOM Level 1 Core
@@ -27,12 +27,11 @@
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString tagName;
 
     [TreatReturnedNullStringAs=Null] DOMString getAttribute([Default=Undefined] optional DOMString name);
-    [RaisesException, CustomElementCallbacks=Enable] void setAttribute([Default=Undefined] optional DOMString name,
-                                     [Default=Undefined] optional DOMString value);
-    [CustomElementCallbacks=Enable] void removeAttribute([Default=Undefined] optional DOMString name);
+    [RaisesException, CustomElementCallbacks] void setAttribute([Default=Undefined] optional DOMString name, [Default=Undefined] optional DOMString value);
+    [CustomElementCallbacks] void removeAttribute([Default=Undefined] optional DOMString name);
     [MeasureAs=ElementGetAttributeNode] Attr getAttributeNode([Default=Undefined] optional DOMString name); // Removed from DOM4.
-    [RaisesException, CustomElementCallbacks=Enable, MeasureAs=ElementSetAttributeNode] Attr setAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr newAttr); // Removed from DOM4.
-    [RaisesException, CustomElementCallbacks=Enable, MeasureAs=ElementRemoveAttributeNode] Attr removeAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr oldAttr); // Removed from DOM4.
+    [RaisesException, CustomElementCallbacks, MeasureAs=ElementSetAttributeNode] Attr setAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr newAttr); // Removed from DOM4.
+    [RaisesException, CustomElementCallbacks, MeasureAs=ElementRemoveAttributeNode] Attr removeAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr oldAttr); // Removed from DOM4.
     [PerWorldBindings] NodeList getElementsByTagName([Default=Undefined] optional DOMString name);
 
     [PerWorldBindings] readonly attribute NamedNodeMap     attributes;
@@ -40,28 +39,27 @@
 
     // DOM Level 2 Core
 
-     DOMString getAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                            [Default=Undefined] optional DOMString localName);
-     [RaisesException, CustomElementCallbacks=Enable] void setAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                       [Default=Undefined] optional DOMString qualifiedName,
-                                       [Default=Undefined] optional DOMString value);
-     [CustomElementCallbacks=Enable] void removeAttributeNS([TreatNullAs=NullString] DOMString namespaceURI,
-                                          DOMString localName);
-     NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                                   [Default=Undefined] optional DOMString localName);
-     [MeasureAs=ElementGetAttributeNodeNS] Attr getAttributeNodeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                                                   [Default=Undefined] optional DOMString localName); // Removed from DOM4.
-    [RaisesException, CustomElementCallbacks=Enable] Attr setAttributeNodeNS([Default=Undefined, StrictTypeChecking] optional Attr newAttr);
+    DOMString getAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+                             [Default=Undefined] optional DOMString localName);
+    [RaisesException, CustomElementCallbacks] void setAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+                                                                  [Default=Undefined] optional DOMString qualifiedName,
+                                                                  [Default=Undefined] optional DOMString value);
+    [CustomElementCallbacks] void removeAttributeNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
+    NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+                                    [Default=Undefined] optional DOMString localName);
+    [MeasureAs=ElementGetAttributeNodeNS] Attr getAttributeNodeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+                                                                  [Default=Undefined] optional DOMString localName); // Removed from DOM4.
+    [RaisesException, CustomElementCallbacks] Attr setAttributeNodeNS([Default=Undefined, StrictTypeChecking] optional Attr newAttr);
     boolean hasAttribute(DOMString name);
-     boolean hasAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                          [Default=Undefined] optional DOMString localName);
+    boolean hasAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+                           [Default=Undefined] optional DOMString localName);
 
     [PerWorldBindings] readonly attribute CSSStyleDeclaration style;
 
     // DOM4
     // iht.com relies on id returning the empty string when no id is present.
     // Other browsers do this as well. So we don't convert null to JS null.
-    [Reflect] attribute DOMString id;
+    [Reflect, TreatNullAs=NullString] attribute DOMString id;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString namespaceURI;
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString prefix;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString localName;
@@ -77,8 +75,8 @@
     [PerWorldBindings] readonly attribute long clientTop;
     [PerWorldBindings] readonly attribute long clientWidth;
     [PerWorldBindings] readonly attribute long clientHeight;
-             [PerWorldBindings] attribute long scrollLeft;
-             [PerWorldBindings] attribute long scrollTop;
+    [PerWorldBindings] attribute long scrollLeft;
+    [PerWorldBindings] attribute long scrollTop;
     [PerWorldBindings] readonly attribute long scrollWidth;
     [PerWorldBindings] readonly attribute long scrollHeight;
 
@@ -94,8 +92,10 @@
 
     // HTML 5
     NodeList getElementsByClassName([Default=Undefined] optional DOMString name);
+    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
+    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString outerHTML;
 
-    [Reflect=class, PerWorldBindings] attribute DOMString className;
+    [Reflect=class, TreatNullAs=NullString, PerWorldBindings] attribute DOMString className;
     [PerWorldBindings] readonly attribute DOMTokenList classList;
 
     [PerWorldBindings] readonly attribute DOMStringMap dataset;
@@ -108,13 +108,13 @@
     [RaisesException] boolean webkitMatchesSelector([Default=Undefined] optional DOMString selectors);
 
     // Shadow DOM API
-    [EnabledAtRuntime=ShadowDOM, Reflect, PerWorldBindings] attribute DOMString pseudo;
-    [EnabledAtRuntime=ShadowDOM, RaisesException] ShadowRoot createShadowRoot();
-    [EnabledAtRuntime=ShadowDOM, PerWorldBindings] readonly attribute ShadowRoot shadowRoot;
-    [EnabledAtRuntime=ShadowDOM, PerWorldBindings] NodeList getDestinationInsertionPoints();
+    [RuntimeEnabled=ShadowDOM, Reflect, TreatNullAs=NullString, PerWorldBindings] attribute DOMString pseudo;
+    [RuntimeEnabled=ShadowDOM, RaisesException] ShadowRoot createShadowRoot();
+    [RuntimeEnabled=ShadowDOM, PerWorldBindings] readonly attribute ShadowRoot shadowRoot;
+    [RuntimeEnabled=ShadowDOM, PerWorldBindings] NodeList getDestinationInsertionPoints();
 
     // To-be-deprecated prefixed Shadow DOM API
-    [Reflect=pseudo, ImplementedAs=pseudo, PerWorldBindings, MeasureAs=ShadowDOMPrefixedPseudo] attribute DOMString webkitPseudo;
+    [Reflect=pseudo, TreatNullAs=NullString, ImplementedAs=pseudo, PerWorldBindings, MeasureAs=ShadowDOMPrefixedPseudo] attribute DOMString webkitPseudo;
     [ImplementedAs=createShadowRoot, RaisesException, MeasureAs=ShadowDOMPrefixedCreateShadowRoot] ShadowRoot webkitCreateShadowRoot();
     [ImplementedAs=shadowRoot, PerWorldBindings, MeasureAs=ShadowDOMPrefixedShadowRoot] readonly attribute ShadowRoot webkitShadowRoot;
 
@@ -124,91 +124,33 @@
 
     // Mozilla version
     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
-    [EnabledAtRuntime=Fullscreen, PerWorldBindings, ActivityLog=Access] void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
+    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=AccessForAllWorlds, MeasureAs=PrefixedElementRequestFullScreen] void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
 
     // W3C version
-    [EnabledAtRuntime=Fullscreen, PerWorldBindings, ActivityLog=Access] void webkitRequestFullscreen();
+    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=AccessForAllWorlds, MeasureAs=PrefixedElementRequestFullscreen] void webkitRequestFullscreen();
 
     void webkitRequestPointerLock();
 
     // CSS Regions API
-    [EnabledAtRuntime=CSSRegions, PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
-    [EnabledAtRuntime=CSSRegions] sequence<Range> webkitGetRegionFlowRanges();
+    [RuntimeEnabled=CSSRegions, PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
+    [RuntimeEnabled=CSSRegions] sequence<Range> webkitGetRegionFlowRanges();
 
-    // Event handler DOM attributes
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onabort;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onblur;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onchange;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onclick;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler oncontextmenu;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondblclick;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrag;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragend;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragenter;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragleave;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragover;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragstart;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrop;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onerror;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onfocus;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler oninput;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler oninvalid;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeydown;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeypress;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeyup;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onload;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousedown;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseenter;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseleave;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousemove;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseout;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseover;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseup;
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousewheel; // Deprecated in favor of onwheel.
-    [NotEnumerable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onwheel;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onscroll;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onselect;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onsubmit;
-
-    // attribute [NotEnumerable] EventHandler oncanplay;
-    // attribute [NotEnumerable] EventHandler oncanplaythrough;
-    // attribute [NotEnumerable] EventHandler ondurationchange;
-    // attribute [NotEnumerable] EventHandler onemptied;
-    // attribute [NotEnumerable] EventHandler onended;
-    // attribute [NotEnumerable] EventHandler onloadeddata;
-    // attribute [NotEnumerable] EventHandler onloadedmetadata;
-    // attribute [NotEnumerable] EventHandler onloadstart;
-    // attribute [NotEnumerable] EventHandler onpause;
-    // attribute [NotEnumerable] EventHandler onplay;
-    // attribute [NotEnumerable] EventHandler onplaying;
-    // attribute [NotEnumerable] EventHandler onprogress;
-    // attribute [NotEnumerable] EventHandler onratechange;
-    // attribute [NotEnumerable] EventHandler onreadystatechange;
-    // attribute [NotEnumerable] EventHandler onseeked;
-    // attribute [NotEnumerable] EventHandler onseeking;
-    // attribute [NotEnumerable] EventHandler onshow;
-    // attribute [NotEnumerable] EventHandler onstalled;
-    // attribute [NotEnumerable] EventHandler onsuspend;
-    // attribute [NotEnumerable] EventHandler ontimeupdate;
-    // attribute [NotEnumerable] EventHandler onvolumechange;
-    // attribute [NotEnumerable] EventHandler onwaiting;
-
-    // WebKit extensions
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onbeforecut;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler oncut;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onbeforecopy;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler oncopy;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onbeforepaste;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onpaste;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onreset;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onsearch;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onselectstart;
-    [NotEnumerable, EnabledAtRuntime=Touch, PerWorldBindings] attribute EventHandler ontouchstart;
-    [NotEnumerable, EnabledAtRuntime=Touch, PerWorldBindings] attribute EventHandler ontouchmove;
-    [NotEnumerable, EnabledAtRuntime=Touch, PerWorldBindings] attribute EventHandler ontouchend;
-    [NotEnumerable, EnabledAtRuntime=Touch, PerWorldBindings] attribute EventHandler ontouchcancel;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onwebkitfullscreenchange;
-    [NotEnumerable, PerWorldBindings] attribute EventHandler onwebkitfullscreenerror;
+    // Event handler attributes
+    attribute EventHandler onbeforecopy;
+    attribute EventHandler onbeforecut;
+    attribute EventHandler onbeforepaste;
+    attribute EventHandler oncopy;
+    attribute EventHandler oncut;
+    attribute EventHandler onpaste;
+    attribute EventHandler onsearch;
+    attribute EventHandler onselectstart;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
+    attribute EventHandler onwebkitfullscreenchange;
+    attribute EventHandler onwebkitfullscreenerror;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
 };
 
 Element implements ParentNode;
diff --git a/core/dom/GlobalEventHandlers.idl b/core/dom/GlobalEventHandlers.idl
new file mode 100644
index 0000000..6666780
--- /dev/null
+++ b/core/dom/GlobalEventHandlers.idl
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2013, Opera Software ASA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Opera Software ASA nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    NoInterfaceObject
+] interface GlobalEventHandlers {
+    attribute EventHandler onabort;
+    attribute EventHandler onblur;
+    attribute EventHandler oncancel;
+    attribute EventHandler oncanplay;
+    attribute EventHandler oncanplaythrough;
+    attribute EventHandler onchange;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onclick;
+    attribute EventHandler onclose;
+    attribute EventHandler oncontextmenu;
+    attribute EventHandler oncuechange;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondblclick;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondrag;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragend;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragenter;
+    //[ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragexit;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragleave;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragover;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragstart;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondrop;
+    attribute EventHandler ondurationchange;
+    attribute EventHandler onemptied;
+    attribute EventHandler onended;
+    attribute EventHandler onerror;
+    attribute EventHandler onfocus;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler oninput;
+    attribute EventHandler oninvalid;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeydown;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeypress;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeyup;
+    attribute EventHandler onload;
+    attribute EventHandler onloadeddata;
+    attribute EventHandler onloadedmetadata;
+    attribute EventHandler onloadstart;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousedown;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseenter;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseleave;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousemove;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseout;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseover;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseup;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousewheel;
+    attribute EventHandler onpause;
+    attribute EventHandler onplay;
+    attribute EventHandler onplaying;
+    attribute EventHandler onprogress;
+    attribute EventHandler onratechange;
+    attribute EventHandler onreset;
+    attribute EventHandler onscroll;
+    attribute EventHandler onseeked;
+    attribute EventHandler onseeking;
+    attribute EventHandler onselect;
+    attribute EventHandler onshow;
+    //attribute EventHandler onsort;
+    attribute EventHandler onstalled;
+    attribute EventHandler onsubmit;
+    attribute EventHandler onsuspend;
+    attribute EventHandler ontimeupdate;
+    attribute EventHandler onvolumechange;
+    attribute EventHandler onwaiting;
+};
diff --git a/core/dom/NamedNodeMap.idl b/core/dom/NamedNodeMap.idl
index 6169b7a..9c687b7 100644
--- a/core/dom/NamedNodeMap.idl
+++ b/core/dom/NamedNodeMap.idl
@@ -25,9 +25,9 @@
     Node getNamedItem([Default=Undefined] optional DOMString name);
     [NotEnumerable, ImplementedAs=getNamedItem] getter Node ([Default=Undefined] optional DOMString name);
 
-    [RaisesException, CustomElementCallbacks=Enable] Node setNamedItem([Default=Undefined] optional Node node);
+    [RaisesException, CustomElementCallbacks] Node setNamedItem([Default=Undefined] optional Node node);
 
-    [RaisesException, CustomElementCallbacks=Enable] Node removeNamedItem([Default=Undefined] optional DOMString name);
+    [RaisesException, CustomElementCallbacks] Node removeNamedItem([Default=Undefined] optional DOMString name);
 
     getter Node item([Default=Undefined] optional unsigned long index);
 
@@ -40,9 +40,9 @@
     /*[RaisesException]*/ Node getNamedItemNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                               [Default=Undefined] optional DOMString localName);
 
-    [RaisesException, CustomElementCallbacks=Enable] Node setNamedItemNS([Default=Undefined] optional Node node);
+    [RaisesException, CustomElementCallbacks] Node setNamedItemNS([Default=Undefined] optional Node node);
 
-    [RaisesException, CustomElementCallbacks=Enable] Node removeNamedItemNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+    [RaisesException, CustomElementCallbacks] Node removeNamedItemNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                           [Default=Undefined] optional DOMString localName);
 
 };
diff --git a/core/dom/Node.idl b/core/dom/Node.idl
index 3d774a2..3e3ec70 100644
--- a/core/dom/Node.idl
+++ b/core/dom/Node.idl
@@ -39,7 +39,7 @@
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString        nodeName;
 
              // FIXME: the spec says this can also raise on retrieval.
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, CustomElementCallbacks=Enable] attribute DOMString nodeValue;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, CustomElementCallbacks] attribute DOMString nodeValue;
 
     [PerWorldBindings] readonly attribute unsigned short   nodeType;
     [PerWorldBindings] readonly attribute Node             parentNode;
@@ -50,15 +50,15 @@
     [PerWorldBindings] readonly attribute Node             nextSibling;
     [PerWorldBindings] readonly attribute Document         ownerDocument;
 
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node insertBefore(Node newChild, Node refChild);
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node replaceChild(Node newChild, Node oldChild);
-    [Custom, PerWorldBindings, RaisesException] Node removeChild(Node oldChild);
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node appendChild(Node newChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node insertBefore(Node newChild, Node refChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node replaceChild(Node newChild, Node oldChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, RaisesException] Node removeChild(Node oldChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node appendChild(Node newChild);
 
     boolean            hasChildNodes();
-    [CustomElementCallbacks=Enable, PerWorldBindings]
+    [CustomElementCallbacks, PerWorldBindings]
     Node               cloneNode(optional boolean deep);
-    [CustomElementCallbacks=Enable] void normalize();
+    [CustomElementCallbacks] void normalize();
 
     // Introduced in DOM Level 2:
     [MeasureAs=NodeIsSupported] boolean isSupported([Default=Undefined] optional DOMString feature,
@@ -72,7 +72,7 @@
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString       baseURI;
 
              // FIXME: the spec says this can also raise on retrieval.
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException, CustomElementCallbacks=Enable] attribute DOMString       textContent;
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException, CustomElementCallbacks] attribute DOMString       textContent;
 
     [MeasureAs=NodeIsSameNode] boolean isSameNode([Default=Undefined] optional Node other); // Removed in DOM4.
     boolean            isEqualNode([Default=Undefined] optional Node other);
diff --git a/core/dom/NodeFilter.idl b/core/dom/NodeFilter.idl
index 989099f..58ac22e 100644
--- a/core/dom/NodeFilter.idl
+++ b/core/dom/NodeFilter.idl
@@ -19,6 +19,7 @@
  */
 
 [
+    DependentLifetime
 ] interface NodeFilter {
     // Constants returned by acceptNode
     const short               FILTER_ACCEPT                  = 1;
diff --git a/core/dom/NodeIterator.idl b/core/dom/NodeIterator.idl
index 5e52661..9c636c4 100644
--- a/core/dom/NodeIterator.idl
+++ b/core/dom/NodeIterator.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToV8
+    SetReference(NodeFilter filter)
 ] interface NodeIterator {
     readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
diff --git a/core/dom/Promise.idl b/core/dom/Promise.idl
index f7fb7ba..77b3976 100644
--- a/core/dom/Promise.idl
+++ b/core/dom/Promise.idl
@@ -33,7 +33,6 @@
 [
    GlobalContext=Window&WorkerGlobalScope,
    CustomConstructor(PromiseInit init),
-   EnabledAtRuntime=Promise
 ] interface Promise {
    [Custom] Promise then(optional AnyCallback fulfillCallback, optional AnyCallback rejectCallback);
    [Custom] Promise catch(optional AnyCallback rejectCallback);
@@ -41,6 +40,7 @@
    [Custom] static Promise resolve(any value);
    [Custom] static Promise reject(any value);
 
-   [Custom] static Promise _any(any... values);
-   [Custom] static Promise every(any... values);
+   [Custom] static Promise cast(any value);
+   [Custom] static Promise race(any iterable);
+   [Custom] static Promise all(any iterable);
 };
diff --git a/core/dom/Range.idl b/core/dom/Range.idl
index 32edd56..42ca334 100644
--- a/core/dom/Range.idl
+++ b/core/dom/Range.idl
@@ -52,11 +52,11 @@
      [RaisesException] short compareBoundaryPoints([Default=Undefined] optional CompareHow how,
                                                [Default=Undefined] optional Range sourceRange);
 
-    [RaisesException, CustomElementCallbacks=Enable] void deleteContents();
-    [RaisesException, CustomElementCallbacks=Enable] DocumentFragment extractContents();
-    [RaisesException, CustomElementCallbacks=Enable] DocumentFragment cloneContents();
-    [RaisesException, CustomElementCallbacks=Enable] void insertNode([Default=Undefined] optional Node newNode);
-    [RaisesException, CustomElementCallbacks=Enable] void surroundContents([Default=Undefined] optional Node newParent);
+    [RaisesException, CustomElementCallbacks] void deleteContents();
+    [RaisesException, CustomElementCallbacks] DocumentFragment extractContents();
+    [RaisesException, CustomElementCallbacks] DocumentFragment cloneContents();
+    [RaisesException, CustomElementCallbacks] void insertNode([Default=Undefined] optional Node newNode);
+    [RaisesException, CustomElementCallbacks] void surroundContents([Default=Undefined] optional Node newParent);
     [RaisesException] Range cloneRange();
     [RaisesException] DOMString toString();
 
@@ -69,7 +69,7 @@
 
     // extensions
 
-    [RaisesException, CustomElementCallbacks=Enable] DocumentFragment createContextualFragment([Default=Undefined] optional DOMString html);
+    [RaisesException, CustomElementCallbacks] DocumentFragment createContextualFragment([Default=Undefined] optional DOMString html);
 
     // WebKit extensions
 
diff --git a/core/dom/Text.idl b/core/dom/Text.idl
index af7360a..0ee791b 100644
--- a/core/dom/Text.idl
+++ b/core/dom/Text.idl
@@ -30,5 +30,5 @@
     [MeasureAs=TextReplaceWholeText] Text replaceWholeText(DOMString content); // Removed from DOM4.
 
     // Shadow DOM API
-    [EnabledAtRuntime=ShadowDOM, PerWorldBindings] NodeList getDestinationInsertionPoints();
+    [RuntimeEnabled=ShadowDOM, PerWorldBindings] NodeList getDestinationInsertionPoints();
 };
diff --git a/core/dom/TreeWalker.idl b/core/dom/TreeWalker.idl
index dd545b8..ac04ba0 100644
--- a/core/dom/TreeWalker.idl
+++ b/core/dom/TreeWalker.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToV8
+    SetReference(NodeFilter filter)
 ] interface TreeWalker {
     readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
diff --git a/core/html/URL.idl b/core/dom/URL.idl
similarity index 78%
rename from core/html/URL.idl
rename to core/dom/URL.idl
index 265f371..37e2a90 100644
--- a/core/html/URL.idl
+++ b/core/dom/URL.idl
@@ -26,9 +26,15 @@
 
 [
     GlobalContext=Window&WorkerGlobalScope,
-    Constructor,
+    ConstructorRaisesException,
+    Constructor(DOMString url),
+    Constructor(DOMString url, URL base),
+    Constructor(DOMString url, DOMString base),
     ImplementedAs=DOMURL
 ] interface URL {
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
-    [CallWith=ScriptExecutionContext] static void revokeObjectURL(DOMString url);
+    [CallWith=ExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
+    [CallWith=ExecutionContext] static void revokeObjectURL(DOMString url);
 };
+
+// Force rebuild: crbug.com/307023
+URL implements URLUtils;
diff --git a/core/page/History.idl b/core/dom/URLUtils.idl
similarity index 62%
copy from core/page/History.idl
copy to core/dom/URLUtils.idl
index d20cc89..b4c3e67 100644
--- a/core/page/History.idl
+++ b/core/dom/URLUtils.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -23,14 +23,29 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface History {
-    readonly attribute unsigned long length;
-    [Custom] readonly attribute SerializedScriptValue state;
+[
+    NoInterfaceObject,
+    ImplementedAs=DOMURLUtils
+] interface URLUtils {
+    // Special case null for backwards compat with HTMLAnchorElement href.
+    // https://code.google.com/p/chromium/issues/detail?id=304959
+    [TreatNullAs=NullString] attribute DOMString href;
 
-    [CallWith=ScriptExecutionContext] void back();
-    [CallWith=ScriptExecutionContext] void forward();
-    [CallWith=ScriptExecutionContext] void go([Default=Undefined] optional long distance);
+    [NotEnumerable, ImplementedAs=href] DOMString toString();
 
-    [Custom, EnabledPerContext=pushState, RaisesException] void pushState(any data, DOMString title, optional DOMString url);
-    [Custom, EnabledPerContext=pushState, RaisesException] void replaceState(any data, DOMString title, optional DOMString url);
+    readonly attribute DOMString origin;
+    attribute DOMString protocol;
+    attribute DOMString username;
+    attribute DOMString password;
+    attribute DOMString host;
+    attribute DOMString hostname;
+    attribute DOMString port;
+    attribute DOMString pathname;
+    attribute DOMString search;
+
+    // Not yet implemented.
+    // attribute URLQuery? query;
+
+    attribute DOMString hash;
 };
+
diff --git a/core/html/track/TextTrackRegionList.idl b/core/dom/URLUtilsReadOnly.idl
similarity index 71%
copy from core/html/track/TextTrackRegionList.idl
copy to core/dom/URLUtilsReadOnly.idl
index 844cd9d..0d36b46 100644
--- a/core/html/track/TextTrackRegionList.idl
+++ b/core/dom/URLUtilsReadOnly.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013 Google Inc.  All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -25,11 +25,17 @@
 
 [
     NoInterfaceObject,
-    Conditional=WEBVTT_REGIONS,
-    EnabledAtRuntime=VideoTrack
-] interface TextTrackRegionList {
-    readonly attribute unsigned long length;
-    getter TextTrackRegion item(unsigned long index);
-    TextTrackRegion getRegionById(DOMString id);
-};
+    ImplementedAs=DOMURLUtilsReadOnly
+] interface URLUtilsReadOnly {
+    readonly attribute DOMString href;
 
+    [NotEnumerable, ImplementedAs=href] DOMString toString();
+
+    readonly attribute DOMString protocol;
+    readonly attribute DOMString host;
+    readonly attribute DOMString hostname;
+    readonly attribute DOMString port;
+    readonly attribute DOMString pathname;
+    readonly attribute DOMString search;
+    readonly attribute DOMString hash;
+};
diff --git a/core/dom/WebKitNamedFlow.idl b/core/dom/WebKitNamedFlow.idl
index 33cff65..f1185b4 100644
--- a/core/dom/WebKitNamedFlow.idl
+++ b/core/dom/WebKitNamedFlow.idl
@@ -29,7 +29,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=CSSRegions,
+    RuntimeEnabled=CSSRegions,
     ImplementedAs=NamedFlow,
     GenerateIsReachable=ownerNode
 ] interface WebKitNamedFlow : EventTarget {
diff --git a/core/dom/WebKitNamedFlowCollection.idl b/core/dom/WebKitNamedFlowCollection.idl
index 92aec8e..4744e06 100644
--- a/core/dom/WebKitNamedFlowCollection.idl
+++ b/core/dom/WebKitNamedFlowCollection.idl
@@ -29,7 +29,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=CSSRegions,
+    RuntimeEnabled=CSSRegions,
     ImplementedAs=DOMNamedFlowCollection
 ] interface WebKitNamedFlowCollection {
     readonly attribute unsigned long length;
diff --git a/core/dom/shadow/ShadowRoot.idl b/core/dom/shadow/ShadowRoot.idl
index 105c008..fd06913 100644
--- a/core/dom/shadow/ShadowRoot.idl
+++ b/core/dom/shadow/ShadowRoot.idl
@@ -30,9 +30,9 @@
     readonly attribute Element activeElement;
     attribute boolean applyAuthorStyles;
     attribute boolean resetStyleInheritance;
-    [EnabledAtRuntime=ShadowDOM, ImplementedAs=bindingsOlderShadowRoot] readonly attribute ShadowRoot olderShadowRoot;
+    [RuntimeEnabled=ShadowDOM, ImplementedAs=bindingsOlderShadowRoot] readonly attribute ShadowRoot olderShadowRoot;
 
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
+    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
 
     [RaisesException] Node cloneNode([Default=Undefined] optional boolean deep);
     Selection getSelection();
@@ -44,4 +44,7 @@
 
     Element elementFromPoint([Default=Undefined] optional long x,
                              [Default=Undefined] optional long y);
+
+    [RuntimeEnabled=ShadowDOM] readonly attribute StyleSheetList styleSheets;
+    [RuntimeEnabled=ShadowDOM] readonly attribute Element host;
 };
diff --git a/core/dom/AutocompleteErrorEvent.idl b/core/events/AutocompleteErrorEvent.idl
similarity index 100%
rename from core/dom/AutocompleteErrorEvent.idl
rename to core/events/AutocompleteErrorEvent.idl
diff --git a/core/dom/BeforeLoadEvent.idl b/core/events/BeforeLoadEvent.idl
similarity index 100%
rename from core/dom/BeforeLoadEvent.idl
rename to core/events/BeforeLoadEvent.idl
diff --git a/core/dom/BeforeUnloadEvent.idl b/core/events/BeforeUnloadEvent.idl
similarity index 100%
rename from core/dom/BeforeUnloadEvent.idl
rename to core/events/BeforeUnloadEvent.idl
diff --git a/core/dom/CompositionEvent.idl b/core/events/CompositionEvent.idl
similarity index 100%
rename from core/dom/CompositionEvent.idl
rename to core/events/CompositionEvent.idl
diff --git a/core/dom/CustomEvent.idl b/core/events/CustomEvent.idl
similarity index 95%
rename from core/dom/CustomEvent.idl
rename to core/events/CustomEvent.idl
index 12edaa5..0afe8fe 100644
--- a/core/dom/CustomEvent.idl
+++ b/core/events/CustomEvent.idl
@@ -26,7 +26,7 @@
 [
     ConstructorTemplate=Event
 ] interface CustomEvent : Event {
-    [InitializedByEventConstructor, Custom] readonly attribute any detail;
+    [CustomGetter, InitializedByEventConstructor] readonly attribute any detail;
 
     [Custom] void initCustomEvent([Default=Undefined] optional DOMString typeArg,
                                   [Default=Undefined] optional boolean canBubbleArg,
diff --git a/core/dom/ErrorEvent.idl b/core/events/ErrorEvent.idl
similarity index 94%
rename from core/dom/ErrorEvent.idl
rename to core/events/ErrorEvent.idl
index 33f0239..1a5d21a 100644
--- a/core/dom/ErrorEvent.idl
+++ b/core/events/ErrorEvent.idl
@@ -35,6 +35,6 @@
     [InitializedByEventConstructor] readonly attribute DOMString filename;
     [InitializedByEventConstructor] readonly attribute unsigned long lineno;
     [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+    [CustomGetter, InitializedByEventConstructor, Unserializable] readonly attribute any error;
 };
 
diff --git a/core/dom/Event.idl b/core/events/Event.idl
similarity index 88%
rename from core/dom/Event.idl
rename to core/events/Event.idl
index 88d704f..49b4914 100644
--- a/core/dom/Event.idl
+++ b/core/events/Event.idl
@@ -59,9 +59,9 @@
 
     void               stopPropagation();
     void               preventDefault();
-     void initEvent([Default=Undefined] optional DOMString eventTypeArg,
-                                  [Default=Undefined] optional boolean canBubbleArg,
-                                  [Default=Undefined] optional boolean cancelableArg);
+    void initEvent([Default=Undefined] optional DOMString eventTypeArg,
+                   [Default=Undefined] optional boolean canBubbleArg,
+                   [Default=Undefined] optional boolean cancelableArg);
 
     // DOM Level 3 Additions.
     readonly attribute boolean defaultPrevented;
@@ -72,8 +72,7 @@
     [ImplementedAs=legacyReturnValue, DeprecateAs=EventReturnValue] attribute boolean returnValue;
              attribute boolean          cancelBubble;
 
-    [EnabledAtRuntime=ShadowDOM] readonly attribute NodeList path;
+    [RuntimeEnabled=ShadowDOM] readonly attribute NodeList path;
 
-    [Custom] readonly attribute Clipboard        clipboardData;
+    [CustomGetter] readonly attribute Clipboard clipboardData;
 };
-
diff --git a/core/dom/EventListener.idl b/core/events/EventListener.idl
similarity index 100%
rename from core/dom/EventListener.idl
rename to core/events/EventListener.idl
diff --git a/core/dom/EventTarget.idl b/core/events/EventTarget.idl
similarity index 100%
rename from core/dom/EventTarget.idl
rename to core/events/EventTarget.idl
diff --git a/core/dom/FocusEvent.idl b/core/events/FocusEvent.idl
similarity index 100%
rename from core/dom/FocusEvent.idl
rename to core/events/FocusEvent.idl
diff --git a/core/dom/HashChangeEvent.idl b/core/events/HashChangeEvent.idl
similarity index 96%
rename from core/dom/HashChangeEvent.idl
rename to core/events/HashChangeEvent.idl
index 470a208..13c83b4 100644
--- a/core/dom/HashChangeEvent.idl
+++ b/core/events/HashChangeEvent.idl
@@ -17,7 +17,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#event-hashchange
+// Introduced in http://www.whatwg.org/specs/web-apps/current-work/multiframe/History.html#event-hashchange
 [
     ConstructorTemplate=Event
 ] interface HashChangeEvent : Event {
diff --git a/core/dom/KeyboardEvent.idl b/core/events/KeyboardEvent.idl
similarity index 96%
rename from core/dom/KeyboardEvent.idl
rename to core/events/KeyboardEvent.idl
index 62dd799..4d980ae 100644
--- a/core/dom/KeyboardEvent.idl
+++ b/core/events/KeyboardEvent.idl
@@ -33,6 +33,7 @@
     [InitializedByEventConstructor] readonly attribute boolean          shiftKey;
     [InitializedByEventConstructor] readonly attribute boolean          altKey;
     [InitializedByEventConstructor] readonly attribute boolean          metaKey;
+    [InitializedByEventConstructor] readonly attribute boolean          repeat;
     readonly attribute boolean          altGraphKey;
 
     boolean getModifierState(DOMString keyArgument);
diff --git a/core/dom/MessageEvent.idl b/core/events/MessageEvent.idl
similarity index 100%
rename from core/dom/MessageEvent.idl
rename to core/events/MessageEvent.idl
diff --git a/core/dom/MouseEvent.idl b/core/events/MouseEvent.idl
similarity index 100%
rename from core/dom/MouseEvent.idl
rename to core/events/MouseEvent.idl
diff --git a/core/dom/MutationEvent.idl b/core/events/MutationEvent.idl
similarity index 100%
rename from core/dom/MutationEvent.idl
rename to core/events/MutationEvent.idl
diff --git a/core/dom/ErrorEvent.idl b/core/events/NavigatorEvents.idl
similarity index 74%
copy from core/dom/ErrorEvent.idl
copy to core/events/NavigatorEvents.idl
index 33f0239..fe899fc 100644
--- a/core/dom/ErrorEvent.idl
+++ b/core/events/NavigatorEvents.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -28,13 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
-};
-
+partial interface Navigator {
+    [RuntimeEnabled=PointerEventsMaxTouchPoints]
+    readonly    attribute long    maxTouchPoints;
+};
\ No newline at end of file
diff --git a/core/dom/OverflowEvent.idl b/core/events/OverflowEvent.idl
similarity index 100%
rename from core/dom/OverflowEvent.idl
rename to core/events/OverflowEvent.idl
diff --git a/core/dom/PageTransitionEvent.idl b/core/events/PageTransitionEvent.idl
similarity index 100%
rename from core/dom/PageTransitionEvent.idl
rename to core/events/PageTransitionEvent.idl
diff --git a/core/dom/PopStateEvent.idl b/core/events/PopStateEvent.idl
similarity index 100%
rename from core/dom/PopStateEvent.idl
rename to core/events/PopStateEvent.idl
diff --git a/core/dom/ProgressEvent.idl b/core/events/ProgressEvent.idl
similarity index 100%
rename from core/dom/ProgressEvent.idl
rename to core/events/ProgressEvent.idl
diff --git a/core/dom/ResourceProgressEvent.idl b/core/events/ResourceProgressEvent.idl
similarity index 100%
rename from core/dom/ResourceProgressEvent.idl
rename to core/events/ResourceProgressEvent.idl
diff --git a/core/dom/SecurityPolicyViolationEvent.idl b/core/events/SecurityPolicyViolationEvent.idl
similarity index 96%
rename from core/dom/SecurityPolicyViolationEvent.idl
rename to core/events/SecurityPolicyViolationEvent.idl
index d067fab..a5de4dc 100644
--- a/core/dom/SecurityPolicyViolationEvent.idl
+++ b/core/events/SecurityPolicyViolationEvent.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    EnabledAtRuntime=ExperimentalContentSecurityPolicyFeatures,
+    RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures,
     ConstructorTemplate=Event
 ] interface SecurityPolicyViolationEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString documentURI;
diff --git a/core/dom/TextEvent.idl b/core/events/TextEvent.idl
similarity index 100%
rename from core/dom/TextEvent.idl
rename to core/events/TextEvent.idl
diff --git a/core/dom/TouchEvent.idl b/core/events/TouchEvent.idl
similarity index 100%
rename from core/dom/TouchEvent.idl
rename to core/events/TouchEvent.idl
diff --git a/core/dom/TransitionEvent.idl b/core/events/TransitionEvent.idl
similarity index 100%
rename from core/dom/TransitionEvent.idl
rename to core/events/TransitionEvent.idl
diff --git a/core/dom/UIEvent.idl b/core/events/UIEvent.idl
similarity index 100%
rename from core/dom/UIEvent.idl
rename to core/events/UIEvent.idl
diff --git a/core/dom/WebKitAnimationEvent.idl b/core/events/WebKitAnimationEvent.idl
similarity index 100%
rename from core/dom/WebKitAnimationEvent.idl
rename to core/events/WebKitAnimationEvent.idl
diff --git a/core/dom/WheelEvent.idl b/core/events/WheelEvent.idl
similarity index 100%
rename from core/dom/WheelEvent.idl
rename to core/events/WheelEvent.idl
diff --git a/core/fileapi/Blob.idl b/core/fileapi/Blob.idl
index 8dddc35..814a2fc 100644
--- a/core/fileapi/Blob.idl
+++ b/core/fileapi/Blob.idl
@@ -30,7 +30,7 @@
 
 [
     GlobalContext=Window&WorkerGlobalScope,
-    CustomToV8,
+    SpecialWrapFor=File,
     CustomConstructor,
     CustomConstructor(sequence<any> blobParts, optional BlobPropertyBag options)
 ] interface Blob {
diff --git a/core/fileapi/File.idl b/core/fileapi/File.idl
index 2d2ea18..56be7fc 100644
--- a/core/fileapi/File.idl
+++ b/core/fileapi/File.idl
@@ -26,6 +26,6 @@
 interface File : Blob {
     readonly attribute DOMString name;
     readonly attribute Date lastModifiedDate;
-    [EnabledAtRuntime=DirectoryUpload] readonly attribute DOMString webkitRelativePath;
+    [RuntimeEnabled=DirectoryUpload] readonly attribute DOMString webkitRelativePath;
 };
 
diff --git a/core/fileapi/FileReader.idl b/core/fileapi/FileReader.idl
index d43e34e..eb26da7 100644
--- a/core/fileapi/FileReader.idl
+++ b/core/fileapi/FileReader.idl
@@ -33,7 +33,7 @@
     GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface FileReader : EventTarget {
     // ready states
     const unsigned short EMPTY = 0;
@@ -50,7 +50,7 @@
     void abort();
 
     // file data
-    [Custom] readonly attribute any result;
+    [CustomGetter] readonly attribute any result;
 
     readonly attribute FileError error;
 
diff --git a/core/fileapi/FileReaderSync.idl b/core/fileapi/FileReaderSync.idl
index 4930687..125e002 100644
--- a/core/fileapi/FileReaderSync.idl
+++ b/core/fileapi/FileReaderSync.idl
@@ -32,8 +32,8 @@
     GlobalContext=WorkerGlobalScope,
     Constructor
 ] interface FileReaderSync {
-    [CallWith=ScriptExecutionContext, RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
-    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsBinaryString(Blob blob);
-    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsText(Blob blob, optional DOMString encoding);
-    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsDataURL(Blob blob);
+    [CallWith=ExecutionContext, RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
+    [CallWith=ExecutionContext, RaisesException] DOMString readAsBinaryString(Blob blob);
+    [CallWith=ExecutionContext, RaisesException] DOMString readAsText(Blob blob, optional DOMString encoding);
+    [CallWith=ExecutionContext, RaisesException] DOMString readAsDataURL(Blob blob);
 };
diff --git a/core/fileapi/Stream.idl b/core/fileapi/Stream.idl
index 6ead757..1406b7b 100644
--- a/core/fileapi/Stream.idl
+++ b/core/fileapi/Stream.idl
@@ -37,7 +37,8 @@
 // FIXME: Make the Blob a subclass of the Stream.
 
 [
-    EnabledAtRuntime=Stream
+    RuntimeEnabled=Stream,
+    ActiveDOMObject
 ] interface Stream {
     readonly attribute DOMString type;
 };
diff --git a/core/page/BarProp.idl b/core/frame/BarProp.idl
similarity index 100%
rename from core/page/BarProp.idl
rename to core/frame/BarProp.idl
diff --git a/core/page/Console.idl b/core/frame/Console.idl
similarity index 100%
rename from core/page/Console.idl
rename to core/frame/Console.idl
diff --git a/core/page/ConsoleBase.idl b/core/frame/ConsoleBase.idl
similarity index 100%
rename from core/page/ConsoleBase.idl
rename to core/frame/ConsoleBase.idl
diff --git a/core/page/History.idl b/core/frame/History.idl
similarity index 79%
rename from core/page/History.idl
rename to core/frame/History.idl
index d20cc89..2b8cce4 100644
--- a/core/page/History.idl
+++ b/core/frame/History.idl
@@ -25,12 +25,12 @@
 
 interface History {
     readonly attribute unsigned long length;
-    [Custom] readonly attribute SerializedScriptValue state;
+    [CustomGetter] readonly attribute SerializedScriptValue state;
 
-    [CallWith=ScriptExecutionContext] void back();
-    [CallWith=ScriptExecutionContext] void forward();
-    [CallWith=ScriptExecutionContext] void go([Default=Undefined] optional long distance);
+    [CallWith=ExecutionContext] void back();
+    [CallWith=ExecutionContext] void forward();
+    [CallWith=ExecutionContext] void go([Default=Undefined] optional long distance);
 
-    [Custom, EnabledPerContext=pushState, RaisesException] void pushState(any data, DOMString title, optional DOMString url);
-    [Custom, EnabledPerContext=pushState, RaisesException] void replaceState(any data, DOMString title, optional DOMString url);
+    [Custom, PerContextEnabled=PushState, RaisesException] void pushState(any data, DOMString title, optional DOMString url);
+    [Custom, PerContextEnabled=PushState, RaisesException] void replaceState(any data, DOMString title, optional DOMString url);
 };
diff --git a/core/page/ImageBitmap.idl b/core/frame/ImageBitmap.idl
similarity index 100%
rename from core/page/ImageBitmap.idl
rename to core/frame/ImageBitmap.idl
diff --git a/core/page/Location.idl b/core/frame/Location.idl
similarity index 90%
rename from core/page/Location.idl
rename to core/frame/Location.idl
index 77778e1..1d1c893 100644
--- a/core/page/Location.idl
+++ b/core/frame/Location.idl
@@ -31,8 +31,8 @@
 ] interface Location {
     [SetterCallWith=ActiveWindow&FirstWindow, DoNotCheckSecurityOnSetter, Unforgeable] attribute DOMString href;
 
-    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void assign([Default=Undefined] optional DOMString url);
-    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void replace([Default=Undefined] optional DOMString url);
+    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void assign([Default=Undefined] optional DOMString url);
+    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void replace([Default=Undefined] optional DOMString url);
     [CallWith=ActiveWindow, Unforgeable, ReadOnly] void reload();
 
     // URI decomposition attributes
diff --git a/core/page/Navigator.idl b/core/frame/Navigator.idl
similarity index 100%
rename from core/page/Navigator.idl
rename to core/frame/Navigator.idl
diff --git a/core/page/NavigatorID.idl b/core/frame/NavigatorID.idl
similarity index 100%
rename from core/page/NavigatorID.idl
rename to core/frame/NavigatorID.idl
diff --git a/core/page/NavigatorOnLine.idl b/core/frame/NavigatorOnLine.idl
similarity index 100%
rename from core/page/NavigatorOnLine.idl
rename to core/frame/NavigatorOnLine.idl
diff --git a/core/page/Screen.idl b/core/frame/Screen.idl
similarity index 100%
rename from core/page/Screen.idl
rename to core/frame/Screen.idl
diff --git a/core/page/SecurityPolicy.idl b/core/frame/SecurityPolicy.idl
similarity index 100%
rename from core/page/SecurityPolicy.idl
rename to core/frame/SecurityPolicy.idl
diff --git a/core/page/WebKitPoint.idl b/core/frame/WebKitPoint.idl
similarity index 100%
rename from core/page/WebKitPoint.idl
rename to core/frame/WebKitPoint.idl
diff --git a/core/page/Window.idl b/core/frame/Window.idl
similarity index 60%
rename from core/page/Window.idl
rename to core/frame/Window.idl
index c720658..86dd8e0 100644
--- a/core/page/Window.idl
+++ b/core/frame/Window.idl
@@ -24,6 +24,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+// HTML 5 draft spec:
+// http://www.w3.org/html/wg/drafts/html/master/browsers.html#window
 [
     CheckSecurity,
     CustomToV8,
@@ -39,18 +41,18 @@
     [Replaceable] readonly attribute BarProp scrollbars;
     [Replaceable] readonly attribute BarProp statusbar;
     [Replaceable] readonly attribute BarProp toolbar;
-    [Replaceable, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute Navigator navigator;
+    [Replaceable, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] readonly attribute Navigator navigator;
     [Replaceable] readonly attribute Navigator clientInformation;
-    [DoNotCheckSecurity, CustomSetter, Unforgeable, Replaceable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location;
-    [MeasureAs=WindowEvent, NotEnumerable, Replaceable, CustomGetter, CustomSetter] readonly attribute Event event;
+    [DoNotCheckSecurity, Unforgeable, Replaceable, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
+    [Custom, MeasureAs=WindowEvent, NotEnumerable] attribute Event event;
 
     Selection getSelection();
 
     [CheckSecurityForNode] readonly attribute Element frameElement;
 
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void focus();
+    [DoNotCheckSecurity, CallWith=ExecutionContext] void focus();
     [DoNotCheckSecurity] void blur();
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void close();
+    [DoNotCheckSecurity, CallWith=ExecutionContext] void close();
 
     void print();
     void stop();
@@ -115,7 +117,7 @@
     [DoNotCheckSecurity, Unforgeable] readonly attribute Window window;
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute  Window frames;
 
-    [Replaceable, DoNotCheckSecurityOnGetter, CustomSetter] readonly attribute Window opener;
+    [DoNotCheckSecurityOnGetter, CustomSetter] attribute Window opener;
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window parent;
     [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute Window top;
 
@@ -143,10 +145,10 @@
     WebKitPoint webkitConvertPointFromNodeToPage([Default=Undefined] optional Node node,
                                                  [Default=Undefined] optional WebKitPoint p);
 
-    [EnabledAtRuntime=ApplicationCache, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute ApplicationCache applicationCache;
+    [RuntimeEnabled=ApplicationCache, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] readonly attribute ApplicationCache applicationCache;
 
-    [EnabledAtRuntime=SessionStorage, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage sessionStorage;
-    [EnabledAtRuntime=LocalStorage, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage localStorage;
+    [RuntimeEnabled=SessionStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage sessionStorage;
+    [RuntimeEnabled=LocalStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage localStorage;
 
     // This is the interface orientation in degrees. Some examples are:
     //  0 is straight up; -90 is when the device is rotated 90 clockwise;
@@ -168,107 +170,31 @@
 
     [Replaceable] readonly attribute CSS CSS;
 
-    // Events
-    attribute EventHandler onabort;
-    attribute EventHandler onbeforeunload;
-    attribute EventHandler onblur;
-    attribute EventHandler oncanplay;
-    attribute EventHandler oncanplaythrough;
-    attribute EventHandler onchange;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onclick;
-    attribute EventHandler oncontextmenu;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondblclick;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrag;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragend;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragenter;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragleave;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragover;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondragstart;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler ondrop;
-    attribute EventHandler ondurationchange;
-    attribute EventHandler onemptied;
-    attribute EventHandler onended;
-    attribute EventHandler onerror;
-    attribute EventHandler onfocus;
-    attribute EventHandler onhashchange;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler oninput;
-    attribute EventHandler oninvalid;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeydown;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeypress;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onkeyup;
-    attribute EventHandler onload;
-    attribute EventHandler onloadeddata;
-    attribute EventHandler onloadedmetadata;
-    attribute EventHandler onloadstart;
-    attribute EventHandler onmessage;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousedown;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseenter;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseleave;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousemove;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseout;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseover;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmouseup;
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onmousewheel; // Deprecated in favor of onwheel.
-    [PerWorldBindings, ActivityLog=SetterForIsolatedWorlds] attribute EventHandler onwheel;
-    attribute EventHandler onoffline;
-    attribute EventHandler ononline;
-    attribute EventHandler onpagehide;
-    attribute EventHandler onpageshow;
-    attribute EventHandler onpause;
-    attribute EventHandler onplay;
-    attribute EventHandler onplaying;
-    attribute EventHandler onpopstate;
-    attribute EventHandler onprogress;
-    attribute EventHandler onratechange;
-    attribute EventHandler onresize;
-    attribute EventHandler onscroll;
-    attribute EventHandler onseeked;
-    attribute EventHandler onseeking;
-    attribute EventHandler onselect;
-    attribute EventHandler onstalled;
-    attribute EventHandler onstorage;
-    attribute EventHandler onsubmit;
-    attribute EventHandler onsuspend;
-    attribute EventHandler ontimeupdate;
-    attribute EventHandler onunload;
-    attribute EventHandler onvolumechange;
-    attribute EventHandler onwaiting;
-
-    // Not implemented yet.
-    // attribute EventHandler onafterprint;
-    // attribute EventHandler onbeforeprint;
-    // attribute EventHandler onreadystatechange;
-    // attribute EventHandler onredo;
-    // attribute EventHandler onshow;
-    // attribute EventHandler onundo;
-
-    // Webkit extensions
-    attribute EventHandler onreset;
+    // Event handler attributes
+    [RuntimeEnabled=CSSAnimationUnprefixed] attribute EventHandler onanimationend;
+    [RuntimeEnabled=CSSAnimationUnprefixed] attribute EventHandler onanimationiteration;
+    [RuntimeEnabled=CSSAnimationUnprefixed] attribute EventHandler onanimationstart;
+    [RuntimeEnabled=DeviceMotion] attribute EventHandler ondevicemotion;
+    [RuntimeEnabled=DeviceOrientation] attribute EventHandler ondeviceorientation;
+    [Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
     attribute EventHandler onsearch;
-    [EnabledAtRuntime=CSSAnimationUnprefixed] attribute EventHandler onanimationend;
-    [EnabledAtRuntime=CSSAnimationUnprefixed] attribute EventHandler onanimationiteration;
-    [EnabledAtRuntime=CSSAnimationUnprefixed] attribute EventHandler onanimationstart;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchcancel;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchend;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchmove;
+    [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
+    attribute EventHandler ontransitionend;
     attribute EventHandler onwebkitanimationend;
     attribute EventHandler onwebkitanimationiteration;
     attribute EventHandler onwebkitanimationstart;
     attribute EventHandler onwebkittransitionend;
-    attribute EventHandler ontransitionend;
-    [Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
-    [EnabledAtRuntime=Touch] attribute EventHandler ontouchstart;
-    [EnabledAtRuntime=Touch] attribute EventHandler ontouchmove;
-    [EnabledAtRuntime=Touch] attribute EventHandler ontouchend;
-    [EnabledAtRuntime=Touch] attribute EventHandler ontouchcancel;
-
-    [EnabledAtRuntime=DeviceMotion] attribute EventHandler ondevicemotion;
-    [EnabledAtRuntime=DeviceOrientation] attribute EventHandler ondeviceorientation;
+    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
 
     [DeprecateAs=CaptureEvents] void captureEvents();
     [DeprecateAs=ReleaseEvents] void releaseEvents();
 
     // Additional constructors.
     attribute TransitionEventConstructor WebKitTransitionEvent;
-    [EnabledAtRuntime=CSSAnimationUnprefixed] attribute WebKitAnimationEventConstructor AnimationEvent;
-    [CustomConstructor] attribute HTMLImageElementConstructorConstructor Image; // Usable with new operator
+    [RuntimeEnabled=CSSAnimationUnprefixed] attribute WebKitAnimationEventConstructor AnimationEvent;
     // Mozilla has a separate XMLDocument object for XML documents.
     // We just use Document for this.
     attribute DocumentConstructor XMLDocument;
@@ -285,22 +211,22 @@
 
     // Constructors whose name does not match the interface name.
     // FIXME: Remove these once [ImplementedAs] is used and once constructor names match interface names.
-    [EnabledAtRuntime=MediaStream] attribute MediaStreamConstructor webkitMediaStream;
-    [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute AudioContextConstructor webkitAudioContext;
-    [Conditional=WEB_AUDIO, EnabledAtRuntime=WebAudio] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
-    [EnabledAtRuntime=PeerConnection] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
-    [EnabledAtRuntime=ScriptedSpeech] attribute SpeechGrammarConstructor webkitSpeechGrammar;
-    [EnabledAtRuntime=ScriptedSpeech] attribute SpeechGrammarListConstructor webkitSpeechGrammarList;
-    [EnabledAtRuntime=ScriptedSpeech] attribute SpeechRecognitionConstructor webkitSpeechRecognition;
-    [EnabledAtRuntime=ScriptedSpeech] attribute SpeechRecognitionErrorConstructor webkitSpeechRecognitionError;
-    [EnabledAtRuntime=ScriptedSpeech] attribute SpeechRecognitionEventConstructor webkitSpeechRecognitionEvent;
+    [RuntimeEnabled=MediaStream] attribute MediaStreamConstructor webkitMediaStream;
+    [Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute AudioContextConstructor webkitAudioContext;
+    [Conditional=WEB_AUDIO, RuntimeEnabled=WebAudio] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
+    [RuntimeEnabled=PeerConnection] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
+    [RuntimeEnabled=ScriptedSpeech] attribute SpeechGrammarConstructor webkitSpeechGrammar;
+    [RuntimeEnabled=ScriptedSpeech] attribute SpeechGrammarListConstructor webkitSpeechGrammarList;
+    [RuntimeEnabled=ScriptedSpeech] attribute SpeechRecognitionConstructor webkitSpeechRecognition;
+    [RuntimeEnabled=ScriptedSpeech] attribute SpeechRecognitionErrorConstructor webkitSpeechRecognitionError;
+    [RuntimeEnabled=ScriptedSpeech] attribute SpeechRecognitionEventConstructor webkitSpeechRecognitionEvent;
     [Conditional=WEB_AUDIO] attribute PannerNodeConstructor webkitAudioPannerNode;
 
     // Prefixed ShadowRoot constructor should be phased out eventually, but for the moment it must be always exposed.
     // Unprefixed ShadowRoot constructor should be visible when the feature flag is enabled.
     // FIXME: When it's ready to remove WebKitShadowRoot, get rid of both constructors from Window.idl and remove
     // [NoInterfaceObject] from ShadowRoot interface definition.
-    [EnabledAtRuntime=ShadowDOM] attribute ShadowRootConstructor ShadowRoot;
+    [RuntimeEnabled=ShadowDOM] attribute ShadowRootConstructor ShadowRoot;
     [MeasureAs=PrefixedShadowRootConstructor] attribute ShadowRootConstructor WebKitShadowRoot;
 
     // window.toString() requires special handling in V8
@@ -310,6 +236,8 @@
     [Custom, NotEnumerable] getter Window (DOMString name);
 };
 
+Window implements GlobalEventHandlers;
 Window implements ImageBitmapFactories;
-Window implements WindowTimers;
 Window implements WindowBase64;
+Window implements WindowEventHandlers;
+Window implements WindowTimers;
diff --git a/core/page/WindowBase64.idl b/core/frame/WindowBase64.idl
similarity index 100%
rename from core/page/WindowBase64.idl
rename to core/frame/WindowBase64.idl
diff --git a/core/frame/WindowEventHandlers.idl b/core/frame/WindowEventHandlers.idl
new file mode 100644
index 0000000..b7634ae
--- /dev/null
+++ b/core/frame/WindowEventHandlers.idl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2013, Opera Software ASA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Opera Software ASA nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    NoInterfaceObject,
+    ImplementedAs=DOMWindowEventHandlers
+] interface WindowEventHandlers {
+    //attribute EventHandler onafterprint;
+    //attribute EventHandler onbeforeprint;
+    attribute EventHandler onbeforeunload;
+    attribute EventHandler onhashchange;
+    attribute EventHandler onmessage;
+    attribute EventHandler onoffline;
+    attribute EventHandler ononline;
+    attribute EventHandler onpagehide;
+    attribute EventHandler onpageshow;
+    attribute EventHandler onpopstate;
+    attribute EventHandler onresize;
+    attribute EventHandler onstorage;
+    attribute EventHandler onunload;
+};
diff --git a/core/page/WindowTimers.idl b/core/frame/WindowTimers.idl
similarity index 100%
rename from core/page/WindowTimers.idl
rename to core/frame/WindowTimers.idl
diff --git a/core/html/HTMLAnchorElement.idl b/core/html/HTMLAnchorElement.idl
index e0c7068..88cf2d4 100644
--- a/core/html/HTMLAnchorElement.idl
+++ b/core/html/HTMLAnchorElement.idl
@@ -19,31 +19,20 @@
  */
 
 interface HTMLAnchorElement : HTMLElement {
-    [Reflect] attribute DOMString charset;
-    [Reflect] attribute DOMString coords;
-    [Reflect] attribute DOMString download;
-    [Reflect, URL] attribute DOMString href;
-    [Reflect] attribute DOMString hreflang;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString ping;
-    [Reflect] attribute DOMString rel;
-    [Reflect] attribute DOMString rev;
-    [Reflect] attribute DOMString shape;
-    [Reflect] attribute DOMString target;
-    [Reflect] attribute DOMString type;
-
-    [TreatNullAs=NullString] attribute DOMString hash;
-    [TreatNullAs=NullString] attribute DOMString host;
-    [TreatNullAs=NullString] attribute DOMString hostname;
-    [TreatNullAs=NullString] attribute DOMString pathname;
-    [TreatNullAs=NullString] attribute DOMString port;
-    [TreatNullAs=NullString] attribute DOMString protocol;
-    [TreatNullAs=NullString] attribute DOMString search;
-
-    [TreatNullAs=NullString] readonly attribute DOMString origin;
+    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
+    [Reflect, TreatNullAs=NullString] attribute DOMString coords;
+    [Reflect, TreatNullAs=NullString] attribute DOMString download;
+    [Reflect, TreatNullAs=NullString] attribute DOMString hreflang;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString ping;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rel;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rev;
+    [Reflect, TreatNullAs=NullString] attribute DOMString shape;
+    [Reflect, TreatNullAs=NullString] attribute DOMString target;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
 
     readonly attribute DOMString text;
-
-    [NotEnumerable] DOMString toString();
 };
 
+// Force rebuild: crbug.com/307023
+HTMLAnchorElement implements URLUtils;
diff --git a/core/html/HTMLAppletElement.idl b/core/html/HTMLAppletElement.idl
index efb2855..655cd07 100644
--- a/core/html/HTMLAppletElement.idl
+++ b/core/html/HTMLAppletElement.idl
@@ -21,17 +21,17 @@
 [
     CustomLegacyCall
 ] interface HTMLAppletElement : HTMLElement {
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString alt;
-    [Reflect] attribute DOMString archive;
-    [Reflect] attribute DOMString code;
-    [Reflect] attribute DOMString codeBase;
-    [Reflect] attribute DOMString height;
-    [Reflect] attribute DOMString hspace;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString _object;  // "object" is a reserved word
-    [Reflect] attribute DOMString vspace;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
+    [Reflect, TreatNullAs=NullString] attribute DOMString archive;
+    [Reflect, TreatNullAs=NullString] attribute DOMString code;
+    [Reflect, TreatNullAs=NullString] attribute DOMString codeBase;
+    [Reflect, TreatNullAs=NullString] attribute DOMString height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString hspace;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString _object;  // "object" is a reserved word
+    [Reflect, TreatNullAs=NullString] attribute DOMString vspace;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
     [Custom, NotEnumerable] getter boolean (unsigned long index);
     [Custom] setter boolean (unsigned long index, Node value);
     [Custom, NotEnumerable] getter Node (DOMString name);
diff --git a/core/html/HTMLAreaElement.idl b/core/html/HTMLAreaElement.idl
index a9c1fa7..1175ec1 100644
--- a/core/html/HTMLAreaElement.idl
+++ b/core/html/HTMLAreaElement.idl
@@ -19,21 +19,13 @@
  */
 
 interface HTMLAreaElement : HTMLElement {
-    [Reflect] attribute DOMString alt;
-    [Reflect] attribute DOMString coords;
-    [Reflect, URL] attribute DOMString href;
+    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
+    [Reflect, TreatNullAs=NullString] attribute DOMString coords;
     [Reflect] attribute boolean noHref;
-    [Reflect] attribute DOMString ping;
-    [Reflect] attribute DOMString shape;
-    [Reflect] attribute DOMString target;
-
-    // IE Extensions
-    readonly attribute DOMString hash;
-    readonly attribute DOMString host;
-    readonly attribute DOMString hostname;
-    readonly attribute DOMString pathname;
-    readonly attribute DOMString port;
-    readonly attribute DOMString protocol;
-    readonly attribute DOMString search;
+    [Reflect, TreatNullAs=NullString] attribute DOMString ping;
+    [Reflect, TreatNullAs=NullString] attribute DOMString shape;
+    [Reflect, TreatNullAs=NullString] attribute DOMString target;
 };
 
+// Force rebuild: crbug.com/307023
+HTMLAreaElement implements URLUtils;
diff --git a/core/html/HTMLAudioElement.idl b/core/html/HTMLAudioElement.idl
index cbed9d6..ffb4769 100644
--- a/core/html/HTMLAudioElement.idl
+++ b/core/html/HTMLAudioElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=Media,
+    RuntimeEnabled=Media,
     NamedConstructor=Audio([Default=NullString] optional DOMString src)
 ] interface HTMLAudioElement : HTMLMediaElement {
 };
diff --git a/core/html/HTMLBRElement.idl b/core/html/HTMLBRElement.idl
index c909dc1..7c31dfb 100644
--- a/core/html/HTMLBRElement.idl
+++ b/core/html/HTMLBRElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLBRElement : HTMLElement {
-    [Reflect] attribute DOMString clear;
+    [Reflect, TreatNullAs=NullString] attribute DOMString clear;
 };
 
diff --git a/core/html/HTMLBaseElement.idl b/core/html/HTMLBaseElement.idl
index 4d9d39f..408e129 100644
--- a/core/html/HTMLBaseElement.idl
+++ b/core/html/HTMLBaseElement.idl
@@ -19,5 +19,5 @@
 
 interface HTMLBaseElement : HTMLElement {
     [TreatNullAs=NullString] attribute DOMString href;
-    [Reflect] attribute DOMString target;
+    [Reflect, TreatNullAs=NullString] attribute DOMString target;
 };
diff --git a/core/html/HTMLBaseFontElement.idl b/core/html/HTMLBaseFontElement.idl
index b885a05..a4910e8 100644
--- a/core/html/HTMLBaseFontElement.idl
+++ b/core/html/HTMLBaseFontElement.idl
@@ -18,7 +18,7 @@
  */
 
 interface HTMLBaseFontElement : HTMLElement {
-    [Reflect] attribute DOMString color;
-    [Reflect] attribute DOMString face;
+    [Reflect, TreatNullAs=NullString] attribute DOMString color;
+    [Reflect, TreatNullAs=NullString] attribute DOMString face;
     [Reflect] attribute long size;
 };
diff --git a/core/html/HTMLBodyElement.idl b/core/html/HTMLBodyElement.idl
index dfbd907..3ce7850 100644
--- a/core/html/HTMLBodyElement.idl
+++ b/core/html/HTMLBodyElement.idl
@@ -19,36 +19,21 @@
  */
 
 interface HTMLBodyElement : HTMLElement {
-    [Reflect] attribute DOMString aLink;
-    [Reflect] attribute DOMString background;
-    [Reflect] attribute DOMString bgColor;
-    [Reflect] attribute DOMString link;
-    [Reflect] attribute DOMString text;
-    [Reflect] attribute DOMString vLink;
+    [Reflect, TreatNullAs=NullString] attribute DOMString aLink;
+    [Reflect, TreatNullAs=NullString] attribute DOMString background;
+    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
+    [Reflect, TreatNullAs=NullString] attribute DOMString link;
+    [Reflect, TreatNullAs=NullString] attribute DOMString text;
+    [Reflect, TreatNullAs=NullString] attribute DOMString vLink;
 
-    // Event handler attributes
-    [NotEnumerable] attribute EventHandler onbeforeunload;
-    [NotEnumerable] attribute EventHandler onhashchange;
-    [NotEnumerable] attribute EventHandler onmessage;
-    [NotEnumerable] attribute EventHandler onoffline;
-    [NotEnumerable] attribute EventHandler ononline;
-    [NotEnumerable] attribute EventHandler onpopstate;
-    [NotEnumerable] attribute EventHandler onresize;
-    [NotEnumerable] attribute EventHandler onstorage;
-    [NotEnumerable] attribute EventHandler onunload;
+    [Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
 
-    [Conditional=ORIENTATION_EVENTS, NotEnumerable] attribute EventHandler onorientationchange;
-
-    // Overrides of Element attributes (with different implementation in bindings).
-    [NotEnumerable] attribute EventHandler onblur;
-    [NotEnumerable] attribute EventHandler onerror;
-    [NotEnumerable] attribute EventHandler onfocus;
-    [NotEnumerable] attribute EventHandler onload;
-
-    // Not implemented yet.
-    // attribute [NotEnumerable] EventHandler onafterprint;
-    // attribute [NotEnumerable] EventHandler onbeforeprint;
-    // attribute [NotEnumerable] EventHandler onredo;
-    // attribute [NotEnumerable] EventHandler onundo;
+    // Overrides of GlobalEventHandler attributes
+    attribute EventHandler onblur;
+    attribute EventHandler onerror;
+    attribute EventHandler onfocus;
+    attribute EventHandler onload;
+    attribute EventHandler onscroll;
 };
 
+HTMLBodyElement implements WindowEventHandlers;
diff --git a/core/html/HTMLButtonElement.idl b/core/html/HTMLButtonElement.idl
index eb3832f..0fef161 100644
--- a/core/html/HTMLButtonElement.idl
+++ b/core/html/HTMLButtonElement.idl
@@ -22,14 +22,14 @@
     [Reflect] attribute boolean autofocus;
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
-    [Reflect, URL] attribute DOMString formAction;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
     [TreatNullAs=NullString] attribute DOMString formEnctype;
     [TreatNullAs=NullString] attribute DOMString formMethod;
     [Reflect] attribute boolean formNoValidate;
-    [Reflect] attribute DOMString formTarget;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString formTarget;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
     [TreatNullAs=NullString] attribute DOMString type;
-    [Reflect] attribute DOMString value;
+    [Reflect, TreatNullAs=NullString] attribute DOMString value;
 
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
diff --git a/core/html/HTMLCanvasElement.idl b/core/html/HTMLCanvasElement.idl
index c095796..78ada4d 100644
--- a/core/html/HTMLCanvasElement.idl
+++ b/core/html/HTMLCanvasElement.idl
@@ -32,6 +32,6 @@
     [Custom, RaisesException] DOMString toDataURL([TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString type);
 
     // The custom binding is needed to handle context creation attributes.
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] any getContext([Default=Undefined] optional DOMString contextId);
+    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] any getContext([Default=Undefined] optional DOMString contextId);
 };
 
diff --git a/core/html/HTMLDataListElement.idl b/core/html/HTMLDataListElement.idl
index f87df9a..93c8663 100644
--- a/core/html/HTMLDataListElement.idl
+++ b/core/html/HTMLDataListElement.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    EnabledAtRuntime=DataListElement
+    RuntimeEnabled=DataListElement
 ] interface HTMLDataListElement : HTMLElement {
     readonly attribute HTMLCollection options;
 };
diff --git a/core/html/HTMLDialogElement.idl b/core/html/HTMLDialogElement.idl
index 41732ab..6c2d0c8 100644
--- a/core/html/HTMLDialogElement.idl
+++ b/core/html/HTMLDialogElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=DialogElement
+    RuntimeEnabled=DialogElement
 ] interface HTMLDialogElement : HTMLElement {
     [Reflect] attribute boolean open;
     attribute DOMString returnValue;
diff --git a/core/html/HTMLDivElement.idl b/core/html/HTMLDivElement.idl
index 5793564..b2eeb3d 100644
--- a/core/html/HTMLDivElement.idl
+++ b/core/html/HTMLDivElement.idl
@@ -19,6 +19,6 @@
 
 [
 ] interface HTMLDivElement : HTMLElement {
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
 };
 
diff --git a/core/html/HTMLDocument.idl b/core/html/HTMLDocument.idl
index e44baee..764f1af 100644
--- a/core/html/HTMLDocument.idl
+++ b/core/html/HTMLDocument.idl
@@ -18,13 +18,11 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    CustomToV8
-] interface HTMLDocument : Document {
-    [Custom, CustomElementCallbacks=Enable] void open();
+interface HTMLDocument : Document {
+    [Custom, CustomElementCallbacks] void open();
     void close();
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, CustomElementCallbacks=Enable] void write([Default=Undefined] optional DOMString text);
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, CustomElementCallbacks=Enable] void writeln([Default=Undefined] optional DOMString text);
+    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, CustomElementCallbacks] void write([Default=Undefined] optional DOMString text);
+    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, CustomElementCallbacks] void writeln([Default=Undefined] optional DOMString text);
 
     readonly attribute HTMLCollection embeds;
     readonly attribute HTMLCollection plugins;
@@ -39,18 +37,18 @@
     [DeprecateAs=CaptureEvents] void captureEvents();
     [DeprecateAs=ReleaseEvents] void releaseEvents();
 
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString dir;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString designMode;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString dir;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString designMode;
     readonly attribute DOMString compatMode;
 
     readonly attribute Element activeElement;
     boolean hasFocus();
 
     // Deprecated attributes
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString bgColor;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString fgColor;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString alinkColor;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString linkColor;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString vlinkColor;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString bgColor;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString fgColor;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString alinkColor;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString linkColor;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString vlinkColor;
 };
 
diff --git a/core/html/HTMLElement.idl b/core/html/HTMLElement.idl
index d65a413..c5640d5 100644
--- a/core/html/HTMLElement.idl
+++ b/core/html/HTMLElement.idl
@@ -21,33 +21,31 @@
 [
     CustomToV8
 ] interface HTMLElement : Element {
-             [Reflect] attribute DOMString title;
-             [Reflect] attribute DOMString lang;
-             attribute boolean             translate;
-             [Reflect] attribute DOMString dir;
+    [Reflect, TreatNullAs=NullString] attribute DOMString title;
+    [Reflect, TreatNullAs=NullString] attribute DOMString lang;
+    attribute boolean             translate;
+    [Reflect, TreatNullAs=NullString] attribute DOMString dir;
 
-             [CustomElementCallbacks=Enable] attribute long              tabIndex;
-             [CustomElementCallbacks=Enable] attribute boolean           draggable;
-             [Reflect] attribute DOMString webkitdropzone;
-             [Reflect] attribute boolean hidden;
-             [Reflect] attribute DOMString accessKey;
+    [CustomElementCallbacks] attribute long              tabIndex;
+    [CustomElementCallbacks] attribute boolean           draggable;
+    [Reflect, TreatNullAs=NullString] attribute DOMString webkitdropzone;
+    [Reflect] attribute boolean hidden;
+    [Reflect, TreatNullAs=NullString] attribute DOMString accessKey;
 
     // Extensions
-             [TreatNullAs=NullString, CustomElementCallbacks=Enable, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
-             [TreatNullAs=NullString, CustomElementCallbacks=Enable, SetterRaisesException] attribute DOMString innerText;
-             [TreatNullAs=NullString, CustomElementCallbacks=Enable, SetterRaisesException] attribute DOMString outerHTML;
-             [TreatNullAs=NullString, CustomElementCallbacks=Enable, SetterRaisesException] attribute DOMString outerText;
+    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString innerText;
+    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString outerText;
 
-    [RaisesException, CustomElementCallbacks=Enable, MeasureAs=InsertAdjacentElement] Element insertAdjacentElement([Default=Undefined] optional DOMString where,
+    [RaisesException, CustomElementCallbacks, MeasureAs=InsertAdjacentElement] Element insertAdjacentElement([Default=Undefined] optional DOMString where,
                                   [Default=Undefined] optional Element element);
-    [CustomElementCallbacks=Enable, RaisesException] void insertAdjacentHTML([Default=Undefined] optional DOMString where,
+    [CustomElementCallbacks, RaisesException] void insertAdjacentHTML([Default=Undefined] optional DOMString where,
                             [Default=Undefined] optional DOMString html);
     [RaisesException, MeasureAs=InsertAdjacentText] void insertAdjacentText([Default=Undefined] optional DOMString where,
                             [Default=Undefined] optional DOMString text);
 
-    [EnabledAtRuntime=IMEAPI] readonly attribute InputMethodContext inputMethodContext;
+    [RuntimeEnabled=IMEAPI] readonly attribute InputMethodContext inputMethodContext;
 
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable, SetterRaisesException] attribute DOMString contentEditable;
+    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString contentEditable;
     readonly attribute boolean isContentEditable;
 
              attribute boolean spellcheck;
@@ -55,3 +53,4 @@
     void click();
 };
 
+HTMLElement implements GlobalEventHandlers;
diff --git a/core/html/HTMLEmbedElement.idl b/core/html/HTMLEmbedElement.idl
index 98dc854..163ce7d 100644
--- a/core/html/HTMLEmbedElement.idl
+++ b/core/html/HTMLEmbedElement.idl
@@ -21,12 +21,12 @@
 [
     CustomLegacyCall,
 ] interface HTMLEmbedElement : HTMLElement {
-[Reflect] attribute DOMString align;
-[Reflect] attribute DOMString height;
-[Reflect] attribute DOMString name;
-[Reflect, URL] attribute DOMString src;
-[Reflect] attribute DOMString type;
-[Reflect] attribute DOMString width;
+[Reflect, TreatNullAs=NullString] attribute DOMString align;
+[Reflect, TreatNullAs=NullString] attribute DOMString height;
+[Reflect, TreatNullAs=NullString] attribute DOMString name;
+[Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+[Reflect, TreatNullAs=NullString] attribute DOMString type;
+[Reflect, TreatNullAs=NullString] attribute DOMString width;
 [Custom, NotEnumerable] getter boolean (unsigned long index);
 [Custom] setter boolean (unsigned long index, Node value);
 [Custom, NotEnumerable] getter Node (DOMString name);
diff --git a/core/html/HTMLFieldSetElement.idl b/core/html/HTMLFieldSetElement.idl
index 4e77da9..4fc3409 100644
--- a/core/html/HTMLFieldSetElement.idl
+++ b/core/html/HTMLFieldSetElement.idl
@@ -20,7 +20,7 @@
 interface HTMLFieldSetElement : HTMLElement {
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
 
     readonly attribute DOMString type;
 
diff --git a/core/html/HTMLFontElement.idl b/core/html/HTMLFontElement.idl
index d2da3a9..cdfd429 100644
--- a/core/html/HTMLFontElement.idl
+++ b/core/html/HTMLFontElement.idl
@@ -18,8 +18,8 @@
  */
 
 interface HTMLFontElement : HTMLElement {
-    [Reflect] attribute DOMString color;
-    [Reflect] attribute DOMString face;
-    [Reflect] attribute DOMString size;
+    [Reflect, TreatNullAs=NullString] attribute DOMString color;
+    [Reflect, TreatNullAs=NullString] attribute DOMString face;
+    [Reflect, TreatNullAs=NullString] attribute DOMString size;
 };
 
diff --git a/core/html/HTMLFormElement.idl b/core/html/HTMLFormElement.idl
index f1bcb0e..29a319e 100644
--- a/core/html/HTMLFormElement.idl
+++ b/core/html/HTMLFormElement.idl
@@ -19,26 +19,26 @@
  */
 
 interface HTMLFormElement : HTMLElement {
-    [Reflect=accept_charset] attribute DOMString acceptCharset;
-    [Reflect, URL] attribute DOMString action;
-    [Reflect] attribute DOMString autocomplete;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString enctype;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString encoding;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString method;
-    [Reflect] attribute DOMString name;
+    [Reflect=accept_charset, TreatNullAs=NullString] attribute DOMString acceptCharset;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString action;
+    [Reflect, TreatNullAs=NullString] attribute DOMString autocomplete;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString enctype;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString encoding;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString method;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
     [Reflect] attribute boolean noValidate;
-    [Reflect] attribute DOMString target;
+    [Reflect, TreatNullAs=NullString] attribute DOMString target;
 
     readonly attribute HTMLCollection elements;
     readonly attribute long length;
     [ImplementedAs=item] getter Node(unsigned long index);
     [ImplementedAs=anonymousNamedGetter, OverrideBuiltins, NotEnumerable] getter (NodeList or Node)(DOMString name);
 
-    [ImplementedAs=submitFromJavaScript] void submit();
-    [CustomElementCallbacks=Enable] void reset();
+    [ImplementedAs=submitFromJavaScript, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] void submit();
+    [CustomElementCallbacks] void reset();
     boolean checkValidity();
 
-    [EnabledAtRuntime=RequestAutocomplete] void requestAutocomplete();
-    [EnabledAtRuntime=RequestAutocomplete, NotEnumerable] attribute EventHandler onautocomplete;
-    [EnabledAtRuntime=RequestAutocomplete, NotEnumerable] attribute EventHandler onautocompleteerror;
+    [RuntimeEnabled=RequestAutocomplete] void requestAutocomplete();
+    [RuntimeEnabled=RequestAutocomplete] attribute EventHandler onautocomplete;
+    [RuntimeEnabled=RequestAutocomplete] attribute EventHandler onautocompleteerror;
 };
diff --git a/core/html/HTMLFrameElement.idl b/core/html/HTMLFrameElement.idl
index c702fd6..ff93b07 100644
--- a/core/html/HTMLFrameElement.idl
+++ b/core/html/HTMLFrameElement.idl
@@ -20,14 +20,14 @@
 
 interface HTMLFrameElement : HTMLElement {
 
-    [Reflect] attribute DOMString frameBorder;
-    [Reflect] attribute DOMString longDesc;
-    [Reflect] attribute DOMString marginHeight;
-    [Reflect] attribute DOMString marginWidth;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString frameBorder;
+    [Reflect, TreatNullAs=NullString] attribute DOMString longDesc;
+    [Reflect, TreatNullAs=NullString] attribute DOMString marginHeight;
+    [Reflect, TreatNullAs=NullString] attribute DOMString marginWidth;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
     [Reflect] attribute boolean noResize;
-    [Reflect] attribute DOMString scrolling;
-    [Reflect, URL] attribute DOMString src;
+    [Reflect, TreatNullAs=NullString] attribute DOMString scrolling;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
 
     // Introduced in DOM Level 2:
     [CheckSecurityForNode] readonly attribute Document contentDocument;
diff --git a/core/html/HTMLFrameSetElement.idl b/core/html/HTMLFrameSetElement.idl
index 0a35684..b1ec56f 100644
--- a/core/html/HTMLFrameSetElement.idl
+++ b/core/html/HTMLFrameSetElement.idl
@@ -20,32 +20,17 @@
 
 interface HTMLFrameSetElement : HTMLElement {
     [ImplementedAs=anonymousNamedGetter, OverrideBuiltins, NotEnumerable] getter Window (DOMString name);
-    [Reflect] attribute DOMString cols;
-    [Reflect] attribute DOMString rows;
+    [Reflect, TreatNullAs=NullString] attribute DOMString cols;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rows;
 
-    // Event handler attributes
-    [NotEnumerable] attribute EventHandler onbeforeunload;
-    [NotEnumerable] attribute EventHandler onhashchange;
-    [NotEnumerable] attribute EventHandler onmessage;
-    [NotEnumerable] attribute EventHandler onoffline;
-    [NotEnumerable] attribute EventHandler ononline;
-    [NotEnumerable] attribute EventHandler onpopstate;
-    [NotEnumerable] attribute EventHandler onresize;
-    [NotEnumerable] attribute EventHandler onstorage;
-    [NotEnumerable] attribute EventHandler onunload;
+    [Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
 
-    [Conditional=ORIENTATION_EVENTS, NotEnumerable] attribute EventHandler onorientationchange;
-
-    // Overrides of Element attributes (with different implementation in bindings).
-    [NotEnumerable] attribute EventHandler onblur;
-    [NotEnumerable] attribute EventHandler onerror;
-    [NotEnumerable] attribute EventHandler onfocus;
-    [NotEnumerable] attribute EventHandler onload;
-
-    // Not implemented yet.
-    // attribute [NotEnumerable] EventHandler onafterprint;
-    // attribute [NotEnumerable] EventHandler onbeforeprint;
-    // attribute [NotEnumerable] EventHandler onredo;
-    // attribute [NotEnumerable] EventHandler onundo;
+    // Overrides of GlobalEventHandler attributes
+    attribute EventHandler onblur;
+    attribute EventHandler onerror;
+    attribute EventHandler onfocus;
+    attribute EventHandler onload;
+    attribute EventHandler onscroll;
 };
 
+HTMLFrameSetElement implements WindowEventHandlers;
diff --git a/core/html/HTMLHRElement.idl b/core/html/HTMLHRElement.idl
index babe467..302f7e9 100644
--- a/core/html/HTMLHRElement.idl
+++ b/core/html/HTMLHRElement.idl
@@ -18,9 +18,9 @@
  */
 
 interface HTMLHRElement : HTMLElement {
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
     [Reflect] attribute boolean noShade;
-    [Reflect] attribute DOMString size;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString size;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 };
 
diff --git a/core/html/HTMLHeadElement.idl b/core/html/HTMLHeadElement.idl
index 6a784bd..5d17741 100644
--- a/core/html/HTMLHeadElement.idl
+++ b/core/html/HTMLHeadElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLHeadElement : HTMLElement {
-    [Reflect] attribute DOMString profile;
+    [Reflect, TreatNullAs=NullString] attribute DOMString profile;
 };
 
diff --git a/core/html/HTMLHeadingElement.idl b/core/html/HTMLHeadingElement.idl
index 288f439..e339d6e 100644
--- a/core/html/HTMLHeadingElement.idl
+++ b/core/html/HTMLHeadingElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLHeadingElement : HTMLElement {
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
 };
 
diff --git a/core/html/HTMLHtmlElement.idl b/core/html/HTMLHtmlElement.idl
index 430cdc6..294ad79 100644
--- a/core/html/HTMLHtmlElement.idl
+++ b/core/html/HTMLHtmlElement.idl
@@ -18,7 +18,7 @@
  */
 
 interface HTMLHtmlElement : HTMLElement {
-    [Reflect] attribute DOMString version;
-    [Reflect, URL] attribute DOMString manifest;
+    [Reflect, TreatNullAs=NullString] attribute DOMString version;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString manifest;
 };
 
diff --git a/core/html/HTMLIFrameElement.idl b/core/html/HTMLIFrameElement.idl
index d47b1b7..9fcf3a9 100644
--- a/core/html/HTMLIFrameElement.idl
+++ b/core/html/HTMLIFrameElement.idl
@@ -19,19 +19,19 @@
  */
 
 interface HTMLIFrameElement : HTMLElement {
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString frameBorder;
-    [Reflect] attribute DOMString height;
-    [Reflect] attribute DOMString longDesc;
-    [Reflect] attribute DOMString marginHeight;
-    [Reflect] attribute DOMString marginWidth;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString sandbox;
-    [Reflect, EnabledAtRuntime=SeamlessIFrames] attribute boolean seamless;
-    [Reflect] attribute DOMString scrolling;
-    [Reflect, URL] attribute DOMString src;
-    [Reflect] attribute DOMString srcdoc;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString frameBorder;
+    [Reflect, TreatNullAs=NullString] attribute DOMString height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString longDesc;
+    [Reflect, TreatNullAs=NullString] attribute DOMString marginHeight;
+    [Reflect, TreatNullAs=NullString] attribute DOMString marginWidth;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString sandbox;
+    [Reflect, RuntimeEnabled=SeamlessIFrames] attribute boolean seamless;
+    [Reflect, TreatNullAs=NullString] attribute DOMString scrolling;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect, TreatNullAs=NullString] attribute DOMString srcdoc;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 
     // Introduced in DOM Level 2:
     [CheckSecurityForNode] readonly attribute Document contentDocument;
diff --git a/core/html/HTMLImageElement.idl b/core/html/HTMLImageElement.idl
index efd1c6a..1ef0e50 100644
--- a/core/html/HTMLImageElement.idl
+++ b/core/html/HTMLImageElement.idl
@@ -18,29 +18,32 @@
  * Boston, MA 02110-1301, USA.
  */
 
+// FIXME: NamedConstructor does not support optional without Default. Fortunately using Undefined makes
+// us use 0 which happens to be the default width and height anyway.
 [
+ // FIXME(MERGE_DARTIUM): Breaks Dart code gen for Chrome 32 / 1700 roll.
+ //    NamedConstructor=Image([Default=Undefined] optional long width, [Default=Undefined] optional long height)
 ] interface HTMLImageElement : HTMLElement {
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString alt;
-    [Reflect] attribute DOMString border;
-    [Reflect] attribute DOMString crossOrigin;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
+    [Reflect, TreatNullAs=NullString] attribute DOMString border;
+    [Reflect, TreatNullAs=NullString] attribute DOMString crossOrigin;
     attribute long height;
     [Reflect] attribute long hspace;
     [Reflect] attribute boolean isMap;
-    [Reflect, URL] attribute DOMString longDesc;
-    [Reflect, URL] attribute DOMString src;
-    [Reflect, EnabledAtRuntime=Srcset] attribute DOMString srcset;
-    [Reflect] attribute DOMString useMap;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString longDesc;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect, TreatNullAs=NullString, RuntimeEnabled=Srcset] attribute DOMString srcset;
+    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
     [Reflect] attribute long vspace;
     attribute long width;
 
     // Extensions
     readonly attribute boolean complete;
-    [Reflect,URL] attribute DOMString lowsrc;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString lowsrc;
     readonly attribute long naturalHeight;
     readonly attribute long naturalWidth;
     readonly attribute long x;
     readonly attribute long y;
 };
-
diff --git a/core/html/HTMLInputElement.idl b/core/html/HTMLInputElement.idl
index fd6151d..9782e01 100644
--- a/core/html/HTMLInputElement.idl
+++ b/core/html/HTMLInputElement.idl
@@ -21,50 +21,50 @@
 
 [
 ] interface HTMLInputElement : HTMLElement {
-    [Reflect] attribute DOMString accept;
-    [Reflect] attribute DOMString alt;
-    [Reflect] attribute DOMString autocomplete;
+    [Reflect, TreatNullAs=NullString] attribute DOMString accept;
+    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
+    [Reflect, TreatNullAs=NullString] attribute DOMString autocomplete;
     [Reflect] attribute boolean autofocus;
     [Reflect=checked] attribute boolean defaultChecked;
     attribute boolean checked;
-    [Reflect] attribute DOMString dirName;
+    [Reflect, TreatNullAs=NullString] attribute DOMString dirName;
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
     // The 'files' attribute is intentionally not readonly.
     // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22682
     attribute FileList files;
-    [Reflect, URL] attribute DOMString formAction;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString formEnctype;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString formMethod;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString formEnctype;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString formMethod;
     [Reflect] attribute boolean formNoValidate;
-    [Reflect] attribute DOMString formTarget;
-    [CustomElementCallbacks=Enable] attribute unsigned long height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString formTarget;
+    [CustomElementCallbacks] attribute unsigned long height;
     attribute boolean indeterminate;
-    [EnabledAtRuntime=DataListElement] readonly attribute HTMLElement list;
-    [Reflect] attribute DOMString max;
-    [SetterRaisesException, CustomElementCallbacks=Enable] attribute long maxLength;
-    [Reflect] attribute DOMString min;
+    [RuntimeEnabled=DataListElement] readonly attribute HTMLElement list;
+    [Reflect, TreatNullAs=NullString] attribute DOMString max;
+    [SetterRaisesException, CustomElementCallbacks] attribute long maxLength;
+    [Reflect, TreatNullAs=NullString] attribute DOMString min;
     [Reflect] attribute boolean multiple;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString pattern;
-    [Reflect] attribute DOMString placeholder;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString pattern;
+    [Reflect, TreatNullAs=NullString] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
     [Reflect] attribute boolean required;
-    [SetterRaisesException, CustomElementCallbacks=Enable] attribute unsigned long size; // Changed string -> long -> unsigned long
-    [Reflect, URL] attribute DOMString src;
-    [Reflect] attribute DOMString step;
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString type; // readonly dropped as part of DOM level 2
-    [TreatNullAs=NullString, CustomElementCallbacks=Enable] attribute DOMString defaultValue;
+    [SetterRaisesException, CustomElementCallbacks] attribute unsigned long size; // Changed string -> long -> unsigned long
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect, TreatNullAs=NullString] attribute DOMString step;
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString type; // readonly dropped as part of DOM level 2
+    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString defaultValue;
     // See the discussion in https://bugs.webkit.org/show_bug.cgi?id=100085
-    [TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks=Enable] attribute DOMString value;
-    [SetterRaisesException, CustomElementCallbacks=Enable] attribute Date valueAsDate;
-    [SetterRaisesException, CustomElementCallbacks=Enable] attribute double valueAsNumber;
-    [EnabledAtRuntime=InputModeAttribute, Reflect] attribute DOMString inputMode;
+    [TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks] attribute DOMString value;
+    [SetterRaisesException, CustomElementCallbacks] attribute Date valueAsDate;
+    [SetterRaisesException, CustomElementCallbacks] attribute double valueAsNumber;
+    [RuntimeEnabled=InputModeAttribute, Reflect, TreatNullAs=NullString] attribute DOMString inputMode;
 
-    [RaisesException, CustomElementCallbacks=Enable] void stepUp(optional long n);
-    [RaisesException, CustomElementCallbacks=Enable] void stepDown(optional long n);
+    [RaisesException, CustomElementCallbacks] void stepUp(optional long n);
+    [RaisesException, CustomElementCallbacks] void stepDown(optional long n);
 
-    [CustomElementCallbacks=Enable] attribute unsigned long width;
+    [CustomElementCallbacks] attribute unsigned long width;
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
@@ -90,13 +90,13 @@
                            optional DOMString direction);
 
     // Non-standard attributes
-    [Reflect] attribute DOMString align;
-    [Reflect, EnabledAtRuntime=DirectoryUpload] attribute boolean webkitdirectory;
-    [Reflect] attribute DOMString useMap;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, RuntimeEnabled=DirectoryUpload] attribute boolean webkitdirectory;
+    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
     [Reflect] attribute boolean incremental;
-    [Conditional=INPUT_SPEECH, Reflect, EnabledAtRuntime=SpeechInput] attribute boolean webkitSpeech;
-    [Conditional=INPUT_SPEECH, Reflect, EnabledAtRuntime=SpeechInput] attribute boolean webkitGrammar;
-    [Conditional=INPUT_SPEECH, NotEnumerable] attribute EventHandler onwebkitspeechchange;
+    [Conditional=INPUT_SPEECH, Reflect, RuntimeEnabled=SpeechInput] attribute boolean webkitSpeech;
+    [Conditional=INPUT_SPEECH, Reflect, RuntimeEnabled=SpeechInput] attribute boolean webkitGrammar;
+    [Conditional=INPUT_SPEECH] attribute EventHandler onwebkitspeechchange;
 
     // See http://www.w3.org/TR/html-media-capture/
     [Conditional=MEDIA_CAPTURE, Reflect] attribute boolean capture;
diff --git a/core/html/HTMLKeygenElement.idl b/core/html/HTMLKeygenElement.idl
index c8361d8..b4d67df 100644
--- a/core/html/HTMLKeygenElement.idl
+++ b/core/html/HTMLKeygenElement.idl
@@ -30,11 +30,11 @@
 
 interface HTMLKeygenElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
-    [Reflect] attribute DOMString challenge;
+    [Reflect, TreatNullAs=NullString] attribute DOMString challenge;
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
-    [Reflect] attribute DOMString keytype;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString keytype;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
 
     readonly attribute DOMString type;
 
diff --git a/core/html/HTMLLIElement.idl b/core/html/HTMLLIElement.idl
index f79f1cb..9d03749 100644
--- a/core/html/HTMLLIElement.idl
+++ b/core/html/HTMLLIElement.idl
@@ -18,7 +18,7 @@
  */
 
 interface HTMLLIElement : HTMLElement {
-    [Reflect] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
     [Reflect] attribute long value;
 };
 
diff --git a/core/html/HTMLLabelElement.idl b/core/html/HTMLLabelElement.idl
index fa37360..d249897 100644
--- a/core/html/HTMLLabelElement.idl
+++ b/core/html/HTMLLabelElement.idl
@@ -20,7 +20,7 @@
 
 interface HTMLLabelElement : HTMLElement {
     readonly attribute HTMLFormElement form;
-    [Reflect=for] attribute DOMString htmlFor;
+    [Reflect=for, TreatNullAs=NullString] attribute DOMString htmlFor;
     readonly attribute HTMLElement control;
 };
 
diff --git a/core/html/HTMLLegendElement.idl b/core/html/HTMLLegendElement.idl
index e8e8871..0e89ec0 100644
--- a/core/html/HTMLLegendElement.idl
+++ b/core/html/HTMLLegendElement.idl
@@ -20,6 +20,6 @@
 
 interface HTMLLegendElement : HTMLElement {
     readonly attribute HTMLFormElement form;
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
 };
 
diff --git a/core/html/HTMLLinkElement.idl b/core/html/HTMLLinkElement.idl
index 25e900a..6bcce34 100644
--- a/core/html/HTMLLinkElement.idl
+++ b/core/html/HTMLLinkElement.idl
@@ -21,19 +21,19 @@
 
 interface HTMLLinkElement : HTMLElement {
     [Reflect] attribute boolean disabled;
-    [Reflect] attribute DOMString charset;
-    [Reflect, URL] attribute DOMString href;
-    [Reflect] attribute DOMString hreflang;
-    [Reflect] attribute DOMString media;
-    [Reflect] attribute DOMString rel;
-    [Reflect] attribute DOMString rev;
-    [CustomSetter] attribute DOMSettableTokenList sizes;
-    [Reflect] attribute DOMString target;
-    [Reflect] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString href;
+    [Reflect, TreatNullAs=NullString] attribute DOMString hreflang;
+    [Reflect, TreatNullAs=NullString] attribute DOMString media;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rel;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rev;
+    [PutForwards=value] readonly attribute DOMSettableTokenList sizes;
+    [Reflect, TreatNullAs=NullString] attribute DOMString target;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
 
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
 
-    [EnabledAtRuntime=HTMLImports] readonly attribute Document import;
+    [RuntimeEnabled=HTMLImports] readonly attribute Document import;
 };
 
diff --git a/core/html/HTMLMapElement.idl b/core/html/HTMLMapElement.idl
index 01dcae0..2eb6f29 100644
--- a/core/html/HTMLMapElement.idl
+++ b/core/html/HTMLMapElement.idl
@@ -20,6 +20,6 @@
 
 interface HTMLMapElement : HTMLElement {
     readonly attribute HTMLCollection areas;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
 };
 
diff --git a/core/html/HTMLMarqueeElement.idl b/core/html/HTMLMarqueeElement.idl
index b5bda0c..827da3e 100644
--- a/core/html/HTMLMarqueeElement.idl
+++ b/core/html/HTMLMarqueeElement.idl
@@ -21,17 +21,17 @@
     void start();
     void stop();
 
-    [Reflect] attribute DOMString behavior;
-    [Reflect] attribute DOMString bgColor;
-    [Reflect] attribute DOMString direction;
-    [Reflect] attribute DOMString height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString behavior;
+    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
+    [Reflect, TreatNullAs=NullString] attribute DOMString direction;
+    [Reflect, TreatNullAs=NullString] attribute DOMString height;
     [Reflect] attribute unsigned long hspace;
     [SetterRaisesException] attribute long loop;
     [SetterRaisesException] attribute long scrollAmount;
     [SetterRaisesException] attribute long scrollDelay;
     [Reflect] attribute boolean trueSpeed;
     [Reflect] attribute unsigned long vspace;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 
     // FIXME: Implement the following event handler attributes
     // https://bugs.webkit.org/show_bug.cgi?id=49788
diff --git a/core/html/HTMLMediaElement.idl b/core/html/HTMLMediaElement.idl
index 873aeeb..a30598b 100644
--- a/core/html/HTMLMediaElement.idl
+++ b/core/html/HTMLMediaElement.idl
@@ -24,84 +24,80 @@
  */
 
 [
-    EnabledAtRuntime=Media,
+    RuntimeEnabled=Media,
     ActiveDOMObject
 ] interface HTMLMediaElement : HTMLElement {
 
-// error state
-readonly attribute MediaError error;
+    // error state
+    readonly attribute MediaError error;
 
-// network state
-[Reflect, URL] attribute DOMString src;
-[URL] readonly attribute DOMString currentSrc;
+    // network state
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] readonly attribute DOMString currentSrc;
 
-const unsigned short NETWORK_EMPTY = 0;
-const unsigned short NETWORK_IDLE = 1;
-const unsigned short NETWORK_LOADING = 2;
-const unsigned short NETWORK_NO_SOURCE = 3;
-readonly attribute unsigned short networkState;
-attribute DOMString preload;
+    const unsigned short NETWORK_EMPTY = 0;
+    const unsigned short NETWORK_IDLE = 1;
+    const unsigned short NETWORK_LOADING = 2;
+    const unsigned short NETWORK_NO_SOURCE = 3;
+    readonly attribute unsigned short networkState;
+    attribute DOMString preload;
 
-readonly attribute TimeRanges buffered;
-void load();
+    readonly attribute TimeRanges buffered;
+    void load();
     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem);
 
-// ready state
-const unsigned short HAVE_NOTHING = 0;
-const unsigned short HAVE_METADATA = 1;
-const unsigned short HAVE_CURRENT_DATA = 2;
-const unsigned short HAVE_FUTURE_DATA = 3;
-const unsigned short HAVE_ENOUGH_DATA = 4;
-readonly attribute unsigned short readyState;
-readonly attribute boolean seeking;
+    // ready state
+    const unsigned short HAVE_NOTHING = 0;
+    const unsigned short HAVE_METADATA = 1;
+    const unsigned short HAVE_CURRENT_DATA = 2;
+    const unsigned short HAVE_FUTURE_DATA = 3;
+    const unsigned short HAVE_ENOUGH_DATA = 4;
+    readonly attribute unsigned short readyState;
+    readonly attribute boolean seeking;
 
-// playback state
-[SetterRaisesException] attribute double currentTime;
-readonly attribute double initialTime;
-readonly attribute double startTime;
-readonly attribute double duration;
-readonly attribute boolean paused;
-attribute double defaultPlaybackRate;
-attribute double playbackRate;
-readonly attribute TimeRanges played;
-readonly attribute TimeRanges seekable;
-readonly attribute boolean ended;
-[Reflect] attribute boolean autoplay;
-[Reflect] attribute boolean loop;
-void play();
-void pause();
+    // playback state
+    [SetterRaisesException] attribute double currentTime;
+    readonly attribute double duration;
+    readonly attribute boolean paused;
+    attribute double defaultPlaybackRate;
+    attribute double playbackRate;
+    readonly attribute TimeRanges played;
+    readonly attribute TimeRanges seekable;
+    readonly attribute boolean ended;
+    [Reflect] attribute boolean autoplay;
+    [Reflect] attribute boolean loop;
+    void play();
+    void pause();
 
-// controls
-attribute boolean controls;
-[SetterRaisesException] attribute double volume;
-attribute boolean muted;
-[Reflect=muted] attribute boolean defaultMuted;
+    // media controller
+    [Reflect] attribute DOMString mediaGroup;
+    [CustomSetter] attribute MediaController controller;
 
-// WebKit extensions
-attribute boolean webkitPreservesPitch;
+    // controls
+    attribute boolean controls;
+    [SetterRaisesException] attribute double volume;
+    attribute boolean muted;
+    [Reflect=muted] attribute boolean defaultMuted;
 
-readonly attribute boolean webkitHasClosedCaptions;
-attribute boolean webkitClosedCaptionsVisible;
+    // tracks
+    [RuntimeEnabled=VideoTrack] readonly attribute TextTrackList textTracks;
+    [RuntimeEnabled=VideoTrack, RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
 
-// The number of bytes consumed by the media decoder.
-readonly attribute unsigned long webkitAudioDecodedByteCount;
-readonly attribute unsigned long webkitVideoDecodedByteCount;
+    // WebKit extensions
 
-// FIXME: add DeprecateAs=PrefixedMediaGenerateKeyRequest when MediaKeys is ready.
-[EnabledAtRuntime=LegacyEncryptedMedia, RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData);
-[EnabledAtRuntime=LegacyEncryptedMedia, RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId);
-[EnabledAtRuntime=LegacyEncryptedMedia, RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Default=NullString] optional DOMString sessionId);
+    // The number of bytes consumed by the media decoder.
+    [MeasureAs=PrefixedAudioDecodedByteCount] readonly attribute unsigned long webkitAudioDecodedByteCount;
+    [MeasureAs=PrefixedVideoDecodedByteCount] readonly attribute unsigned long webkitVideoDecodedByteCount;
 
-[EnabledAtRuntime=LegacyEncryptedMedia] attribute EventHandler onwebkitkeyadded;
-[EnabledAtRuntime=LegacyEncryptedMedia] attribute EventHandler onwebkitkeyerror;
-[EnabledAtRuntime=LegacyEncryptedMedia] attribute EventHandler onwebkitkeymessage;
-[EnabledAtRuntime=LegacyEncryptedMedia] attribute EventHandler onwebkitneedkey;
+    // FIXME: add DeprecateAs=PrefixedMediaGenerateKeyRequest when MediaKeys is ready.
+    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData);
+    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId);
+    [RuntimeEnabled=PrefixedEncryptedMedia, RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Default=NullString] optional DOMString sessionId);
 
-[EnabledAtRuntime=EncryptedMedia, Conditional=ENCRYPTED_MEDIA_V2] attribute MediaKeys mediaKeys;
+    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyadded;
+    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeyerror;
+    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeymessage;
+    [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitneedkey;
 
-[EnabledAtRuntime=VideoTrack, RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
-[EnabledAtRuntime=VideoTrack] readonly attribute TextTrackList textTracks;
-
-[Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
-[CustomSetter] attribute MediaController controller;
+    [RuntimeEnabled=EncryptedMedia, Conditional=ENCRYPTED_MEDIA_V2] attribute MediaKeys mediaKeys;
 };
diff --git a/core/html/HTMLMetaElement.idl b/core/html/HTMLMetaElement.idl
index 4f7e9cd..8149993 100644
--- a/core/html/HTMLMetaElement.idl
+++ b/core/html/HTMLMetaElement.idl
@@ -18,9 +18,9 @@
  */
 
 interface HTMLMetaElement : HTMLElement {
-    [Reflect] attribute DOMString content;
-    [Reflect=http_equiv] attribute DOMString httpEquiv;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString scheme;
+    [Reflect, TreatNullAs=NullString] attribute DOMString content;
+    [Reflect=http_equiv, TreatNullAs=NullString] attribute DOMString httpEquiv;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString scheme;
 };
 
diff --git a/core/html/HTMLModElement.idl b/core/html/HTMLModElement.idl
index ccb8da4..e5866d3 100644
--- a/core/html/HTMLModElement.idl
+++ b/core/html/HTMLModElement.idl
@@ -18,7 +18,7 @@
  */
 
 interface HTMLModElement : HTMLElement {
-    [Reflect, URL] attribute DOMString cite;
-    [Reflect] attribute DOMString dateTime;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
+    [Reflect, TreatNullAs=NullString] attribute DOMString dateTime;
 };
 
diff --git a/core/html/HTMLOListElement.idl b/core/html/HTMLOListElement.idl
index 1e51615..0168f6d 100644
--- a/core/html/HTMLOListElement.idl
+++ b/core/html/HTMLOListElement.idl
@@ -21,6 +21,6 @@
     [Reflect] attribute boolean compact;
     attribute long start;
     [Reflect] attribute boolean reversed;
-    [Reflect] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
 };
 
diff --git a/core/html/HTMLObjectElement.idl b/core/html/HTMLObjectElement.idl
index 8c33b24..02b1a80 100644
--- a/core/html/HTMLObjectElement.idl
+++ b/core/html/HTMLObjectElement.idl
@@ -22,22 +22,22 @@
     CustomLegacyCall
 ] interface HTMLObjectElement : HTMLElement {
     readonly attribute HTMLFormElement form;
-    [Reflect] attribute DOMString code;
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString archive;
-    [Reflect] attribute DOMString border;
-    [Reflect] attribute DOMString codeBase;
-    [Reflect] attribute DOMString codeType;
-    [Reflect, URL] attribute DOMString data;
+    [Reflect, TreatNullAs=NullString] attribute DOMString code;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString archive;
+    [Reflect, TreatNullAs=NullString] attribute DOMString border;
+    [Reflect, TreatNullAs=NullString] attribute DOMString codeBase;
+    [Reflect, TreatNullAs=NullString] attribute DOMString codeType;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString data;
     [Reflect] attribute boolean declare;
-    [Reflect] attribute DOMString height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString height;
     [Reflect] attribute long hspace;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString standby;
-    [Reflect] attribute DOMString type;
-    [Reflect] attribute DOMString useMap;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString standby;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
     [Reflect] attribute long vspace;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
diff --git a/core/html/HTMLOptGroupElement.idl b/core/html/HTMLOptGroupElement.idl
index 26a782f..d95f738 100644
--- a/core/html/HTMLOptGroupElement.idl
+++ b/core/html/HTMLOptGroupElement.idl
@@ -19,6 +19,6 @@
 
 interface HTMLOptGroupElement : HTMLElement {
     [Reflect] attribute boolean disabled;
-    [Reflect] attribute DOMString label;
+    [Reflect, TreatNullAs=NullString] attribute DOMString label;
 };
 
diff --git a/core/html/HTMLOutputElement.idl b/core/html/HTMLOutputElement.idl
index 7edaca2..caebd48 100644
--- a/core/html/HTMLOutputElement.idl
+++ b/core/html/HTMLOutputElement.idl
@@ -23,9 +23,9 @@
  */
 
 interface HTMLOutputElement : HTMLElement {
-    readonly attribute DOMSettableTokenList htmlFor;
+    [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor;
     readonly attribute HTMLFormElement form;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
 
     readonly attribute DOMString type;
     [TreatNullAs=NullString] attribute DOMString defaultValue;
diff --git a/core/html/HTMLParagraphElement.idl b/core/html/HTMLParagraphElement.idl
index e6bd9e8..55787c3 100644
--- a/core/html/HTMLParagraphElement.idl
+++ b/core/html/HTMLParagraphElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLParagraphElement : HTMLElement {
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
 };
 
diff --git a/core/html/HTMLParamElement.idl b/core/html/HTMLParamElement.idl
index fea2594..2de4b20 100644
--- a/core/html/HTMLParamElement.idl
+++ b/core/html/HTMLParamElement.idl
@@ -18,9 +18,9 @@
  */
 
 interface HTMLParamElement : HTMLElement {
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString type;
-    [Reflect] attribute DOMString value;
-    [Reflect] attribute DOMString valueType;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString value;
+    [Reflect, TreatNullAs=NullString] attribute DOMString valueType;
 };
 
diff --git a/core/html/HTMLQuoteElement.idl b/core/html/HTMLQuoteElement.idl
index c53a1a2..464fd0a 100644
--- a/core/html/HTMLQuoteElement.idl
+++ b/core/html/HTMLQuoteElement.idl
@@ -18,5 +18,5 @@
  */
 
 interface HTMLQuoteElement : HTMLElement {
-    [Reflect, URL] attribute DOMString cite;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
 };
diff --git a/core/html/HTMLScriptElement.idl b/core/html/HTMLScriptElement.idl
index ef68a4d..ea4275d 100644
--- a/core/html/HTMLScriptElement.idl
+++ b/core/html/HTMLScriptElement.idl
@@ -19,13 +19,13 @@
 
 interface HTMLScriptElement : HTMLElement {
     [TreatNullAs=NullString] attribute DOMString text;
-    [Reflect=for] attribute DOMString htmlFor;
-    [Reflect] attribute DOMString event;
-    [Reflect] attribute DOMString charset;
+    [Reflect=for, TreatNullAs=NullString] attribute DOMString htmlFor;
+    [Reflect, TreatNullAs=NullString] attribute DOMString event;
+    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
     attribute boolean async;
     [Reflect] attribute boolean defer;
-    [Reflect, URL] attribute DOMString src;
-    [Reflect] attribute DOMString type;
-    [Reflect] attribute DOMString crossOrigin;
-    [Reflect, EnabledAtRuntime=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString crossOrigin;
+    [Reflect, TreatNullAs=NullString, RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
 };
diff --git a/core/html/HTMLSelectElement.idl b/core/html/HTMLSelectElement.idl
index 8c92af5..477af63 100644
--- a/core/html/HTMLSelectElement.idl
+++ b/core/html/HTMLSelectElement.idl
@@ -24,7 +24,7 @@
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
     attribute boolean multiple;
-    [Reflect] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
     [Reflect] attribute boolean required;
     attribute long size;
 
diff --git a/core/html/HTMLSourceElement.idl b/core/html/HTMLSourceElement.idl
index 5adb052..4e10349 100644
--- a/core/html/HTMLSourceElement.idl
+++ b/core/html/HTMLSourceElement.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    EnabledAtRuntime=Media
+    RuntimeEnabled=Media
 ] interface HTMLSourceElement : HTMLElement {
-[Reflect, URL] attribute DOMString src;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
     attribute DOMString type;
     attribute DOMString media;
 };
diff --git a/core/html/HTMLStyleElement.idl b/core/html/HTMLStyleElement.idl
index a5fd4f3..55d12f2 100644
--- a/core/html/HTMLStyleElement.idl
+++ b/core/html/HTMLStyleElement.idl
@@ -20,9 +20,9 @@
 
 interface HTMLStyleElement : HTMLElement {
     attribute boolean disabled;
-    [EnabledAtRuntime=StyleScoped] attribute boolean scoped;
-    [Reflect] attribute DOMString media;
-    [Reflect] attribute DOMString type;
+    [RuntimeEnabled=StyleScoped] attribute boolean scoped;
+    [Reflect, TreatNullAs=NullString] attribute DOMString media;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
 
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
diff --git a/core/html/HTMLTableCaptionElement.idl b/core/html/HTMLTableCaptionElement.idl
index e29f097..b7b55d7 100644
--- a/core/html/HTMLTableCaptionElement.idl
+++ b/core/html/HTMLTableCaptionElement.idl
@@ -19,6 +19,6 @@
  */
 
 interface HTMLTableCaptionElement : HTMLElement {
-    [Reflect] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
 };
 
diff --git a/core/html/HTMLTableCellElement.idl b/core/html/HTMLTableCellElement.idl
index 3b949f3..a52f05c 100644
--- a/core/html/HTMLTableCellElement.idl
+++ b/core/html/HTMLTableCellElement.idl
@@ -20,19 +20,19 @@
 
 interface HTMLTableCellElement : HTMLElement {
     readonly attribute long cellIndex;
-    [Reflect] attribute DOMString abbr;
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString axis;
-    [Reflect] attribute DOMString bgColor;
-    [Reflect=char] attribute DOMString ch;
-    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect, TreatNullAs=NullString] attribute DOMString abbr;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString axis;
+    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
+    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
+    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
     attribute long colSpan;
-    [Reflect] attribute DOMString headers;
-    [Reflect] attribute DOMString height;
+    [Reflect, TreatNullAs=NullString] attribute DOMString headers;
+    [Reflect, TreatNullAs=NullString] attribute DOMString height;
     [Reflect] attribute boolean noWrap;
     attribute long rowSpan;
-    [Reflect] attribute DOMString scope;
-    [Reflect] attribute DOMString vAlign;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString scope;
+    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 };
 
diff --git a/core/html/HTMLTableColElement.idl b/core/html/HTMLTableColElement.idl
index 725e05d..748711f 100644
--- a/core/html/HTMLTableColElement.idl
+++ b/core/html/HTMLTableColElement.idl
@@ -19,11 +19,11 @@
  */
 
 interface HTMLTableColElement : HTMLElement {
-    [Reflect] attribute DOMString align;
-    [Reflect=char] attribute DOMString ch;
-    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
+    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
     attribute long span;
-    [Reflect] attribute DOMString vAlign;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 };
 
diff --git a/core/html/HTMLTableElement.idl b/core/html/HTMLTableElement.idl
index 1881de3..cd247d6 100644
--- a/core/html/HTMLTableElement.idl
+++ b/core/html/HTMLTableElement.idl
@@ -25,17 +25,17 @@
 
     readonly attribute HTMLCollection rows;
     readonly attribute HTMLCollection tBodies;
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString bgColor;
-    [Reflect] attribute DOMString border;
-    [Reflect] attribute DOMString cellPadding;
-    [Reflect] attribute DOMString cellSpacing;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
+    [Reflect, TreatNullAs=NullString] attribute DOMString border;
+    [Reflect, TreatNullAs=NullString] attribute DOMString cellPadding;
+    [Reflect, TreatNullAs=NullString] attribute DOMString cellSpacing;
 
-    [Reflect] attribute DOMString frame;
+    [Reflect, TreatNullAs=NullString] attribute DOMString frame;
 
-    [Reflect] attribute DOMString rules;
-    [Reflect] attribute DOMString summary;
-    [Reflect] attribute DOMString width;
+    [Reflect, TreatNullAs=NullString] attribute DOMString rules;
+    [Reflect, TreatNullAs=NullString] attribute DOMString summary;
+    [Reflect, TreatNullAs=NullString] attribute DOMString width;
 
     HTMLElement createTHead();
     void deleteTHead();
diff --git a/core/html/HTMLTableRowElement.idl b/core/html/HTMLTableRowElement.idl
index a56f70a..1b2d27d 100644
--- a/core/html/HTMLTableRowElement.idl
+++ b/core/html/HTMLTableRowElement.idl
@@ -22,11 +22,11 @@
     readonly attribute long rowIndex;
     readonly attribute long sectionRowIndex;
     readonly attribute HTMLCollection cells;
-    [Reflect] attribute DOMString align;
-    [Reflect] attribute DOMString bgColor;
-    [Reflect=char] attribute DOMString ch;
-    [Reflect=charoff] attribute DOMString chOff;
-    [Reflect] attribute DOMString vAlign;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
+    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
+    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
+    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
     [RaisesException] HTMLElement insertCell([Default=Undefined] optional long index);
     [RaisesException] void deleteCell([Default=Undefined] optional long index);
 };
diff --git a/core/html/HTMLTableSectionElement.idl b/core/html/HTMLTableSectionElement.idl
index 3126d77..c46e724 100644
--- a/core/html/HTMLTableSectionElement.idl
+++ b/core/html/HTMLTableSectionElement.idl
@@ -19,10 +19,10 @@
  */
 
 interface HTMLTableSectionElement : HTMLElement {
-    [Reflect] attribute DOMString align;
-    [Reflect=char] attribute DOMString ch;
-    [Reflect=charoff] attribute DOMString chOff;
-    [Reflect] attribute DOMString vAlign;
+    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
+    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
+    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
     readonly attribute HTMLCollection rows;
     [RaisesException] HTMLElement insertRow([Default=Undefined] optional long index);
     [RaisesException] void deleteRow([Default=Undefined] optional long index);
diff --git a/core/html/HTMLTextAreaElement.idl b/core/html/HTMLTextAreaElement.idl
index 51c8419..fc3b1ff 100644
--- a/core/html/HTMLTextAreaElement.idl
+++ b/core/html/HTMLTextAreaElement.idl
@@ -22,17 +22,17 @@
 interface HTMLTextAreaElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
     attribute long cols;
-    [Reflect] attribute DOMString dirName;
+    [Reflect, TreatNullAs=NullString] attribute DOMString dirName;
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
     [SetterRaisesException] attribute long maxLength;
-    [Reflect] attribute DOMString name;
-    [Reflect] attribute DOMString placeholder;
+    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect, TreatNullAs=NullString] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
     [Reflect] attribute boolean required;
     attribute long rows;
-    [Reflect] attribute DOMString wrap;
-    [EnabledAtRuntime=InputModeAttribute, Reflect] attribute DOMString inputMode;
+    [Reflect, TreatNullAs=NullString] attribute DOMString wrap;
+    [RuntimeEnabled=InputModeAttribute, Reflect, TreatNullAs=NullString] attribute DOMString inputMode;
 
     readonly attribute DOMString type;
     [TreatNullAs=NullString] attribute DOMString defaultValue;
diff --git a/core/html/HTMLTrackElement.idl b/core/html/HTMLTrackElement.idl
index 9c4e1bf..4127db6 100644
--- a/core/html/HTMLTrackElement.idl
+++ b/core/html/HTMLTrackElement.idl
@@ -24,10 +24,10 @@
  */
 
 [
-    EnabledAtRuntime=VideoTrack
+    RuntimeEnabled=VideoTrack
 ] interface HTMLTrackElement : HTMLElement {
     attribute DOMString kind;
-    [Reflect, URL] attribute DOMString src;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
     attribute DOMString srclang;
     attribute DOMString label;
     [Reflect] attribute boolean default;
diff --git a/core/html/HTMLUListElement.idl b/core/html/HTMLUListElement.idl
index e40350d..1dc6b6d 100644
--- a/core/html/HTMLUListElement.idl
+++ b/core/html/HTMLUListElement.idl
@@ -19,6 +19,6 @@
 
 interface HTMLUListElement : HTMLElement {
     [Reflect] attribute boolean compact;
-    [Reflect] attribute DOMString type;
+    [Reflect, TreatNullAs=NullString] attribute DOMString type;
 };
 
diff --git a/core/html/HTMLVideoElement.idl b/core/html/HTMLVideoElement.idl
index 2b2ab0d..96fc5bf 100644
--- a/core/html/HTMLVideoElement.idl
+++ b/core/html/HTMLVideoElement.idl
@@ -24,29 +24,29 @@
  */
 
 [
-    EnabledAtRuntime=Media
+    RuntimeEnabled=Media
 ] interface HTMLVideoElement : HTMLMediaElement {
     [Reflect] attribute unsigned long width;
     [Reflect] attribute unsigned long height;
     readonly attribute unsigned long videoWidth;
     readonly attribute unsigned long videoHeight;
-    [Reflect, URL] attribute DOMString poster;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString poster;
 
-    readonly attribute boolean webkitSupportsFullscreen;
-    readonly attribute boolean webkitDisplayingFullscreen;
+    [MeasureAs=PrefixedVideoSupportsFullscreen] readonly attribute boolean webkitSupportsFullscreen;
+    [MeasureAs=PrefixedVideoDisplayingFullscreen] readonly attribute boolean webkitDisplayingFullscreen;
 
-    [RaisesException, PerWorldBindings, ActivityLog=Access] void webkitEnterFullscreen();
-    void webkitExitFullscreen();
+    [MeasureAs=PrefixedVideoEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=AccessForAllWorlds] void webkitEnterFullscreen();
+    [MeasureAs=PrefixedVideoExitFullscreen] void webkitExitFullscreen();
 
     // Note the different capitalization of the "S" in FullScreen.
-    [RaisesException, PerWorldBindings, ActivityLog=Access] void webkitEnterFullScreen();
-    void webkitExitFullScreen();
+    [MeasureAs=PrefixedVideoEnterFullScreen, ImplementedAs=webkitEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=AccessForAllWorlds] void webkitEnterFullScreen();
+    [MeasureAs=PrefixedVideoExitFullScreen, ImplementedAs=webkitExitFullscreen] void webkitExitFullScreen();
 
     // The number of frames that have been decoded and made available for
     // playback.
-    readonly attribute unsigned long webkitDecodedFrameCount;
+    [MeasureAs=PrefixedVideoDecodedFrameCount] readonly attribute unsigned long webkitDecodedFrameCount;
 
     // The number of decoded frames that have been dropped by the player
     // for performance reasons during playback.
-    readonly attribute unsigned long webkitDroppedFrameCount;
+    [MeasureAs=PrefixedVideoDroppedFrameCount] readonly attribute unsigned long webkitDroppedFrameCount;
 };
diff --git a/core/html/MediaController.idl b/core/html/MediaController.idl
index 81171ec..254bbc2 100644
--- a/core/html/MediaController.idl
+++ b/core/html/MediaController.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    EnabledAtRuntime=Media,
+    RuntimeEnabled=Media,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface MediaController : EventTarget {
     readonly attribute TimeRanges buffered;
     readonly attribute TimeRanges seekable;
diff --git a/core/html/MediaError.idl b/core/html/MediaError.idl
index 376159d..4cf13ed 100644
--- a/core/html/MediaError.idl
+++ b/core/html/MediaError.idl
@@ -24,12 +24,12 @@
  */
 
 [
-    EnabledAtRuntime=Media
+    RuntimeEnabled=Media
 ] interface MediaError {
-      const unsigned short MEDIA_ERR_ABORTED = 1;
-      const unsigned short MEDIA_ERR_NETWORK = 2;
-      const unsigned short MEDIA_ERR_DECODE = 3;
-      const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
-      const unsigned short MEDIA_ERR_ENCRYPTED = 5;
-      readonly attribute unsigned short code;
+    const unsigned short MEDIA_ERR_ABORTED = 1;
+    const unsigned short MEDIA_ERR_NETWORK = 2;
+    const unsigned short MEDIA_ERR_DECODE = 3;
+    const unsigned short MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
+    [RuntimeEnabled=EncryptedMediaAnyVersion] const unsigned short MEDIA_ERR_ENCRYPTED = 5;
+    readonly attribute unsigned short code;
 };
diff --git a/core/html/MediaKeyError.idl b/core/html/MediaKeyError.idl
index ea442f8..58fddc8 100644
--- a/core/html/MediaKeyError.idl
+++ b/core/html/MediaKeyError.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=EncryptedMediaAnyVersion
+    RuntimeEnabled=EncryptedMediaAnyVersion
 ] interface MediaKeyError {
     const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
     const unsigned short MEDIA_KEYERR_CLIENT = 2;
@@ -33,5 +33,5 @@
     const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
     const unsigned short MEDIA_KEYERR_DOMAIN = 6;
     readonly attribute unsigned short code;
-    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=EncryptedMedia] readonly attribute unsigned long systemCode;
+    [Conditional=ENCRYPTED_MEDIA_V2, RuntimeEnabled=EncryptedMedia] readonly attribute unsigned long systemCode;
 };
diff --git a/core/html/MediaKeyEvent.idl b/core/html/MediaKeyEvent.idl
index 297eabe..c1e08c2 100644
--- a/core/html/MediaKeyEvent.idl
+++ b/core/html/MediaKeyEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=LegacyEncryptedMedia,
+    RuntimeEnabled=PrefixedEncryptedMedia,
     ConstructorTemplate=Event
 ] interface MediaKeyEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString keySystem;
diff --git a/core/html/TimeRanges.idl b/core/html/TimeRanges.idl
index 3aa6b88..e6e6e95 100644
--- a/core/html/TimeRanges.idl
+++ b/core/html/TimeRanges.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=Media
+    RuntimeEnabled=Media
 ] interface TimeRanges {
     readonly attribute unsigned long length;
     [RaisesException] double start(unsigned long index);
diff --git a/core/html/canvas/Canvas2DContextAttributes.idl b/core/html/canvas/Canvas2DContextAttributes.idl
index f756bda..72e0191 100644
--- a/core/html/canvas/Canvas2DContextAttributes.idl
+++ b/core/html/canvas/Canvas2DContextAttributes.idl
@@ -25,8 +25,7 @@
  */
 
 [
-    NoInterfaceObject,
-    EnabledAtRuntime=ExperimentalCanvasFeatures
+    NoInterfaceObject
 ] interface Canvas2DContextAttributes {
     attribute boolean alpha;
 };
diff --git a/core/html/canvas/CanvasRenderingContext2D.idl b/core/html/canvas/CanvasRenderingContext2D.idl
index 69a3ffa..52b20e2 100644
--- a/core/html/canvas/CanvasRenderingContext2D.idl
+++ b/core/html/canvas/CanvasRenderingContext2D.idl
@@ -30,6 +30,7 @@
     void save();
     void restore();
 
+    [RuntimeEnabled=ExperimentalCanvasFeatures, Immutable] attribute SVGMatrix currentTransform;
     void scale(float sx, float sy);
     void rotate(float angle);
     void translate(float tx, float ty);
@@ -128,9 +129,9 @@
     [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y);
     [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y, float width, float height);
     [RaisesException] void drawImage(HTMLVideoElement? video, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
-    [EnabledAtRuntime=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float x, float y);
-    [EnabledAtRuntime=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float x, float y, float width, float height);
-    [EnabledAtRuntime=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
+    [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float x, float y);
+    [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float x, float y, float width, float height);
+    [RuntimeEnabled=ExperimentalCanvasFeatures, RaisesException] void drawImage(ImageBitmap? imageBitmap, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
 
     void drawImageFromRect(HTMLImageElement image,
                            optional float sx, optional float sy, optional float sw, optional float sh,
@@ -162,14 +163,14 @@
     [RaisesException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
 
     // Focus rings
-    [EnabledAtRuntime=ExperimentalCanvasFeatures] void drawSystemFocusRing(Element element);
-    [EnabledAtRuntime=ExperimentalCanvasFeatures] boolean drawCustomFocusRing(Element element);
+    [RuntimeEnabled=ExperimentalCanvasFeatures] void drawSystemFocusRing(Element element);
+    [RuntimeEnabled=ExperimentalCanvasFeatures] boolean drawCustomFocusRing(Element element);
 
     readonly attribute float webkitBackingStorePixelRatio;
 
     [ImplementedAs=imageSmoothingEnabled] attribute boolean webkitImageSmoothingEnabled;
     attribute boolean imageSmoothingEnabled;
 
-    [EnabledAtRuntime=ExperimentalCanvasFeatures] Canvas2DContextAttributes getContextAttributes();
+    Canvas2DContextAttributes getContextAttributes();
 };
 
diff --git a/core/html/canvas/Path.idl b/core/html/canvas/Path.idl
index ce19874..66435a5 100644
--- a/core/html/canvas/Path.idl
+++ b/core/html/canvas/Path.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    EnabledAtRuntime=ExperimentalCanvasFeatures,
+    RuntimeEnabled=ExperimentalCanvasFeatures,
     Constructor,
     Constructor(Path path),
     Constructor(DOMString text),
diff --git a/core/html/ime/InputMethodContext.idl b/core/html/ime/InputMethodContext.idl
index 2ad97b9..1c70178 100644
--- a/core/html/ime/InputMethodContext.idl
+++ b/core/html/ime/InputMethodContext.idl
@@ -29,12 +29,14 @@
  */
 
 // http://www.w3.org/TR/ime-api/
-[
-] interface InputMethodContext {
+interface InputMethodContext : EventTarget {
     readonly attribute Composition composition;
     readonly attribute DOMString locale;
     readonly attribute HTMLElement target;
     void confirmComposition();
     void setCaretRectangle(Node anchor, long x, long y, long w, long h);
-    void setExclusionRectangle(Node anchor, long x, long y, long w, long h);
+
+    attribute EventHandler oncandidatewindowshow;
+    attribute EventHandler oncandidatewindowupdate;
+    attribute EventHandler oncandidatewindowhide;
 };
diff --git a/core/html/shadow/HTMLContentElement.idl b/core/html/shadow/HTMLContentElement.idl
index 77095c2..ab59342 100644
--- a/core/html/shadow/HTMLContentElement.idl
+++ b/core/html/shadow/HTMLContentElement.idl
@@ -26,7 +26,7 @@
 
 [
 ] interface HTMLContentElement : HTMLElement {
-    [Reflect] attribute DOMString select;
+    [Reflect, TreatNullAs=NullString] attribute DOMString select;
     attribute boolean resetStyleInheritance;
     NodeList getDistributedNodes();
 };
diff --git a/core/html/shadow/HTMLShadowElement.idl b/core/html/shadow/HTMLShadowElement.idl
index 3b6351b..faceace 100644
--- a/core/html/shadow/HTMLShadowElement.idl
+++ b/core/html/shadow/HTMLShadowElement.idl
@@ -31,4 +31,5 @@
 interface HTMLShadowElement : HTMLElement {
     attribute boolean resetStyleInheritance;
     [DeprecateAs=HTMLShadowElementOlderShadowRoot] readonly attribute ShadowRoot olderShadowRoot;
+    [RuntimeEnabled=ShadowDOM] NodeList getDistributedNodes();
 };
diff --git a/core/html/track/TextTrack.idl b/core/html/track/TextTrack.idl
index 1067901..1b9eadd 100644
--- a/core/html/track/TextTrack.idl
+++ b/core/html/track/TextTrack.idl
@@ -23,23 +23,27 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+enum TextTrackMode { "disabled",  "hidden",  "showing" };
+enum TextTrackKind { "subtitles",  "captions",  "descriptions",  "chapters",  "metadata" };
+
 [
-    EnabledAtRuntime=VideoTrack
+    RuntimeEnabled=VideoTrack
 ] interface TextTrack : EventTarget {
-    readonly attribute DOMString kind;
+    readonly attribute TextTrackKind kind;
     readonly attribute DOMString label;
     readonly attribute DOMString language;
 
-    attribute DOMString mode;
+             attribute TextTrackMode mode;
 
     readonly attribute TextTrackCueList cues;
     readonly attribute TextTrackCueList activeCues;
-             attribute EventHandler oncuechange;
 
     void addCue(TextTrackCue cue);
     [RaisesException] void removeCue(TextTrackCue cue);
 
-    [Conditional=WEBVTT_REGIONS] readonly attribute TextTrackRegionList regions;
-    [Conditional=WEBVTT_REGIONS] void addRegion(TextTrackRegion region);
-    [RaisesException, Conditional=WEBVTT_REGIONS] void removeRegion(TextTrackRegion region);
+             attribute EventHandler oncuechange;
+
+    [RuntimeEnabled=WebVTTRegions] readonly attribute VTTRegionList regions;
+    [RuntimeEnabled=WebVTTRegions] void addRegion(VTTRegion region);
+    [RaisesException, RuntimeEnabled=WebVTTRegions] void removeRegion(VTTRegion region);
 };
diff --git a/core/html/track/TextTrackCue.idl b/core/html/track/TextTrackCue.idl
index e64d8a3..db7112a 100644
--- a/core/html/track/TextTrackCue.idl
+++ b/core/html/track/TextTrackCue.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    EnabledAtRuntime=VideoTrack,
+    RuntimeEnabled=VideoTrack,
     Constructor(double startTime, double endTime, DOMString text),
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=Document
 ] interface TextTrackCue : EventTarget {
     readonly attribute TextTrack track;
 
@@ -48,6 +48,6 @@
     attribute EventHandler onenter;
     attribute EventHandler onexit;
 
-    [Conditional=WEBVTT_REGIONS] attribute DOMString regionId;
+    [RuntimeEnabled=WebVTTRegions] attribute DOMString regionId;
 };
 
diff --git a/core/html/track/TextTrackCueList.idl b/core/html/track/TextTrackCueList.idl
index 4f28935..a71d687 100644
--- a/core/html/track/TextTrackCueList.idl
+++ b/core/html/track/TextTrackCueList.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=VideoTrack
+    RuntimeEnabled=VideoTrack
 ] interface TextTrackCueList {
     readonly attribute unsigned long length;
     getter TextTrackCue item(unsigned long index);
diff --git a/core/html/track/TextTrackList.idl b/core/html/track/TextTrackList.idl
index bdfcc74..236029e 100644
--- a/core/html/track/TextTrackList.idl
+++ b/core/html/track/TextTrackList.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=VideoTrack,
+    RuntimeEnabled=VideoTrack,
     GenerateIsReachable=owner
 ] interface TextTrackList : EventTarget {
     readonly attribute unsigned long length;
diff --git a/core/html/track/TrackEvent.idl b/core/html/track/TrackEvent.idl
index c1dc03e..3a164cd 100644
--- a/core/html/track/TrackEvent.idl
+++ b/core/html/track/TrackEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=VideoTrack,
+    RuntimeEnabled=VideoTrack,
     ConstructorTemplate=Event
 ] interface TrackEvent : Event {
     [InitializedByEventConstructor, CustomGetter] readonly attribute object track;
diff --git a/core/html/track/TextTrackRegion.idl b/core/html/track/VTTRegion.idl
similarity index 92%
rename from core/html/track/TextTrackRegion.idl
rename to core/html/track/VTTRegion.idl
index 62ca08e..d3793af 100644
--- a/core/html/track/TextTrackRegion.idl
+++ b/core/html/track/VTTRegion.idl
@@ -24,11 +24,9 @@
  */
 
 [
-    Conditional=WEBVTT_REGIONS,
     Constructor(),
-    EnabledAtRuntime=VideoTrack,
-    ConstructorCallWith=ScriptExecutionContext
-] interface TextTrackRegion {
+    RuntimeEnabled=WebVTTRegions
+] interface VTTRegion {
     readonly attribute TextTrack track;
 
     attribute DOMString id;
diff --git a/core/html/track/TextTrackRegionList.idl b/core/html/track/VTTRegionList.idl
similarity index 86%
rename from core/html/track/TextTrackRegionList.idl
rename to core/html/track/VTTRegionList.idl
index 844cd9d..4a06653 100644
--- a/core/html/track/TextTrackRegionList.idl
+++ b/core/html/track/VTTRegionList.idl
@@ -24,12 +24,10 @@
  */
 
 [
-    NoInterfaceObject,
-    Conditional=WEBVTT_REGIONS,
-    EnabledAtRuntime=VideoTrack
-] interface TextTrackRegionList {
+    RuntimeEnabled=WebVTTRegions
+] interface VTTRegionList {
     readonly attribute unsigned long length;
-    getter TextTrackRegion item(unsigned long index);
-    TextTrackRegion getRegionById(DOMString id);
+    getter VTTRegion item(unsigned long index);
+    VTTRegion getRegionById(DOMString id);
 };
 
diff --git a/core/inspector/CodeGeneratorInspector.py b/core/inspector/CodeGeneratorInspector.py
index 20122e6..163ce99 100755
--- a/core/inspector/CodeGeneratorInspector.py
+++ b/core/inspector/CodeGeneratorInspector.py
@@ -1281,8 +1281,8 @@
                                     for prop_data in resolve_data.main_properties + resolve_data.optional_properties:
                                         prop_name = prop_data.p["name"]
                                         prop_field_name = Capitalizer.lower_camel_case_to_upper(prop_name)
-                                        writer.newline("    static const char* %s;\n" % (prop_field_name))
-                                        cpp_writer.newline("const char* %s%s::%s = \"%s\";\n" % (helper.full_name_prefix_for_impl, class_name, prop_field_name, prop_name))
+                                        writer.newline("    static const char %s[];\n" % (prop_field_name))
+                                        cpp_writer.newline("const char %s%s::%s[] = \"%s\";\n" % (helper.full_name_prefix_for_impl, class_name, prop_field_name, prop_name))
 
 
                                 writer.newline("};\n\n")
@@ -1773,6 +1773,8 @@
     backend_method_declaration_list = []
     backend_method_implementation_list = []
     backend_method_name_declaration_list = []
+    backend_method_name_declaration_index_list = []
+    backend_method_name_declaration_current_index = 0
     method_handler_list = []
     frontend_method_list = []
 
@@ -1796,6 +1798,7 @@
             Generator.backend_method_declaration_list,
             Generator.backend_method_implementation_list,
             Generator.backend_method_name_declaration_list,
+            Generator.backend_method_name_declaration_index_list,
             Generator.backend_agent_interface_list,
             Generator.frontend_class_field_lines,
             Generator.frontend_constructor_init_list,
@@ -1921,9 +1924,11 @@
 
         if "parameters" in json_command:
             json_params = json_command["parameters"]
-            method_in_code += Templates.param_container_access_code
             request_message_param = " requestMessageObject"
 
+            if json_params:
+                method_in_code += Templates.param_container_access_code
+
             for json_parameter in json_params:
                 json_param_name = json_parameter["name"]
                 param_raw_type = resolve_param_raw_type(json_parameter, domain_name)
@@ -2063,7 +2068,10 @@
             responseCook=normal_response_cook_text,
             errorCook=error_response_cook_text,
             commandNameIndex=cmd_enum_name))
-        Generator.backend_method_name_declaration_list.append("    \"%s.%s\"," % (domain_name, json_command_name))
+        declaration_command_name = "%s.%s\\0" % (domain_name, json_command_name)
+        Generator.backend_method_name_declaration_list.append("    \"%s\"" % declaration_command_name)
+        Generator.backend_method_name_declaration_index_list.append("    %d," % Generator.backend_method_name_declaration_current_index)
+        Generator.backend_method_name_declaration_current_index += len(declaration_command_name) - 1
 
         Generator.backend_agent_interface_list.append(") = 0;\n")
 
@@ -2307,6 +2315,7 @@
     setters="\n".join(Generator.backend_setters_list),
     fieldDeclarations="\n".join(Generator.backend_field_list),
     methodNameDeclarations="\n".join(Generator.backend_method_name_declaration_list),
+    methodNameDeclarationsIndex="\n".join(Generator.backend_method_name_declaration_index_list),
     methods="\n".join(Generator.backend_method_implementation_list),
     methodDeclarations="\n".join(Generator.backend_method_declaration_list),
     messageHandlers="\n".join(Generator.method_handler_list)))
diff --git a/core/inspector/CodeGeneratorInspectorStrings.py b/core/inspector/CodeGeneratorInspectorStrings.py
index b7e7422..bc3bb73 100644
--- a/core/inspector/CodeGeneratorInspectorStrings.py
+++ b/core/inspector/CodeGeneratorInspectorStrings.py
@@ -60,7 +60,7 @@
 
 $errorCook${responseCook}
     }
-    sendResponse(callId, result, commandNames[$commandNameIndex], protocolErrors, error, resultErrorData);
+    sendResponse(callId, result, commandName($commandNameIndex), protocolErrors, error, resultErrorData);
 }
 """)
 
@@ -101,7 +101,7 @@
 #define InspectorFrontend_h
 
 #include "InspectorTypeBuilder.h"
-#include "core/platform/JSONValues.h"
+#include "platform/JSONValues.h"
 #include "wtf/PassRefPtr.h"
 #include "wtf/text/WTFString.h"
 
@@ -196,7 +196,11 @@
         kMethodNamesEnumSize
     };
 
-    static const char* commandNames[];
+    static const char* commandName(MethodNames);
+
+private:
+    static const char commandNames[];
+    static const size_t commandNamesIndex[];
 };
 
 } // namespace WebCore
@@ -214,16 +218,24 @@
 #include "core/inspector/InspectorAgent.h"
 #include "core/inspector/InspectorFrontendChannel.h"
 #include "core/inspector/JSONParser.h"
-#include "core/platform/JSONValues.h"
+#include "platform/JSONValues.h"
 #include "wtf/text/CString.h"
 #include "wtf/text/WTFString.h"
 
 namespace WebCore {
 
-const char* InspectorBackendDispatcher::commandNames[] = {
+const char InspectorBackendDispatcher::commandNames[] = {
 $methodNameDeclarations
 };
 
+const size_t InspectorBackendDispatcher::commandNamesIndex[] = {
+$methodNameDeclarationsIndex
+};
+
+const char* InspectorBackendDispatcher::commandName(MethodNames index) {
+    COMPILE_ASSERT(static_cast<int>(kMethodNamesEnumSize) == WTF_ARRAY_LENGTH(commandNamesIndex), command_name_array_problem);
+    return commandNames + commandNamesIndex[index];
+}
 
 class InspectorBackendDispatcherImpl : public InspectorBackendDispatcher {
 public:
@@ -281,9 +293,8 @@
         static CallHandler handlers[] = {
 $messageHandlers
         };
-        size_t length = WTF_ARRAY_LENGTH(commandNames);
-        for (size_t i = 0; i < length; ++i)
-            dispatchMap.add(commandNames[i], handlers[i]);
+        for (size_t i = 0; i < kMethodNamesEnumSize; ++i)
+            dispatchMap.add(commandName(static_cast<MethodNames>(i)), handlers[i]);
     }
 
     RefPtr<JSONValue> parsedMessage = parseJSON(message);
@@ -503,8 +514,6 @@
     m_alreadySent = true;
 }
 
-COMPILE_ASSERT(static_cast<int>(InspectorBackendDispatcher::kMethodNamesEnumSize) == WTF_ARRAY_LENGTH(InspectorBackendDispatcher::commandNames), command_name_array_problem);
-
 } // namespace WebCore
 
 """)
@@ -516,7 +525,7 @@
 #include "InspectorFrontend.h"
 
 #include "core/inspector/InspectorFrontendChannel.h"
-#include "core/platform/JSONValues.h"
+#include "platform/JSONValues.h"
 #include "wtf/text/CString.h"
 #include "wtf/text/WTFString.h"
 
@@ -537,7 +546,7 @@
 #ifndef InspectorTypeBuilder_h
 #define InspectorTypeBuilder_h
 
-#include "core/platform/JSONValues.h"
+#include "platform/JSONValues.h"
 #include "wtf/Assertions.h"
 #include "wtf/PassRefPtr.h"
 
diff --git a/core/inspector/InspectorFrontendHost.idl b/core/inspector/InspectorFrontendHost.idl
index 678a36c..d753646 100644
--- a/core/inspector/InspectorFrontendHost.idl
+++ b/core/inspector/InspectorFrontendHost.idl
@@ -37,11 +37,9 @@
     void setZoomFactor(float zoom);
     void inspectedURLChanged(DOMString newURL);
 
-    void setAttachedWindowHeight(unsigned long height);
     void setInjectedScriptForOrigin(DOMString origin, DOMString script);
 
     void copyText(DOMString text);
-    void close(DOMString url);
 
     [Custom] DOMString platform();
     [Custom] DOMString port();
@@ -53,20 +51,10 @@
     [Custom] void recordPanelShown(unsigned long panelCode);
     [Custom] void recordSettingChanged(unsigned long settingChanged);
 
-    DOMString loadResourceSynchronously(DOMString url);
     DOMString getSelectionBackgroundColor();
     DOMString getSelectionForegroundColor();
 
     DOMFileSystem isolatedFileSystem(DOMString fileSystemId, DOMString registeredName);
 
     boolean isUnderTest();
-
-    // Deprecated
-    boolean canInspectWorkers();
-    boolean canSaveAs();
-    boolean canSave();
-    boolean supportsFileSystems();
-    void loaded();
-    DOMString hiddenPanels();
-    DOMString localizedStringsURL();
 };
diff --git a/core/inspector/InspectorInstrumentation.idl b/core/inspector/InspectorInstrumentation.idl
index 578c857..b333401 100644
--- a/core/inspector/InspectorInstrumentation.idl
+++ b/core/inspector/InspectorInstrumentation.idl
@@ -68,28 +68,28 @@
     void didClearWindowObjectInWorld([Keep] Frame*, DOMWrapperWorld*);
 
     [DOMDebugger, Inline=FastReturn]
-    void willInsertDOMNode(Document*, Node* parent);
+    void willInsertDOMNode([Keep] Node* parent);
 
     [DOM, DOMDebugger, Inline=FastReturn]
-    void didInsertDOMNode(Document*, Node*);
+    void didInsertDOMNode([Keep] Node*);
 
     [DOMDebugger, DOM, Inline=FastReturn]
-    void willRemoveDOMNode(Document* document, Node*);
+    void willRemoveDOMNode([Keep] Node*);
 
     [DOMDebugger, DOM, Inline=FastReturn]
-    void willModifyDOMAttr(Document*, Element*, const AtomicString& oldValue, const AtomicString& newValue);
+    void willModifyDOMAttr([Keep] Element*, const AtomicString& oldValue, const AtomicString& newValue);
 
     [DOM, Inline=FastReturn]
-    void didModifyDOMAttr(Document*, Element*, const AtomicString& name, const AtomicString& value);
+    void didModifyDOMAttr([Keep] Element*, const AtomicString& name, const AtomicString& value);
 
     [DOM, Inline=FastReturn]
-    void didRemoveDOMAttr(Document*, Element*, const AtomicString& name);
+    void didRemoveDOMAttr([Keep] Element*, const AtomicString& name);
 
     [DOM, Inline=FastReturn]
-    void characterDataModified(Document*, CharacterData*);
+    void characterDataModified([Keep] CharacterData*);
 
     [DOM, DOMDebugger, Inline=FastReturn]
-    void didInvalidateStyleAttr(Document*, Node*);
+    void didInvalidateStyleAttr([Keep] Node*);
 
     [CSS, Inline=FastReturn]
     void activeStyleSheetsUpdated([Keep] Document*, const Vector<RefPtr<StyleSheet> >& newSheets);
@@ -119,7 +119,7 @@
     void didChangeRegionOverset([Keep] Document*, NamedFlow*);
 
     [DOMDebugger, Inline=FastReturn]
-    void willSendXMLHttpRequest(ScriptExecutionContext*, const String& url);
+    void willSendXMLHttpRequest(ExecutionContext*, const String& url);
 
     [DOMDebugger, Inline=FastReturn]
     void didFireWebGLError(Element*, const String& errorName);
@@ -134,19 +134,19 @@
     void didScheduleResourceRequest([Keep] Document*, const String& url);
 
     [DOMDebugger, Timeline, Inline=FastReturn]
-    void didInstallTimer([Keep] ScriptExecutionContext*, int timerId, int timeout, bool singleShot);
+    void didInstallTimer([Keep] ExecutionContext*, int timerId, int timeout, bool singleShot);
 
     [DOMDebugger, Timeline, Inline=FastReturn]
-    void didRemoveTimer([Keep] ScriptExecutionContext*, int timerId);
+    void didRemoveTimer([Keep] ExecutionContext*, int timerId);
 
     [Timeline, Inline=FastReturn]
-    InspectorInstrumentationCookie willCallFunction([Keep] ScriptExecutionContext*, const String& scriptName, int scriptLine);
+    InspectorInstrumentationCookie willCallFunction([Keep] ExecutionContext*, const String& scriptName, int scriptLine);
 
     [Timeline, Inline=FastReturn]
     void didCallFunction(const InspectorInstrumentationCookie&);
 
     [Timeline, Inline=FastReturn]
-    InspectorInstrumentationCookie willDispatchXHRReadyStateChangeEvent([Keep] ScriptExecutionContext*, XMLHttpRequest*);
+    InspectorInstrumentationCookie willDispatchXHRReadyStateChangeEvent([Keep] ExecutionContext*, XMLHttpRequest*);
 
     [Timeline, Inline=FastReturn]
     void didDispatchXHRReadyStateChangeEvent(const InspectorInstrumentationCookie&);
@@ -158,7 +158,7 @@
     void didDispatchEvent(const InspectorInstrumentationCookie&);
 
     [DOMDebugger, Inline=FastReturn]
-    InspectorInstrumentationCookie willHandleEvent(ScriptExecutionContext*, Event*);
+    InspectorInstrumentationCookie willHandleEvent(ExecutionContext*, Event*);
 
     [Debugger, Inline=FastReturn]
     void didHandleEvent(const InspectorInstrumentationCookie&);
@@ -182,7 +182,7 @@
     void didCreateIsolatedContext([Keep] Frame*, ScriptState*, SecurityOrigin*);
 
     [DOMDebugger, Timeline, Inline=FastReturn]
-    InspectorInstrumentationCookie willFireTimer([Keep] ScriptExecutionContext*, int timerId);
+    InspectorInstrumentationCookie willFireTimer([Keep] ExecutionContext*, int timerId);
 
     [Debugger, Timeline, Inline=FastReturn]
     void didFireTimer(const InspectorInstrumentationCookie&);
@@ -196,6 +196,12 @@
     [Timeline, Page, Inline=FastReturn]
     void didLayout(const InspectorInstrumentationCookie&, RenderObject* root);
 
+    [Timeline, Inline=FastReturn]
+    void willAutosizeText([Keep] RenderObject* root);
+
+    [Timeline, Inline=FastReturn]
+    void didAutosizeText([Keep] RenderObject* root);
+
     [Page, Inline=FastReturn]
     void didScroll(Page*);
 
@@ -203,7 +209,7 @@
     void didResizeMainFrame(Page*);
 
     [Timeline, Inline=FastReturn]
-    InspectorInstrumentationCookie willDispatchXHRLoadEvent([Keep] ScriptExecutionContext*, XMLHttpRequest*);
+    InspectorInstrumentationCookie willDispatchXHRLoadEvent([Keep] ExecutionContext*, XMLHttpRequest*);
 
     [Timeline, Inline=FastReturn]
     void didDispatchXHRLoadEvent(const InspectorInstrumentationCookie&);
@@ -217,7 +223,7 @@
     [Timeline, Inline=FastReturn]
     void willPaint([Keep] RenderObject*);
 
-    [Timeline, Page, Inline=FastReturn]
+    [Timeline, Page, LayerTree, Inline=FastReturn]
     void didPaint([Keep] RenderObject*, GraphicsContext*, const LayoutRect&);
 
     [Timeline, Inline=FastReturn]
@@ -242,12 +248,6 @@
     void applyUserAgentOverride(Frame*, String* userAgent);
 
     [Page, Inline=FastReturn]
-    void applyScreenWidthOverride(Frame*, long* width);
-
-    [Page, Inline=FastReturn]
-    void applyScreenHeightOverride(Frame*, long* height);
-
-    [Page, Inline=FastReturn]
     void applyEmulatedMedia(Frame*, String* media);
 
     [Timeline, Resource]
@@ -292,33 +292,33 @@
     void didFailLoading(Frame* frame, unsigned long identifier, DocumentLoader*, const ResourceError&);
 
     [Resource]
-    void documentThreadableLoaderStartedLoadingForClient(ScriptExecutionContext*, unsigned long identifier, ThreadableLoaderClient* client);
+    void documentThreadableLoaderStartedLoadingForClient(ExecutionContext*, unsigned long identifier, ThreadableLoaderClient* client);
 
     [Resource]
-    void willLoadXHR(ScriptExecutionContext*, ThreadableLoaderClient* client, const String& method, const KURL& url, bool async, PassRefPtr<FormData>, const HTTPHeaderMap& headers, bool includeCredentials);
+    void willLoadXHR(ExecutionContext*, ThreadableLoaderClient* client, const String& method, const KURL& url, bool async, PassRefPtr<FormData>, const HTTPHeaderMap& headers, bool includeCredentials);
 
     [Resource]
-    void didFailXHRLoading(ScriptExecutionContext*, ThreadableLoaderClient* client);
+    void didFailXHRLoading(ExecutionContext*, ThreadableLoaderClient* client);
 
     [Console, Resource]
-    void didFinishXHRLoading(ScriptExecutionContext*, ThreadableLoaderClient* client, unsigned long identifier, ScriptString sourceString, const String& url, const String& sendURL, unsigned sendLineNumber);
+    void didFinishXHRLoading(ExecutionContext*, ThreadableLoaderClient* client, unsigned long identifier, ScriptString sourceString, const String& url, const String& sendURL, unsigned sendLineNumber);
 
     [Resource]
-    void didReceiveXHRResponse(ScriptExecutionContext*, unsigned long identifier);
+    void didReceiveXHRResponse(ExecutionContext*, unsigned long identifier);
 
     [Resource]
-    void scriptImported(ScriptExecutionContext*, unsigned long identifier, const String& sourceString);
+    void scriptImported(ExecutionContext*, unsigned long identifier, const String& sourceString);
 
     [Debugger]
-    void scriptExecutionBlockedByCSP(ScriptExecutionContext*, const String& directiveText);
+    void scriptExecutionBlockedByCSP(ExecutionContext*, const String& directiveText);
 
     [Resource]
-    void didReceiveScriptResponse(ScriptExecutionContext*, unsigned long identifier);
+    void didReceiveScriptResponse(ExecutionContext*, unsigned long identifier);
 
     [Timeline, Inspector, DOM, Page]
     void domContentLoadedEventFired([Keep] Frame*);
 
-    [DOM, Timeline, Page]
+    [Timeline, Page]
     void loadEventFired([Keep] Frame*);
 
     [Page]
@@ -382,13 +382,13 @@
     void didDispatchDOMStorageEvent(Page* page, const String& key, const String& oldValue, const String& newValue, StorageType storageType, SecurityOrigin* securityOrigin);
 
     [Worker]
-    void didStartWorkerGlobalScope(ScriptExecutionContext*, WorkerGlobalScopeProxy* proxy, const KURL& url);
+    void didStartWorkerGlobalScope(ExecutionContext*, WorkerGlobalScopeProxy* proxy, const KURL& url);
 
     [WorkerRuntime]
     void willEvaluateWorkerScript([Keep] WorkerGlobalScope* context, int workerThreadStartMode);
 
     [Worker]
-    void workerGlobalScopeTerminated(ScriptExecutionContext*, WorkerGlobalScopeProxy* proxy);
+    void workerGlobalScopeTerminated(ExecutionContext*, WorkerGlobalScopeProxy* proxy);
 
     [Profiler, Timeline]
     void willProcessTask(WorkerGlobalScope* context);
@@ -424,7 +424,7 @@
     void didReceiveWebSocketFrameError(Document*, unsigned long identifier, const String& errorMessage);
 
     [ApplicationCache, Inline=FastReturn]
-    void networkStateChanged(Page*);
+    void networkStateChanged(Page*, bool online);
 
     [ApplicationCache, Inline=FastReturn]
     void updateApplicationCacheStatus([Keep] Frame*);
@@ -448,35 +448,35 @@
     // FIXME: Convert to ScriptArguments to match non-worker context.
     // Use the same implementation as above as a similar method dispatched on Page.
     [Console]
-    void addMessageToConsole(ScriptExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, PassRefPtr<ScriptCallStack> callStack, unsigned long requestIdentifier = 0);
+    void addMessageToConsole(ExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, PassRefPtr<ScriptCallStack> callStack, unsigned long requestIdentifier = 0);
 
     // Use the same implementation as above as a similar method dispatched on Page.
     [Console]
-    void addMessageToConsole(ScriptExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, const String& scriptId, unsigned lineNumber, unsigned columnNumber, ScriptState* state, unsigned long requestIdentifier = 0);
+    void addMessageToConsole(ExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, const String& scriptId, unsigned lineNumber, unsigned columnNumber, ScriptState* state, unsigned long requestIdentifier = 0);
 
     [Console, Debugger]
-    void addMessageToConsole(ScriptExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, ScriptState* state, PassRefPtr<ScriptArguments> arguments, unsigned long requestIdentifier = 0);
+    void addMessageToConsole(ExecutionContext* context, MessageSource source, MessageType type, MessageLevel level, const String& message, ScriptState* state, PassRefPtr<ScriptArguments> arguments, unsigned long requestIdentifier = 0);
 
     [Console]
-    void consoleCount(ScriptExecutionContext* context, ScriptState* state, PassRefPtr<ScriptArguments> arguments);
+    void consoleCount(ExecutionContext* context, ScriptState* state, PassRefPtr<ScriptArguments> arguments);
 
     [Timeline, Console]
-    void consoleTime([Keep] ScriptExecutionContext* context, const String& title);
+    void consoleTime([Keep] ExecutionContext* context, const String& title);
 
     [Console, Timeline]
-    void consoleTimeEnd([Keep] ScriptExecutionContext* context, const String& title, ScriptState* state);
+    void consoleTimeEnd([Keep] ExecutionContext* context, const String& title, ScriptState* state);
 
     [Timeline, Inline=FastReturn]
-    void consoleTimeStamp([Keep] ScriptExecutionContext* context, const String& title);
+    void consoleTimeStamp([Keep] ExecutionContext* context, const String& title);
 
     [Console, Inline=FastReturn]
-    void consoleTimeline([Keep] ScriptExecutionContext* context, const String& title, ScriptState* state);
+    void consoleTimeline([Keep] ExecutionContext* context, const String& title, ScriptState* state);
 
     [Console, Inline=FastReturn]
-    void consoleTimelineEnd([Keep] ScriptExecutionContext* context, const String& title, ScriptState* state);
+    void consoleTimelineEnd([Keep] ExecutionContext* context, const String& title, ScriptState* state);
 
     [Profiler]
-    void addProfile(ScriptExecutionContext* context, PassRefPtr<ScriptProfile> profile, PassRefPtr<ScriptCallStack> callStack);
+    void addProfile(ExecutionContext* context, PassRefPtr<ScriptProfile> profile, PassRefPtr<ScriptCallStack> callStack);
 }
 
 interface InspectorDatabaseInstrumentation {
@@ -484,30 +484,27 @@
 #include "modules/webdatabase/Database.h"
 
     [Database]
-    void didOpenDatabase(ScriptExecutionContext* context, PassRefPtr<Database> database, const String& domain, const String& name, const String& version);
+    void didOpenDatabase(ExecutionContext* context, PassRefPtr<Database> database, const String& domain, const String& name, const String& version);
 }
 
 interface InspectorOverrides {
     [CSS, Inline=FastReturn]
     bool forcePseudoState([Keep] Element* element, CSSSelector::PseudoType pseudoState);
 
-    [Page, Inline=FastReturn]
-    bool shouldApplyScreenWidthOverride(Frame* frame);
-
-    [Page, Inline=FastReturn]
-    bool shouldApplyScreenHeightOverride(Frame* frame);
-
     [Worker, Inline=FastReturn]
-    bool shouldPauseDedicatedWorkerOnStart(ScriptExecutionContext* context);
+    bool shouldPauseDedicatedWorkerOnStart(ExecutionContext* context);
 
     [Page, Inline=FastReturn]
     GeolocationPosition* overrideGeolocationPosition(Page* page, [DefaultReturn] GeolocationPosition* position);
 
     [Page, Inline=FastReturn]
-    DeviceOrientationData* overrideDeviceOrientation(Page* page, [DefaultReturn] DeviceOrientationData* deviceOrientation);
+    float overrideTextAutosizingFontScaleFactor(Page* page, [DefaultReturn] float fontScaleFactor);
+
+    [Page, Inline=FastReturn]
+    bool overrideTextAutosizing(Page* page, [DefaultReturn] bool textAutosizing);
 
     [Profiler]
-    String getCurrentUserInitiatedProfileName(ScriptExecutionContext* context, bool incrementProfileNumber);
+    String getCurrentUserInitiatedProfileName(ExecutionContext* context, bool incrementProfileNumber);
 }
 
 
diff --git a/core/page/AbstractView.idl b/core/page/AbstractView.idl
deleted file mode 100644
index 60c537f..0000000
--- a/core/page/AbstractView.idl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// Introduced in DOM Level 2:
-[
-
-] interface AbstractView {
-    readonly attribute Document document;
-    readonly attribute StyleMedia styleMedia;
-};
-
diff --git a/core/page/EventSource.idl b/core/page/EventSource.idl
index 6aeade1..b43938d 100644
--- a/core/page/EventSource.idl
+++ b/core/page/EventSource.idl
@@ -33,7 +33,7 @@
     GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor(DOMString url, optional Dictionary eventSourceInit),
-    ConstructorCallWith=ScriptExecutionContext,
+    ConstructorCallWith=ExecutionContext,
     ConstructorRaisesException
 ] interface EventSource : EventTarget {
 
diff --git a/core/page/PagePopupController.idl b/core/page/PagePopupController.idl
index 453850d..069098c 100644
--- a/core/page/PagePopupController.idl
+++ b/core/page/PagePopupController.idl
@@ -30,7 +30,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=PagePopup
+    RuntimeEnabled=PagePopup
 ] interface PagePopupController {
     void setValueAndClosePopup(long numberValue, DOMString stringValue);
     void setValue(DOMString value);
diff --git a/core/page/Selection.idl b/core/page/Selection.idl
index e5d7a9e..8f03f8e 100644
--- a/core/page/Selection.idl
+++ b/core/page/Selection.idl
@@ -45,7 +45,7 @@
     [RaisesException] void collapseToEnd();
     [RaisesException] void collapseToStart();
 
-    [CustomElementCallbacks=Enable] void deleteFromDocument();
+    [CustomElementCallbacks] void deleteFromDocument();
     boolean containsNode([Default=Undefined] optional Node node,
                          [Default=Undefined] optional boolean allowPartial);
     [RaisesException] void selectAllChildren([Default=Undefined] optional Node node);
diff --git a/core/page/WindowPagePopup.idl b/core/page/WindowPagePopup.idl
index 0ae9bbe..e4b5839 100644
--- a/core/page/WindowPagePopup.idl
+++ b/core/page/WindowPagePopup.idl
@@ -29,8 +29,8 @@
  */
 
 [
-    EnabledAtRuntime=PagePopup,
+    RuntimeEnabled=PagePopup,
     ImplementedAs=DOMWindowPagePopup
 ] partial interface Window {
-    [EnabledPerContext=pagePopup] readonly attribute PagePopupController pagePopupController;
+    [PerContextEnabled=PagePopup] readonly attribute PagePopupController pagePopupController;
 };
diff --git a/core/scripts/action_derivedsourcesallinone.py b/core/scripts/action_derivedsourcesallinone.py
deleted file mode 100644
index fec5088..0000000
--- a/core/scripts/action_derivedsourcesallinone.py
+++ /dev/null
@@ -1,225 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Copyright (c) 2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# action_derivedsourcesallinone.py generates a single cpp file that includes
-# all v8 bindings cpp files generated from idls. Files can be assigned into
-# multiple output files, to reduce maximum compilation unit size and allow
-# parallel compilation.
-#
-# usage: action_derivedsourcesallinone.py IDL_FILES_LIST -- OUTPUT_FILE1 OUTPUT_FILE2 ...
-#
-# Note that IDL_FILES_LIST is a text file containing the IDL file paths.
-
-import errno
-import os
-import os.path
-import re
-import subprocess
-import sys
-
-# A regexp for finding Conditional attributes in interface definitions.
-conditionalPattern = re.compile('interface[\s]*\[[^\]]*Conditional=([\_0-9a-zA-Z&|]*)')
-
-copyrightTemplate = """/*
- * THIS FILE WAS AUTOMATICALLY GENERATED, DO NOT EDIT.
- *
- * This file was generated by the action_derivedsourcesallinone.py script.
- *
- * Copyright (C) 2009 Google Inc.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-"""
-
-
-# Wraps conditional with ENABLE() and replace '&','|' with '&&','||' if more than one conditional is specified.
-def formatConditional(conditional):
-    def wrapWithEnable(s):
-        if re.match('[|&]$', s):
-            return s * 2
-        return 'ENABLE(' + s + ')'
-    return ' '.join(map(wrapWithEnable, conditional))
-
-
-# Find the conditional interface attribute.
-def extractConditional(idlFilePath):
-    conditional = None
-
-    # Read file and look for "interface [ Conditional=XXX ]".
-    idlFile = open(idlFilePath)
-    idlContents = idlFile.read().replace('\n', '')
-    idlFile.close()
-
-    match = conditionalPattern.search(idlContents)
-    if match:
-        conditional = match.group(1)
-        conditional = re.split('([|&])', conditional)
-
-    return conditional
-
-# Extracts conditional and interface name from each IDL file.
-def extractMetaData(filePaths):
-    metaDataList = []
-
-    for f in filePaths:
-        metaData = {}
-        if len(f) == 0:
-            continue
-        if not os.path.exists(f):
-            print 'WARNING: file not found: "%s"' % f
-            continue
-
-        # Extract type name from file name
-        (parentPath, fileName) = os.path.split(f)
-        (interfaceName, ext) = os.path.splitext(fileName)
-
-        if not ext == '.idl':
-            continue
-
-        metaData = {
-            'conditional': extractConditional(f),
-            'name': interfaceName,
-        }
-
-        metaDataList.append(metaData)
-
-    return metaDataList
-
-
-def generateContent(filesMetaData, partition, totalPartitions):
-    # Sort files by conditionals.
-    filesMetaData.sort()
-
-    output = []
-
-    # Add fixed content.
-    output.append(copyrightTemplate)
-    output.append('#define NO_IMPLICIT_ATOMICSTRING\n\n')
-
-    # List all includes segmented by if and endif.
-    prevConditional = None
-    for metaData in filesMetaData:
-        name = metaData['name']
-        if (hash(name) % totalPartitions) != partition:
-            continue
-        conditional = metaData['conditional']
-
-        if prevConditional and prevConditional != conditional:
-            output.append('#endif\n')
-        if conditional and prevConditional != conditional:
-            output.append('\n#if %s\n' % formatConditional(conditional))
-
-        output.append('#include "bindings/V8%s.cpp"\n' % name)
-
-        prevConditional = conditional
-
-    if prevConditional:
-        output.append('#endif\n')
-
-    return ''.join(output)
-
-
-def writeContent(content, outputFileName):
-    (parentPath, fileName) = os.path.split(outputFileName)
-    if not os.path.exists(parentPath):
-        print parentPath
-        os.mkdir(parentPath)
-    f = open(outputFileName, 'w')
-    f.write(content)
-    f.close()
-
-
-def resolveCygpath(cygdriveNames):
-    cmd = ['cygpath', '-f', '-', '-wa']
-    process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-    idlFileNames = []
-    for fileName in cygdriveNames:
-        process.stdin.write("%s\n" % fileName)
-        process.stdin.flush()
-        idlFileNames.append(process.stdout.readline().rstrip())
-    process.stdin.close()
-    process.wait()
-    return idlFileNames
-
-
-def main(args):
-    assert(len(args) > 3)
-    inOutBreakIndex = args.index('--')
-    inputFileName = args[1]
-    outputFileNames = args[inOutBreakIndex+1:]
-
-    inputFile = open(inputFileName, 'r')
-    idlFileNames = []
-    cygdriveNames = []
-    for line in inputFile:
-        idlFileName = line.rstrip().split(' ')[0]
-        if idlFileName.startswith("/cygdrive"):
-            cygdriveNames.append(idlFileName)
-        else:
-            idlFileNames.append(idlFileName)
-
-    if cygdriveNames:
-        idlFileNames.extend(resolveCygpath(cygdriveNames))
-    inputFile.close()
-
-    filesMetaData = extractMetaData(idlFileNames)
-    for fileName in outputFileNames:
-        partition = outputFileNames.index(fileName)
-        fileContents = generateContent(filesMetaData, partition, len(outputFileNames))
-        writeContent(fileContents, fileName)
-
-    return 0
-
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/core/scripts/action_makenames.py b/core/scripts/action_makenames.py
deleted file mode 100644
index 224abd6..0000000
--- a/core/scripts/action_makenames.py
+++ /dev/null
@@ -1,182 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Copyright (c) 2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# action_makenames.py is a harness script to connect actions sections of
-# gyp-based builds to make_names.pl.
-#
-# usage: action_makenames.py OUTPUTS -- INPUTS [-- OPTIONS]
-#
-# Multiple OUTPUTS, INPUTS, and OPTIONS may be listed. The sections are
-# separated by -- arguments.
-#
-# The directory name of the first output is chosen as the directory in which
-# make_names will run. If the directory name for any subsequent output is
-# different, those files will be moved to the desired directory.
-#
-# Multiple INPUTS may be listed. An input with a basename matching
-# "make_names.pl" is taken as the path to that script. Inputs with names
-# ending in TagNames.in or tags.in are taken as tag inputs. Inputs with names
-# ending in AttributeNames.in or attrs.in are taken as attribute inputs. There
-# may be at most one tag input and one attribute input. A make_names.pl input
-# is required and at least one tag or attribute input must be present.
-#
-# OPTIONS is a list of additional options to pass to make_names.pl. This
-# section need not be present.
-
-
-import os
-import posixpath
-import shutil
-import subprocess
-import sys
-
-
-def SplitArgsIntoSections(args):
-    sections = []
-    while len(args) > 0:
-        if not '--' in args:
-            # If there is no '--' left, everything remaining is an entire section.
-            dashes = len(args)
-        else:
-            dashes = args.index('--')
-
-        sections.append(args[:dashes])
-
-        # Next time through the loop, look at everything after this '--'.
-        if dashes + 1 == len(args):
-            # If the '--' is at the end of the list, we won't come back through the
-            # loop again. Add an empty section now corresponding to the nothingness
-            # following the final '--'.
-            args = []
-            sections.append(args)
-        else:
-            args = args[dashes + 1:]
-
-    return sections
-
-
-def main(args):
-    sections = SplitArgsIntoSections(args[1:])
-    assert len(sections) == 2 or len(sections) == 3
-    (outputs, inputs) = sections[:2]
-    if len(sections) == 3:
-        options = sections[2]
-    else:
-        options = []
-
-    # Make all output pathnames absolute so that they can be accessed after
-    # changing directory.
-    for index in xrange(0, len(outputs)):
-        outputs[index] = os.path.abspath(outputs[index])
-
-    outputDir = os.path.dirname(outputs[0])
-
-    # Look at the inputs and figure out which ones are make_names.pl, tags, and
-    # attributes. There can be at most one of each, and those are the only
-    # input types supported. make_names.pl is required and at least one of tags
-    # and attributes is required.
-    makeNamesInput = None
-    tagInput = None
-    attrInput = None
-    eventsInput = None
-    for input in inputs:
-        # Make input pathnames absolute so they can be accessed after changing
-        # directory. On Windows, convert \ to / for inputs to the perl script to
-        # work around the intermix of activepython + cygwin perl.
-        inputAbs = os.path.abspath(input)
-        inputAbsPosix = inputAbs.replace(os.path.sep, posixpath.sep)
-        inputBasename = os.path.basename(input)
-        if inputBasename in ('make_names.pl', 'make_event_factory.pl', 'make_dom_exceptions.pl', 'make_settings.pl'):
-            assert makeNamesInput == None
-            makeNamesInput = inputAbs
-        elif inputBasename.endswith('TagNames.in') or inputBasename.endswith('tags.in'):
-            assert tagInput == None
-            tagInput = inputAbsPosix
-        elif inputBasename.endswith('AttributeNames.in') or inputBasename.endswith('attrs.in'):
-            assert attrInput == None
-            attrInput = inputAbsPosix
-        elif (inputBasename.endswith('EventTargetFactory.in') or inputBasename.endswith('EventNames.in')
-            or inputBasename.endswith('DOMExceptions.in') or inputBasename.endswith('Settings.in')):
-            eventsInput = inputAbsPosix
-        elif inputBasename.endswith('Names.in'):
-            options.append(inputAbsPosix)
-        elif inputBasename.endswith('.pm'):
-            continue
-        else:
-            assert False
-
-    assert makeNamesInput != None
-    assert tagInput != None or attrInput != None or eventsInput != None or ('--fonts' in options) or ('--resourceTypes' in options)
-
-    # scriptsPath is a Perl include directory, located relative to
-    # makeNamesInput.
-    scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makeNamesInput), os.pardir, 'scripts'))
-
-    # Change to the output directory because make_names.pl puts output in its
-    # working directory.
-    os.chdir(outputDir)
-
-    # Build up the command.
-    command = ['perl', '-I', scriptsPath, makeNamesInput]
-    if tagInput != None:
-        command.extend(['--tags', tagInput])
-    if attrInput != None:
-        command.extend(['--attrs', attrInput])
-    if eventsInput != None:
-        command.extend(['--input', eventsInput])
-    command.extend(options)
-
-    # Do it. check_call is new in 2.5, so simulate its behavior with call and
-    # assert.
-    returnCode = subprocess.call(command)
-    assert returnCode == 0
-
-    # Go through the outputs. Any output that belongs in a different directory
-    # is moved. Do a copy and delete instead of rename for maximum portability.
-    # Note that all paths used in this section are still absolute.
-    for output in outputs:
-        thisOutputDir = os.path.dirname(output)
-        if thisOutputDir != outputDir:
-            outputBasename = os.path.basename(output)
-            src = os.path.join(outputDir, outputBasename)
-            dst = os.path.join(thisOutputDir, outputBasename)
-            shutil.copyfile(src, dst)
-            os.unlink(src)
-
-    return returnCode
-
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/core/scripts/action_useragentstylesheets.py b/core/scripts/action_useragentstylesheets.py
deleted file mode 100644
index c0712b3..0000000
--- a/core/scripts/action_useragentstylesheets.py
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Copyright (c) 2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# usage:
-# action_useragentstylesheets.py OUTPUTS INPUTS -- MAINSCRIPT MODULES -- OPTIONS
-#
-# OUTPUTS must contain two items, in order: a path to UserAgentStyleSheets.h
-# and a path to UserAgentStyleSheetsData.cpp.
-# INPUTS contains one or more CSS files.
-#
-# MAINSCRIPT is the path to make-css-file-arrays.pl. MODULES may contain
-# multiple paths to additional perl modules.
-#
-# OPTIONS are passed as-is to MAINSCRIPT as additional arguments.
-
-
-import os
-import shlex
-import subprocess
-import sys
-
-
-def SplitArgsIntoSections(args):
-    sections = []
-    while len(args) > 0:
-        if not '--' in args:
-            # If there is no '--' left, everything remaining is an entire section.
-            dashes = len(args)
-        else:
-            dashes = args.index('--')
-
-        sections.append(args[:dashes])
-
-        # Next time through the loop, look at everything after this '--'.
-        if dashes + 1 == len(args):
-            # If the '--' is at the end of the list, we won't come back through the
-            # loop again. Add an empty section now corresponding to the nothingness
-            # following the final '--'.
-            args = []
-            sections.append(args)
-        else:
-            args = args[dashes + 1:]
-
-    return sections
-
-
-def main(args):
-    sections = SplitArgsIntoSections(args[1:])
-    assert len(sections) == 3
-    (outputsInputs, scripts, options) = sections
-
-    assert len(outputsInputs) >= 3
-    outputH = outputsInputs[0]
-    outputCpp = outputsInputs[1]
-    styleSheets = outputsInputs[2:]
-
-    assert len(scripts) >= 1
-    makeCssFileArrays = scripts[0]
-    perlModules = scripts[1:]
-
-    includeDirs = []
-    for perlModule in perlModules:
-        includeDir = os.path.dirname(perlModule)
-        if not includeDir in includeDirs:
-            includeDirs.append(includeDir)
-
-    # The defines come in as one flat string. Split it up into distinct arguments.
-    if '--defines' in options:
-        definesIndex = options.index('--defines')
-        if definesIndex + 1 < len(options):
-            splitOptions = shlex.split(options[definesIndex + 1])
-            if splitOptions:
-                options[definesIndex + 1] = ' '.join(splitOptions)
-
-    # Build up the command.
-    command = ['perl']
-    for includeDir in includeDirs:
-        command.extend(['-I', includeDir])
-    command.append(makeCssFileArrays)
-    command.extend(options)
-    command.extend([outputH, outputCpp])
-    command.extend(styleSheets)
-
-    # Do it. check_call is new in 2.5, so simulate its behavior with call and
-    # assert.
-    returnCode = subprocess.call(command)
-    assert returnCode == 0
-
-    return returnCode
-
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv))
diff --git a/core/scripts/in_file.py b/core/scripts/in_file.py
deleted file mode 100644
index d8d8235..0000000
--- a/core/scripts/in_file.py
+++ /dev/null
@@ -1,160 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import copy
-import os
-
-# NOTE: This has only been used to parse
-# core/page/RuntimeEnabledFeatures.in and may not be capable
-# of parsing other .in files correctly.
-
-# .in file format is:
-# // comment
-# name1 arg=value, arg2=value2, arg2=value3
-#
-# InFile must be passed a dictionary of default values
-# with which to validate arguments against known names.
-# Sequence types as default values will produce sequences
-# as parse results.
-# Bare arguments (no '=') are treated as names with value True.
-# The first field will always be labeled 'name'.
-#
-# InFile.load_from_files(['file.in'], {'arg': None, 'arg2': []})
-#
-# Parsing produces an array of dictionaries:
-# [ { 'name' : 'name1', 'arg' :' value', arg2=['value2', 'value3'] }
-
-def _is_comment(line):
-    return line.startswith("//") or line.startswith("#")
-
-class InFile(object):
-    def __init__(self, lines, defaults, valid_values=None, default_parameters=None):
-        self.name_dictionaries = []
-        self.parameters = copy.deepcopy(default_parameters if default_parameters else {})
-        self._defaults = defaults
-        self._valid_values = copy.deepcopy(valid_values if valid_values else {})
-        self._parse(map(str.strip, lines))
-
-    @classmethod
-    def load_from_files(self, file_paths, defaults, valid_values, default_parameters):
-        lines = []
-        for path in file_paths:
-            with open(os.path.abspath(path)) as in_file:
-                lines += in_file.readlines()
-        return InFile(lines, defaults, valid_values, default_parameters)
-
-    def _is_sequence(self, arg):
-        return (not hasattr(arg, "strip")
-                and hasattr(arg, "__getitem__")
-                or hasattr(arg, "__iter__"))
-
-    def _parse(self, lines):
-        parsing_parameters = True
-        indices = {}
-        for line in lines:
-            if _is_comment(line):
-                continue
-            if not line:
-                parsing_parameters = False
-                continue
-            if parsing_parameters:
-                self._parse_parameter(line)
-            else:
-                entry = self._parse_line(line)
-                name = entry['name']
-                if name in indices:
-                    entry = self._merge_entries(entry, self.name_dictionaries[indices[name]])
-                    entry['name'] = name
-                    self.name_dictionaries[indices[name]] = entry
-                else:
-                    indices[name] = len(self.name_dictionaries)
-                    self.name_dictionaries.append(entry)
-
-
-    def _merge_entries(self, one, two):
-        merged = {}
-        for key in one:
-            if key not in two:
-                self._fatal("Expected key '%s' not found in entry: %s" % (key, two))
-            if one[key] and two[key]:
-                val_one = one[key]
-                val_two = two[key]
-                if isinstance(val_one, list) and isinstance(val_two, list):
-                    val = val_one + val_two
-                elif isinstance(val_one, list):
-                    val = val_one + [val_two]
-                elif isinstance(val_two, list):
-                    val = [val_one] + val_two
-                else:
-                    val = [val_one, val_two]
-                merged[key] = val
-            elif one[key]:
-                merged[key] = one[key]
-            else:
-                merged[key] = two[key]
-        return merged
-
-
-    def _parse_parameter(self, line):
-        if '=' in line:
-            name, value = line.split('=')
-        else:
-            name, value = line, True
-        if not name in self.parameters:
-            self._fatal("Unknown parameter: '%s' in line:\n%s\nKnown parameters: %s" % (name, line, self.parameters.keys()))
-        self.parameters[name] = value
-
-    def _parse_line(self, line):
-        args = copy.deepcopy(self._defaults)
-        parts = line.split(' ')
-        args['name'] = parts[0]
-        # re-join the rest of the line and split on ','
-        args_list = ' '.join(parts[1:]).strip().split(',')
-        for arg_string in args_list:
-            arg_string = arg_string.strip()
-            if not arg_string: # Ignore empty args
-                continue
-            if '=' in arg_string:
-                arg_name, arg_value = arg_string.split('=')
-            else:
-                arg_name, arg_value = arg_string, True
-            if arg_name not in self._defaults:
-                self._fatal("Unknown argument: '%s' in line:\n%s\nKnown arguments: %s" % (arg_name, line, self._defaults.keys()))
-            valid_values = self._valid_values.get(arg_name)
-            if valid_values and arg_value not in valid_values:
-                self._fatal("Unknown value: '%s' in line:\n%s\nKnown values: %s" % (arg_value, line, valid_values))
-            if self._is_sequence(args[arg_name]):
-                args[arg_name].append(arg_value)
-            else:
-                args[arg_name] = arg_value
-        return args
-
-    def _fatal(self, message):
-        # FIXME: This should probably raise instead of exit(1)
-        print message
-        exit(1)
diff --git a/core/scripts/in_file_unittest.py b/core/scripts/in_file_unittest.py
deleted file mode 100644
index e065d44..0000000
--- a/core/scripts/in_file_unittest.py
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import unittest
-
-from in_file import InFile
-
-class InFileTest(unittest.TestCase):
-    def test_basic_parse(self):
-        contents = """
-name1 arg=value, arg2=value2, arg2=value3
-name2
-"""
-        lines = contents.split("\n")
-        defaults = {
-            'arg': None,
-            'arg2': [],
-        }
-        in_file = InFile(lines, defaults, None)
-        expected_values = [
-            {'name': 'name1', 'arg': 'value', 'arg2': ['value2', 'value3']},
-            {'name': 'name2', 'arg': None, 'arg2': []},
-        ]
-        self.assertEquals(in_file.name_dictionaries, expected_values)
-
-    def test_with_parameters(self):
-        contents = """namespace=TestNamespace
-fruit
-
-name1 arg=value, arg2=value2, arg2=value3
-name2
-"""
-        lines = contents.split("\n")
-        defaults = {
-            'arg': None,
-            'arg2': [],
-        }
-        default_parameters = {
-            'namespace': '',
-            'fruit': False,
-        }
-        in_file = InFile(lines, defaults, default_parameters)
-        expected_parameters = {
-            'namespace': 'TestNamespace',
-            'fruit': True,
-        }
-        self.assertEquals(in_file.parameters, expected_parameters)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/core/scripts/in_generator.py b/core/scripts/in_generator.py
deleted file mode 100644
index b02d6e6..0000000
--- a/core/scripts/in_generator.py
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import shlex
-import shutil
-import optparse
-
-from in_file import InFile
-
-
-class Writer(object):
-    # Subclasses should override.
-    class_name = None
-    defaults = None
-    valid_values = None
-    default_parameters = None
-
-    def __init__(self, in_files, enabled_conditions):
-        if isinstance(in_files, basestring):
-            in_files = [in_files]
-        self.in_file = InFile.load_from_files(in_files, self.defaults, self.valid_values, self.default_parameters)
-        self._enabled_conditions = enabled_conditions
-        self._outputs = {}  # file_name -> generator
-
-    def wrap_with_condition(self, string, condition):
-        if not condition:
-            return string
-        return "#if ENABLE(%(condition)s)\n%(string)s\n#endif" % { 'condition' : condition, 'string' : string }
-
-    def _forcibly_create_text_file_at_path_with_contents(self, file_path, contents):
-        # FIXME: This method can be made less force-full anytime after 6/1/2013.
-        # A gyp error was briefly checked into the tree, causing
-        # a directory to have been generated in place of one of
-        # our output files.  Clean up after that error so that
-        # all users don't need to clobber their output directories.
-        shutil.rmtree(file_path, ignore_errors=True)
-        # The build system should ensure our output directory exists, but just in case.
-        directory = os.path.dirname(file_path)
-        if not os.path.exists(directory):
-            os.makedirs(directory)
-
-        with open(file_path, "w") as file_to_write:
-            file_to_write.write(contents)
-
-    def _write_file(self, output_dir, contents, file_name):
-        path = os.path.join(output_dir, file_name)
-        self._forcibly_create_text_file_at_path_with_contents(path, contents)
-
-    def write_files(self, output_dir):
-        for file_name, generator in self._outputs.items():
-            self._write_file(output_dir, generator(), file_name)
-
-
-class Maker(object):
-    def __init__(self, writer_class):
-        self._writer_class = writer_class
-
-    def _enabled_conditions_from_defines(self, defines_arg_string):
-        if not defines_arg_string:
-            return []
-
-        defines_strings = shlex.split(defines_arg_string)
-
-        # We only care about feature defines.
-        enable_prefix = 'ENABLE_'
-
-        enabled_conditions = []
-        for define_string in defines_strings:
-            split_define = define_string.split('=')
-            if split_define[1] != '1':
-                continue
-            define = split_define[0]
-            if not define.startswith(enable_prefix):
-                continue
-            enabled_conditions.append(define[len(enable_prefix):])
-        return enabled_conditions
-
-    def main(self, argv):
-        script_name = os.path.basename(argv[0])
-        args = argv[1:]
-        if len(args) < 1:
-            print "USAGE: %i INPUT_FILES" % script_name
-            exit(1)
-
-        parser = optparse.OptionParser()
-        parser.add_option("--defines")
-        parser.add_option("--output_dir", default=os.getcwd())
-        (options, args) = parser.parse_args()
-
-        enabled_conditions = self._enabled_conditions_from_defines(options.defines)
-
-        writer = self._writer_class(args, enabled_conditions)
-        writer.write_files(options.output_dir)
diff --git a/core/scripts/license.py b/core/scripts/license.py
deleted file mode 100644
index 32da980..0000000
--- a/core/scripts/license.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# FIXME: We should either not use license blocks in generated files
-# or we should read this from some central license file.
-
-def license_for_generated_cpp():
-    return """/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-"""
diff --git a/core/scripts/list_idl_files_with_partial_interface.py b/core/scripts/list_idl_files_with_partial_interface.py
deleted file mode 100644
index edebc51..0000000
--- a/core/scripts/list_idl_files_with_partial_interface.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-"""This file returns a list of all the IDL files that contain a partial interface."""
-
-import re
-import sys
-
-partial_interface_regex = re.compile(r'partial\s+interface\s+(\w+).+\]', re.M | re.S)
-
-
-def DoMain(filenames):
-    partial_files = set()
-    for filename in filenames:
-        with open(filename) as f:
-            match = re.search(partial_interface_regex, f.read())
-            if match:
-                partial_files.add(filename)
-    return '\n'.join(partial_files)
diff --git a/core/scripts/make-file-arrays.py b/core/scripts/make-file-arrays.py
deleted file mode 100755
index 68af2ae..0000000
--- a/core/scripts/make-file-arrays.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-# Usage: make-file-arrays.py [--condition=condition-string] --out-h=<header-file-name> --out-cpp=<cpp-file-name> <input-file>...
-
-import os.path
-import re
-import sys
-from optparse import OptionParser
-
-
-def make_variable_name_and_read(file_name):
-    result = re.match(r"([\w\d_]+)\.([\w\d_]+)", os.path.basename(file_name))
-    if not result:
-        print "Invalid input file name:", os.path.basename(file_name)
-        sys.exit(1)
-    variable_name = result.group(1)[0].lower() + result.group(1)[1:] + result.group(2).capitalize()
-    file = open(file_name, "rb")
-    content = file.read()
-    file.close()
-    return (variable_name, content)
-
-
-def strip_whitespace_and_comments(file_name, content):
-    result = re.match(r".*\.([^.]+)", file_name)
-    if not result:
-        print "The file name has no extension:", file_name
-        sys.exit(1)
-    extension = result.group(1).lower()
-    multi_line_comment = re.compile(r"/\*.*?\*/", re.MULTILINE | re.DOTALL)
-    single_line_comment = re.compile(r"//.*$", re.MULTILINE)
-    repeating_space = re.compile(r"[ \t]+", re.MULTILINE)
-    leading_space = re.compile(r"^[ \t]+", re.MULTILINE)
-    trailing_space = re.compile(r"[ \t]+$", re.MULTILINE)
-    empty_line = re.compile(r"\n+")
-    if extension == "js":
-        content = multi_line_comment.sub("", content)
-        content = single_line_comment.sub("", content)
-        content = repeating_space.sub(" ", content)
-        content = leading_space.sub("", content)
-        content = trailing_space.sub("", content)
-        content = empty_line.sub("\n", content)
-    elif extension == "css":
-        content = multi_line_comment.sub("", content)
-        content = repeating_space.sub(" ", content)
-        content = leading_space.sub("", content)
-        content = trailing_space.sub("", content)
-        content = empty_line.sub("\n", content)
-    return content
-
-
-def main():
-    parser = OptionParser()
-    parser.add_option("--out-h", dest="out_header")
-    parser.add_option("--out-cpp", dest="out_cpp")
-    parser.add_option("--condition", dest="flag")
-    (options, args) = parser.parse_args()
-    if len(args) < 1:
-        parser.error("Need one or more input files")
-    if not options.out_header:
-        parser.error("Need to specify --out-h=filename")
-    if not options.out_cpp:
-        parser.error("Need to specify --out-cpp=filename")
-
-    if options.flag:
-        options.flag = options.flag.replace(" AND ", " && ")
-        options.flag = options.flag.replace(" OR ", " || ")
-
-    header_file = open(options.out_header, "w")
-    if options.flag:
-        header_file.write("#if " + options.flag + "\n")
-    header_file.write("namespace WebCore {\n")
-
-    cpp_file = open(options.out_cpp, "w")
-    cpp_file.write("#include \"config.h\"\n")
-    cpp_file.write("#include \"" + os.path.basename(options.out_header) + "\"\n")
-    if options.flag:
-        cpp_file.write("#if " + options.flag + "\n")
-    cpp_file.write("namespace WebCore {\n")
-
-    for file_name in args:
-        (variable_name, content) = make_variable_name_and_read(file_name)
-        content = strip_whitespace_and_comments(file_name, content)
-        size = len(content)
-        header_file.write("extern const char %s[%d];\n" % (variable_name, size))
-        cpp_file.write("const char %s[%d] = {\n" % (variable_name, size))
-        for index in range(size):
-            char_code = ord(content[index])
-            if char_code < 128:
-                cpp_file.write("%d" % char_code)
-            else:
-                cpp_file.write("'\\x%02x'" % char_code)
-            cpp_file.write("," if index != len(content) - 1 else "};\n")
-            if index % 20 == 19:
-                cpp_file.write("\n")
-        cpp_file.write("\n")
-
-    header_file.write("}\n")
-    if options.flag:
-        header_file.write("#endif\n")
-    header_file.close()
-
-    cpp_file.write("}\n")
-    if options.flag:
-        cpp_file.write("#endif\n")
-    cpp_file.close()
-
-
-if __name__ == "__main__":
-    main()
diff --git a/core/scripts/make_css_property_names.py b/core/scripts/make_css_property_names.py
deleted file mode 100755
index ab137e9..0000000
--- a/core/scripts/make_css_property_names.py
+++ /dev/null
@@ -1,257 +0,0 @@
-#!/usr/bin/env python
-
-import os.path
-import re
-import subprocess
-import sys
-
-from in_file import InFile
-import in_generator
-import license
-
-
-HEADER_TEMPLATE = """
-%(license)s
-
-#ifndef %(class_name)s_h
-#define %(class_name)s_h
-
-#include "core/css/CSSParserMode.h"
-#include "wtf/HashFunctions.h"
-#include "wtf/HashTraits.h"
-#include <string.h>
-
-namespace WTF {
-class AtomicString;
-class String;
-}
-
-namespace WebCore {
-
-enum CSSPropertyID {
-    CSSPropertyInvalid = 0,
-    CSSPropertyVariable = 1,
-%(property_enums)s
-};
-
-const int firstCSSProperty = %(first_property_id)s;
-const int numCSSProperties = %(properties_count)s;
-const int lastCSSProperty = %(last_property_id)d;
-const size_t maxCSSPropertyNameLength = %(max_name_length)d;
-
-const char* getPropertyName(CSSPropertyID);
-const WTF::AtomicString& getPropertyNameAtomicString(CSSPropertyID);
-WTF::String getPropertyNameString(CSSPropertyID);
-WTF::String getJSPropertyName(CSSPropertyID);
-bool isInternalProperty(CSSPropertyID id);
-
-inline CSSPropertyID convertToCSSPropertyID(int value)
-{
-    ASSERT((value >= firstCSSProperty && value <= lastCSSProperty) || value == CSSPropertyInvalid);
-    return static_cast<CSSPropertyID>(value);
-}
-
-} // namespace WebCore
-
-namespace WTF {
-template<> struct DefaultHash<WebCore::CSSPropertyID> { typedef IntHash<unsigned> Hash; };
-template<> struct HashTraits<WebCore::CSSPropertyID> : GenericHashTraits<WebCore::CSSPropertyID> {
-    static const bool emptyValueIsZero = true;
-    static const bool needsDestruction = false;
-    static void constructDeletedValue(WebCore::CSSPropertyID& slot) { slot = static_cast<WebCore::CSSPropertyID>(WebCore::lastCSSProperty + 1); }
-    static bool isDeletedValue(WebCore::CSSPropertyID value) { return value == (WebCore::lastCSSProperty + 1); }
-};
-}
-
-#endif // %(class_name)s_h
-"""
-
-GPERF_TEMPLATE = """
-%%{
-%(license)s
-
-#include "config.h"
-#include "%(class_name)s.h"
-#include "core/platform/HashTools.h"
-#include <string.h>
-
-#include "wtf/ASCIICType.h"
-#include "wtf/text/AtomicString.h"
-#include "wtf/text/WTFString.h"
-
-namespace WebCore {
-static const char propertyNameStringsPool[] = {
-%(property_name_strings)s
-};
-
-static const unsigned short propertyNameStringsOffsets[] = {
-%(property_name_offsets)s
-};
-
-%%}
-%%struct-type
-struct Property;
-%%omit-struct-type
-%%language=C++
-%%readonly-tables
-%%global-table
-%%compare-strncmp
-%%define class-name %(class_name)sHash
-%%define lookup-function-name findPropertyImpl
-%%define hash-function-name propery_hash_function
-%%define slot-name nameOffset
-%%define word-array-name property_wordlist
-%%enum
-%%%%
-%(property_to_enum_map)s
-%%%%
-const Property* findProperty(register const char* str, register unsigned int len)
-{
-    return %(class_name)sHash::findPropertyImpl(str, len);
-}
-
-const char* getPropertyName(CSSPropertyID id)
-{
-    if (id < firstCSSProperty)
-        return 0;
-    int index = id - firstCSSProperty;
-    if (index >= numCSSProperties)
-        return 0;
-    return propertyNameStringsPool + propertyNameStringsOffsets[index];
-}
-
-const AtomicString& getPropertyNameAtomicString(CSSPropertyID id)
-{
-    if (id < firstCSSProperty)
-        return nullAtom;
-    int index = id - firstCSSProperty;
-    if (index >= numCSSProperties)
-        return nullAtom;
-
-    static AtomicString* propertyStrings = new AtomicString[numCSSProperties]; // Intentionally never destroyed.
-    AtomicString& propertyString = propertyStrings[index];
-    if (propertyString.isNull()) {
-        const char* propertyName = propertyNameStringsPool + propertyNameStringsOffsets[index];
-        propertyString = AtomicString(propertyName, strlen(propertyName), AtomicString::ConstructFromLiteral);
-    }
-    return propertyString;
-}
-
-String getPropertyNameString(CSSPropertyID id)
-{
-    // We share the StringImpl with the AtomicStrings.
-    return getPropertyNameAtomicString(id).string();
-}
-
-String getJSPropertyName(CSSPropertyID id)
-{
-    char result[maxCSSPropertyNameLength + 1];
-    const char* cssPropertyName = getPropertyName(id);
-    const char* propertyNamePointer = cssPropertyName;
-    if (!propertyNamePointer)
-        return emptyString();
-
-    char* resultPointer = result;
-    while (char character = *propertyNamePointer++) {
-        if (character == '-') {
-            char nextCharacter = *propertyNamePointer++;
-            if (!nextCharacter)
-                break;
-            character = (propertyNamePointer - 2 != cssPropertyName) ? toASCIIUpper(nextCharacter) : nextCharacter;
-        }
-        *resultPointer++ = character;
-    }
-    *resultPointer = '\\0';
-    return String(result);
-}
-
-bool isInternalProperty(CSSPropertyID id)
-{
-    switch (id) {
-        %(internal_properties)s
-            return true;
-        default:
-            return false;
-    }
-}
-
-} // namespace WebCore
-"""
-
-
-class CSSPropertiesWriter(in_generator.Writer):
-    class_name = "CSSPropertyNames"
-    defaults = {
-        'alias_for': None,
-        'condition': None,
-        'is_internal': False,
-    }
-
-    def __init__(self, file_paths, enabled_conditions):
-        in_generator.Writer.__init__(self, file_paths, enabled_conditions)
-        self._outputs = {(self.class_name + ".h"): self.generate_header,
-                         (self.class_name + ".cpp"): self.generate_implementation,
-                        }
-
-        all_properties = self.in_file.name_dictionaries
-        self._aliases = filter(lambda property: property['alias_for'], all_properties)
-        for offset, property in enumerate(self._aliases):
-            # Aliases use the enum_name that they are an alias for.
-            property['enum_name'] = self._enum_name_from_property_name(property['alias_for'])
-            # Aliases do not get an enum_value.
-
-        self._properties = filter(lambda property: not property['alias_for'] and not property['condition'] or property['condition'] in self._enabled_conditions, all_properties)
-        if len(self._properties) > 1024:
-            print "ERROR : There is more than 1024 CSS Properties, you need to update CSSProperty.h/StylePropertyMetadata m_propertyID accordingly."
-            exit(1)
-        self._first_property_id = 2  # We start after CSSPropertyInvalid and CSSPropertyVariable.
-        property_id = self._first_property_id
-        for offset, property in enumerate(self._properties):
-            property['enum_name'] = self._enum_name_from_property_name(property['name'])
-            property['enum_value'] = self._first_property_id + offset
-            if property['name'].startswith('-internal-'):
-                property['is_internal'] = True
-
-    def _enum_name_from_property_name(self, property_name):
-        return "CSSProperty" + re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.group(2)).upper(), property_name)
-
-    def _enum_declaration(self, property):
-        return "    %(enum_name)s = %(enum_value)s," % property
-
-    def generate_header(self):
-        return HEADER_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'property_enums': "\n".join(map(self._enum_declaration, self._properties)),
-            'first_property_id': self._first_property_id,
-            'properties_count': len(self._properties),
-            'last_property_id': self._first_property_id + len(self._properties) - 1,
-            'max_name_length': reduce(max, map(len, map(lambda property: property['name'], self._properties))),
-        }
-
-    def _case_properties(self, property):
-        return "case %(enum_name)s:" % property
-
-    def generate_implementation(self):
-        property_offsets = []
-        current_offset = 0
-        for property in self._properties:
-            property_offsets.append(current_offset)
-            current_offset += len(property["name"]) + 1
-
-        gperf_input = GPERF_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'property_name_strings': '\n'.join(map(lambda property: '    "%(name)s\\0"' % property, self._properties)),
-            'property_name_offsets': '\n'.join(map(lambda offset: '    %d,' % offset, property_offsets)),
-            'property_to_enum_map': '\n'.join(map(lambda property: '%(name)s, %(enum_name)s' % property, self._properties + self._aliases)),
-            'internal_properties': '\n'.join(map(self._case_properties, filter(lambda property: property['is_internal'], self._properties))),
-        }
-        # FIXME: If we could depend on Python 2.7, we would use subprocess.check_output
-        gperf_args = ['gperf', '--key-positions=*', '-P', '-D', '-n', '-s', '2']
-        gperf = subprocess.Popen(gperf_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-        return gperf.communicate(gperf_input)[0]
-
-
-if __name__ == "__main__":
-    in_generator.Maker(CSSPropertiesWriter).main(sys.argv)
diff --git a/core/scripts/make_css_value_keywords.py b/core/scripts/make_css_value_keywords.py
deleted file mode 100755
index 0b5a3d6..0000000
--- a/core/scripts/make_css_value_keywords.py
+++ /dev/null
@@ -1,177 +0,0 @@
-#!/usr/bin/env python
-
-import os.path
-import re
-import subprocess
-import sys
-
-from in_file import InFile
-import in_generator
-import license
-
-
-HEADER_TEMPLATE = """
-%(license)s
-
-#ifndef %(class_name)s_h
-#define %(class_name)s_h
-
-#include "core/css/CSSParserMode.h"
-#include <string.h>
-
-namespace WebCore {
-
-enum CSSValueID {
-%(value_keyword_enums)s
-};
-
-const int numCSSValueKeywords = %(value_keywords_count)d;
-const size_t maxCSSValueKeywordLength = %(max_value_keyword_length)d;
-
-const char* getValueName(unsigned short id);
-bool isValueAllowedInMode(unsigned short id, CSSParserMode mode);
-
-} // namespace WebCore
-
-#endif // %(class_name)s_h
-"""
-
-GPERF_TEMPLATE = """
-%%{
-%(license)s
-
-#include "config.h"
-#include "%(class_name)s.h"
-#include "core/platform/HashTools.h"
-#include <string.h>
-
-namespace WebCore {
-static const char valueListStringPool[] = {
-"\\0"
-%(value_keyword_strings)s
-};
-
-static const unsigned short valueListStringOffsets[] = {
-%(value_keyword_offsets)s
-};
-
-%%}
-%%struct-type
-struct Value;
-%%omit-struct-type
-%%language=C++
-%%readonly-tables
-%%compare-strncmp
-%%define class-name %(class_name)sHash
-%%define lookup-function-name findValueImpl
-%%define hash-function-name value_hash_function
-%%define slot-name nameOffset
-%%define word-array-name value_word_list
-%%pic
-%%enum
-%%%%
-%(value_keyword_to_enum_map)s
-%%%%
-const Value* findValue(register const char* str, register unsigned int len)
-{
-    return CSSValueKeywordsHash::findValueImpl(str, len);
-}
-
-const char* getValueName(unsigned short id)
-{
-    if (id >= numCSSValueKeywords || id <= 0)
-        return 0;
-    return valueListStringPool + valueListStringOffsets[id];
-}
-
-bool isValueAllowedInMode(unsigned short id, CSSParserMode mode)
-{
-    switch (id) {
-        %(ua_sheet_mode_values_keywords)s
-            return mode == UASheetMode;
-        %(quirks_mode_values_keywords)s
-            return mode == CSSQuirksMode;
-        %(quirks_mode_or_ua_sheet_mode_values_keywords)s
-            return mode == UASheetMode || mode == CSSQuirksMode;
-        default:
-            return true;
-    }
-}
-
-} // namespace WebCore
-"""
-
-
-class CSSValueKeywordsWriter(in_generator.Writer):
-    class_name = "CSSValueKeywords"
-    defaults = {
-        'condition': None,
-        'mode': None,
-    }
-
-    def __init__(self, file_paths, enabled_conditions):
-        in_generator.Writer.__init__(self, file_paths, enabled_conditions)
-        self._outputs = {(self.class_name + ".h"): self.generate_header,
-                         (self.class_name + ".cpp"): self.generate_implementation,
-                        }
-
-        all_properties = self.in_file.name_dictionaries
-        self._value_keywords = filter(lambda property: not property['condition'] or property['condition'] in self._enabled_conditions, all_properties)
-        first_property_id = 1
-        for offset, property in enumerate(self._value_keywords):
-            property['name'] = property['name'].lower()
-            property['enum_name'] = self._enum_name_from_value_keyword(property['name'])
-            property['enum_value'] = first_property_id + offset
-            if property['name'].startswith('-internal-'):
-                assert property['mode'] is None, 'Can\'t specify mode for value keywords with the prefix "-internal-".'
-                property['mode'] = 'UASheet'
-            else:
-                assert property['mode'] != 'UASheet', 'UASheet mode only value keywords should have the prefix "-internal-".'
-
-    def _enum_name_from_value_keyword(self, value_keyword):
-        return "CSSValue" + "".join(w.capitalize() for w in value_keyword.split("-"))
-
-    def _enum_declaration(self, property):
-        return "    %(enum_name)s = %(enum_value)s," % property
-
-    def _case_value_keyword(self, property):
-        return "case %(enum_name)s:" % property
-
-    def generate_header(self):
-        enum_enties = map(self._enum_declaration, [{'enum_name': 'CSSValueInvalid', 'enum_value': 0}] + self._value_keywords)
-        return HEADER_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'value_keyword_enums': "\n".join(enum_enties),
-            'value_keywords_count': len(enum_enties),
-            'max_value_keyword_length': reduce(max, map(len, map(lambda property: property['name'], self._value_keywords))),
-        }
-
-    def _value_keywords_with_mode(self, mode):
-        return filter(lambda property: property['mode'] == mode, self._value_keywords)
-
-    def generate_implementation(self):
-        keyword_offsets = [0]
-        current_offset = 1
-        for keyword in self._value_keywords:
-            keyword_offsets.append(current_offset)
-            current_offset += len(keyword["name"]) + 1
-
-        gperf_input = GPERF_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'value_keyword_strings': '\n'.join(map(lambda property: '    "%(name)s\\0"' % property, self._value_keywords)),
-            'value_keyword_offsets': '\n'.join(map(lambda offset: '  %d,' % offset, keyword_offsets)),
-            'value_keyword_to_enum_map': '\n'.join(map(lambda property: '%(name)s, %(enum_name)s' % property, self._value_keywords)),
-            'ua_sheet_mode_values_keywords': '\n        '.join(map(self._case_value_keyword, self._value_keywords_with_mode('UASheet'))),
-            'quirks_mode_values_keywords': '\n        '.join(map(self._case_value_keyword, self._value_keywords_with_mode('Quirks'))),
-            'quirks_mode_or_ua_sheet_mode_values_keywords': '\n    '.join(map(self._case_value_keyword, self._value_keywords_with_mode('QuirksOrUASheet'))),
-        }
-        # FIXME: If we could depend on Python 2.7, we would use subprocess.check_output
-        gperf_args = ['gperf', '--key-positions=*', '-D', '-n', '-s', '2']
-        gperf = subprocess.Popen(gperf_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
-        return gperf.communicate(gperf_input)[0]
-
-
-if __name__ == "__main__":
-    in_generator.Maker(CSSValueKeywordsWriter).main(sys.argv)
diff --git a/core/scripts/make_event_factory.py b/core/scripts/make_event_factory.py
deleted file mode 100644
index ace45ab..0000000
--- a/core/scripts/make_event_factory.py
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import sys
-import shutil
-
-from in_file import InFile
-import name_macros
-from name_utilities import lower_first
-import license
-
-
-IMPLEMENTATION_TEMPLATE = """%(license)s
-#include "config.h"
-#include "%(class_name)sFactory.h"
-
-#include "%(class_name)sHeaders.h"
-#include "RuntimeEnabledFeatures.h"
-
-namespace WebCore {
-
-PassRefPtr<%(class_name)s> %(class_name)sFactory::create(const String& type)
-{
-%(factory_implementation)s
-    return 0;
-}
-
-} // namespace WebCore
-"""
-
-
-class EventFactoryWriter(name_macros.Writer):
-    defaults = {
-        'ImplementedAs': None,
-        'Conditional': None,
-        'EnabledAtRuntime': None,
-    }
-    default_parameters = {
-        'namespace': '',
-    }
-
-    def __init__(self, in_file_path, enabled_conditions):
-        super(EventFactoryWriter, self).__init__(in_file_path, enabled_conditions)
-        self._outputs[(self.class_name + ".cpp")] = self.generate_implementation
-
-    def _events(self):
-        return self.in_file.name_dictionaries
-
-    def _factory_implementation(self, event):
-        if event['EnabledAtRuntime']:
-            runtime_condition = ' && RuntimeEnabledFeatures::%s()' % lower_first(event['EnabledAtRuntime'])
-        else:
-            runtime_condition = ''
-        name = os.path.basename(event['name'])
-        class_name = self._class_name_for_entry(event)
-        implementation = """    if (type == "%(name)s"%(runtime_condition)s)
-        return %(class_name)s::create();""" % {
-            'name': name,
-            'runtime_condition': runtime_condition,
-            'class_name': class_name,
-        }
-        return self.wrap_with_condition(implementation, event['Conditional'])
-
-    def generate_implementation(self):
-        return IMPLEMENTATION_TEMPLATE % {
-            'class_name': self.class_name,
-            'license': license.license_for_generated_cpp(),
-            'factory_implementation': "\n".join(map(self._factory_implementation, self._events())),
-        }
-
-
-if __name__ == "__main__":
-    name_macros.Maker(EventFactoryWriter).main(sys.argv)
diff --git a/core/scripts/make_internal_runtime_flags.py b/core/scripts/make_internal_runtime_flags.py
deleted file mode 100755
index 522e00f..0000000
--- a/core/scripts/make_internal_runtime_flags.py
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import sys
-
-import in_generator
-import make_runtime_features
-import template_expander
-
-
-# We want exactly the same parsing as RuntimeFeatureWriter
-# but generate different files.
-class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter):
-    class_name = "InternalRuntimeFlags"
-
-    def __init__(self, in_file_path, enabled_conditions):
-        super(InternalRuntimeFlagsWriter, self).__init__(in_file_path, enabled_conditions)
-        self._outputs = {(self.class_name + ".idl"): self.generate_idl,
-                         (self.class_name + ".h"): self.generate_header,
-                        }
-
-    @template_expander.use_jinja(class_name + ".idl.tmpl")
-    def generate_idl(self):
-        return {
-            'features': self._features,
-        }
-
-    @template_expander.use_jinja(class_name + ".h.tmpl")
-    def generate_header(self):
-        return {
-            'features': self._features,
-            'feature_sets': self._feature_sets(),
-        }
-
-
-if __name__ == "__main__":
-    in_generator.Maker(InternalRuntimeFlagsWriter).main(sys.argv)
diff --git a/core/scripts/make_runtime_features.py b/core/scripts/make_runtime_features.py
deleted file mode 100755
index ad84a25..0000000
--- a/core/scripts/make_runtime_features.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import sys
-
-from in_file import InFile
-import in_generator
-from name_utilities import lower_first
-import template_expander
-
-
-class RuntimeFeatureWriter(in_generator.Writer):
-    class_name = 'RuntimeEnabledFeatures'
-
-    # FIXME: valid_values and defaults should probably roll into one object.
-    valid_values = {
-        'status': ['stable', 'experimental', 'test'],
-    }
-    defaults = {
-        'condition' : None,
-        'depends_on' : [],
-        'custom': False,
-        'status': None,
-    }
-
-    def __init__(self, in_file_path, enabled_conditions):
-        super(RuntimeFeatureWriter, self).__init__(in_file_path, enabled_conditions)
-        self._outputs = {(self.class_name + ".h"): self.generate_header,
-                         (self.class_name + ".cpp"): self.generate_implementation,
-                        }
-
-        self._features = self.in_file.name_dictionaries
-        # Make sure the resulting dictionaries have all the keys we expect.
-        for feature in self._features:
-            feature['first_lowered_name'] = lower_first(feature['name'])
-            # Most features just check their isFooEnabled bool
-            # but some depend on more than one bool.
-            enabled_condition = "is%sEnabled" % feature['name']
-            for dependant_name in feature['depends_on']:
-                enabled_condition += " && is%sEnabled" % dependant_name
-            feature['enabled_condition'] = enabled_condition
-        self._non_custom_features = filter(lambda feature: not feature['custom'], self._features)
-
-    def _feature_sets(self):
-        # Another way to think of the status levels is as "sets of features"
-        # which is how we're referring to them in this generator.
-        return self.valid_values['status']
-
-    @template_expander.use_jinja(class_name + ".h.tmpl")
-    def generate_header(self):
-        return {
-            'features': self._features,
-            'feature_sets': self._feature_sets(),
-        }
-
-    @template_expander.use_jinja(class_name + ".cpp.tmpl")
-    def generate_implementation(self):
-        return {
-            'features': self._features,
-            'feature_sets': self._feature_sets(),
-        }
-
-
-if __name__ == "__main__":
-    in_generator.Maker(RuntimeFeatureWriter).main(sys.argv)
diff --git a/core/scripts/make_style_builder.py b/core/scripts/make_style_builder.py
deleted file mode 100755
index b408c94..0000000
--- a/core/scripts/make_style_builder.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re
-import sys
-
-import in_generator
-import template_expander
-
-
-class StyleBuilderWriter(in_generator.Writer):
-    class_name = 'StyleBuilder'
-
-    valid_values = {
-        'svg': [True, False],
-        'custom_all': [True, False],
-        'custom_initial': [True, False],
-        'custom_inherit': [True, False],
-        'custom_value': [True, False],
-    }
-    defaults = {
-        'condition': None,
-        'name_for_methods': None,
-        'use_handlers_for': None,
-        'svg': False,
-        'converter': None,
-# These depend on property name by default
-        'type_name': None,
-        'getter': None,
-        'setter': None,
-        'initial': None,
-# Setting these stops default handlers being generated
-# Setting custom_all is the same as setting the other three
-        'custom_all': False,
-        'custom_initial': False,
-        'custom_inherit': False,
-        'custom_value': False,
-    }
-
-    def __init__(self, in_files, enabled_conditions):
-        super(StyleBuilderWriter, self).__init__(in_files, enabled_conditions)
-        self._outputs = {("StyleBuilderFunctions.h"): self.generate_style_builder_functions_h,
-                         ("StyleBuilderFunctions.cpp"): self.generate_style_builder_functions_cpp,
-                         ("StyleBuilder.cpp"): self.generate_style_builder,
-                        }
-
-        self._properties = self.in_file.name_dictionaries
-
-        def set_if_none(property, key, value):
-            if property[key] is None:
-                property[key] = value
-
-        for property in self._properties:
-            cc = self._camelcase_property_name(property["name"])
-            property["property_id"] = "CSSProperty" + cc
-            cc = property["name_for_methods"] or cc.replace("Webkit", "")
-            property["camel_case_name"] = cc
-            set_if_none(property, "type_name", "E" + cc)
-            set_if_none(property, "getter", self._lower_first(cc))
-            set_if_none(property, "setter", "set" + cc)
-            set_if_none(property, "initial", "initial" + cc)
-            if property["custom_all"]:
-                property["custom_initial"] = True
-                property["custom_inherit"] = True
-                property["custom_value"] = True
-
-        self._properties = dict((property["property_id"], property) for property in self._properties)
-
-# FIXME: some of these might be better in a utils file
-    @staticmethod
-    def _camelcase_property_name(property_name):
-        return re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.group(2)).upper(), property_name)
-
-    @staticmethod
-    def _lower_first(s):
-        return s[0].lower() + s[1:]
-
-    @staticmethod
-    def _upper_first(s):
-        return s[0].upper() + s[1:]
-
-    @template_expander.use_jinja("StyleBuilderFunctions.h.tmpl")
-    def generate_style_builder_functions_h(self):
-        return {
-            "properties": self._properties,
-        }
-
-    @template_expander.use_jinja("StyleBuilderFunctions.cpp.tmpl")
-    def generate_style_builder_functions_cpp(self):
-        return {
-            "properties": self._properties,
-        }
-
-    @template_expander.use_jinja("StyleBuilder.cpp.tmpl")
-    def generate_style_builder(self):
-        return {
-            "properties": self._properties,
-        }
-
-
-if __name__ == "__main__":
-    in_generator.Maker(StyleBuilderWriter).main(sys.argv)
diff --git a/core/scripts/make_style_shorthands.py b/core/scripts/make_style_shorthands.py
deleted file mode 100644
index c73de2f..0000000
--- a/core/scripts/make_style_shorthands.py
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Intel Corporation. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re
-import sys
-from collections import defaultdict
-
-import in_generator
-import template_expander
-
-
-class StylePropertyShorthandWriter(in_generator.Writer):
-    class_name = 'StylePropertyShorthand'
-
-    defaults = {
-        'longhands': "",
-        'runtimeEnabledShorthand': None,
-    }
-
-    def __init__(self, in_files, enabled_conditions):
-        super(StylePropertyShorthandWriter, self).__init__(in_files, enabled_conditions)
-        self._outputs = {("StylePropertyShorthand.cpp"): self.generate_style_property_shorthand_cpp, ("StylePropertyShorthand.h"): self.generate_style_property_shorthand_h}
-
-        self._properties = self.in_file.name_dictionaries
-        self._longhand_dictionary = defaultdict(list)
-
-        for property in self._properties:
-            cc = self._camelcase_property_name(property["name"])
-            property["property_id"] = self._create_css_property_name_enum_value(cc)
-            cc = cc[0].lower() + cc[1:]
-            property["camel_case_name"] = cc
-            longhands = property["longhands"].split(';')
-            property["camel_case_longhands"] = list()
-            for longhand in longhands:
-                longhand = self._camelcase_property_name(longhand)
-                longhand = self._create_css_property_name_enum_value(longhand)
-                property["camel_case_longhands"].append(longhand)
-                self._longhand_dictionary[longhand].append(property)
-            if property["runtimeEnabledShorthand"] is not None:
-                lowerFirstConditional = self._lower_first(property["runtimeEnabledShorthand"])
-                property["runtime_conditional_getter"] = "%sEnabled" % lowerFirstConditional
-        self._properties = dict((property["property_id"], property) for property in self._properties)
-
-# FIXME: some of these might be better in a utils file
-    def _camelcase_property_name(self, property_name):
-        return re.sub(r'(^[^-])|-(.)', lambda match: (match.group(1) or match.group(2)).upper(), property_name)
-
-    def _create_css_property_name_enum_value(self, property_name):
-        return "CSSProperty" + property_name
-
-    def _lower_first(self, string):
-        lowered = string[0].lower() + string[1:]
-        lowered = lowered.replace("cSS", "css")
-        return lowered
-
-    @template_expander.use_jinja("StylePropertyShorthand.cpp.tmpl")
-    def generate_style_property_shorthand_cpp(self):
-        return {
-            "properties": self._properties,
-            "longhands_dictionary": self._longhand_dictionary,
-        }
-
-    @template_expander.use_jinja("StylePropertyShorthand.h.tmpl")
-    def generate_style_property_shorthand_h(self):
-        return {
-            "properties": self._properties,
-        }
-
-if __name__ == "__main__":
-    in_generator.Maker(StylePropertyShorthandWriter).main(sys.argv)
diff --git a/core/scripts/make_token_matcher.py b/core/scripts/make_token_matcher.py
deleted file mode 100755
index 10fae62..0000000
--- a/core/scripts/make_token_matcher.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import io
-import itertools
-import re
-import sys
-
-
-class BadInput(Exception):
-    """Unsupported input has been found."""
-
-
-class SwitchCase(object):
-    """Represents a CASE block."""
-    def __init__(self, identifier, block):
-        self.identifier = identifier
-        self.block = block
-
-
-class Optimizer(object):
-    """Generates optimized identifier matching code."""
-    def __init__(self, output_file, array_variable, length_variable):
-        self.output_file = output_file
-        self.array_variable = array_variable
-        self.length_variable = length_variable
-
-    def inspect(self, cases):
-        lengths = list(set([len(c.identifier) for c in cases]))
-        lengths.sort()
-
-        def response(length):
-            self.inspect_array([c for c in cases if len(c.identifier) == length], range(length))
-        self.write_selection(self.length_variable, lengths, str, response)
-
-    def score(self, alternatives):
-        return -sum([len(list(count)) ** 2 for _, count in itertools.groupby(sorted(alternatives))])
-
-    def choose_selection_pos(self, cases, pending):
-        candidates = [pos for pos in pending if all(alternative.isalpha() for alternative in [c.identifier[pos] for c in cases])]
-        if not candidates:
-            raise BadInput('Case-insensitive switching on non-alphabetic characters not yet implemented')
-        return sorted(candidates, key=lambda pos: self.score([c.identifier[pos] for c in cases]))[0]
-
-    def inspect_array(self, cases, pending):
-        assert len(cases) >= 1
-        if pending:
-            common = [pos for pos in pending
-                      if len(set([c.identifier[pos] for c in cases])) == 1]
-            if common:
-                identifier = cases[0].identifier
-                for index in xrange(len(common)):
-                    if index == 0:
-                        self.output_file.write(u'if (LIKELY(')
-                    else:
-                        self.output_file.write(u' && ')
-                    pos = common[index]
-                    if identifier[pos].isalpha():
-                        self.output_file.write("(%s[%d] | 0x20) == '%s'" %
-                                               (self.array_variable, pos, identifier[pos]))
-                    else:
-                        self.output_file.write("%s[%d] == '%s'" %
-                                               (self.array_variable, pos, identifier[pos]))
-                self.output_file.write(u')) {\n')
-                next_pending = list(set(pending) - set(common))
-                next_pending.sort()
-                self.inspect_array(cases, next_pending)
-                self.output_file.write(u'}\n')
-            else:
-                pos = self.choose_selection_pos(cases, pending)
-                next_pending = filter(lambda p: p != pos, pending)
-
-                alternatives = list(set([c.identifier[pos] for c in cases]))
-                alternatives.sort()
-
-                def literal(alternative):
-                    if isinstance(alternative, int):
-                        return str(alternative)
-                    else:
-                        return "'%s'" % alternative
-
-                def response(alternative):
-                    self.inspect_array([c for c in cases if c.identifier[pos] == alternative],
-                                       next_pending)
-
-                expression = '(%s[%d] | 0x20)' % (self.array_variable, pos)
-                self.write_selection(expression, alternatives, literal, response)
-        else:
-            assert len(cases) == 1
-            for block_line in cases[0].block:
-                self.output_file.write(block_line)
-
-    def write_selection(self, expression, alternatives, literal, response):
-        if len(alternatives) == 1:
-            self.output_file.write(u'if (LIKELY(%s == %s)) {\n' % (expression, literal(alternatives[0])))
-            response(alternatives[0])
-            self.output_file.write(u'}\n')
-        elif len(alternatives) == 2:
-            self.output_file.write(u'if (%s == %s) {\n' % (expression, literal(alternatives[0])))
-            response(alternatives[0])
-            self.output_file.write(u'} else if (LIKELY(%s == %s)) {\n' % (expression, literal(alternatives[1])))
-            response(alternatives[1])
-            self.output_file.write(u'}\n')
-        else:
-            self.output_file.write('switch (%s) {\n' % expression)
-            for alternative in alternatives:
-                self.output_file.write(u'case %s: {\n' % literal(alternative))
-                response(alternative)
-                self.output_file.write(u'} break;\n')
-            self.output_file.write(u'}\n')
-
-
-class LineProcessor(object):
-    def process_line(self, line):
-        pass
-
-
-class MainLineProcessor(LineProcessor):
-    """Processes the contents of an input file."""
-    SWITCH_PATTERN = re.compile(r'\s*SWITCH\s*\((\w*),\s*(\w*)\) \{$')
-
-    def __init__(self, output_file):
-        self.output_file = output_file
-
-    def process_line(self, line):
-        match_switch = MainLineProcessor.SWITCH_PATTERN.match(line)
-        if match_switch:
-            array_variable = match_switch.group(1)
-            length_variable = match_switch.group(2)
-            return SwitchLineProcessor(self, self.output_file, array_variable, length_variable)
-        else:
-            self.output_file.write(line)
-            return self
-
-
-class SwitchLineProcessor(LineProcessor):
-    """Processes the contents of a SWITCH block."""
-    CASE_PATTERN = re.compile(r'\s*CASE\s*\(\"([a-z0-9_\-\(]*)\"\) \{$')
-    CLOSE_BRACE_PATTERN = re.compile(r'\s*\}$')
-    EMPTY_PATTERN = re.compile(r'\s*$')
-
-    def __init__(self, parent, output_file, array_variable, length_variable):
-        self.parent = parent
-        self.output_file = output_file
-        self.array_variable = array_variable
-        self.length_variable = length_variable
-        self.cases = []
-
-    def process_line(self, line):
-        match_case = SwitchLineProcessor.CASE_PATTERN.match(line)
-        match_close_brace = SwitchLineProcessor.CLOSE_BRACE_PATTERN.match(line)
-        match_empty = SwitchLineProcessor.EMPTY_PATTERN.match(line)
-        if match_case:
-            identifier = match_case.group(1)
-            return CaseLineProcessor(self, self.output_file, identifier)
-        elif match_close_brace:
-            Optimizer(self.output_file, self.array_variable, self.length_variable).inspect(self.cases)
-            return self.parent
-        elif match_empty:
-            return self
-        else:
-            raise BadInput('Invalid line within SWITCH: %s' % line)
-
-    def add_case(self, latest_case):
-        if latest_case.identifier in [c.identifier for c in self.cases]:
-            raise BadInput('Repeated case: %s' % latest_case.identifier)
-        self.cases.append(latest_case)
-
-
-class CaseLineProcessor(LineProcessor):
-    """Processes the contents of a CASE block."""
-    CLOSE_BRACE_PATTERN = re.compile(r'\s*\}$')
-    BREAK_PATTERN = re.compile(r'break;')
-
-    def __init__(self, parent, output_file, identifier):
-        self.parent = parent
-        self.output_file = output_file
-        self.identifier = identifier
-        self.block = []
-
-    def process_line(self, line):
-        match_close_brace = CaseLineProcessor.CLOSE_BRACE_PATTERN.match(line)
-        match_break = CaseLineProcessor.BREAK_PATTERN.search(line)
-        if match_close_brace:
-            self.parent.add_case(SwitchCase(self.identifier, self.block))
-            return self.parent
-        elif match_break:
-            raise BadInput('break within CASE not supported: %s' % line)
-        else:
-            self.block.append(line)
-            return self
-
-
-def process_file(input_name, output_name):
-    """Transforms input file into legal C++ source code."""
-    with io.open(input_name, 'r', -1, 'utf-8') as input_file:
-        with io.open(output_name, 'w', -1, 'utf-8') as output_file:
-            processor = MainLineProcessor(output_file)
-            input_lines = input_file.readlines()
-            for line in input_lines:
-                processor = processor.process_line(line)
-
-
-if __name__ == '__main__':
-        process_file(sys.argv[1], sys.argv[2])
diff --git a/core/scripts/make_token_matcher_unittest.py b/core/scripts/make_token_matcher_unittest.py
deleted file mode 100755
index c0c8286..0000000
--- a/core/scripts/make_token_matcher_unittest.py
+++ /dev/null
@@ -1,243 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import tempfile
-import unittest
-
-from make_token_matcher import BadInput, CaseLineProcessor, MainLineProcessor, Optimizer, process_file, SwitchCase, SwitchLineProcessor
-
-
-class OptimizerTest(unittest.TestCase):
-    def test_nonalphabetic(self):
-        optimizer = Optimizer(None, None, None)
-        self.assertRaises(
-            BadInput,
-            optimizer.inspect_array,
-            [SwitchCase('-', None), SwitchCase('x', None)],
-            [0])
-
-
-class MainLineProcessorTest(unittest.TestCase):
-    def test_switch(self):
-        processor = MainLineProcessor(None)
-        switchLineProcessor = processor.process_line('SWITCH(array, length) {')
-        self.assertIsInstance(switchLineProcessor, SwitchLineProcessor)
-        self.assertEquals('array', switchLineProcessor.array_variable)
-        self.assertEquals('length', switchLineProcessor.length_variable)
-
-
-class SwitchLineProcessorTest(unittest.TestCase):
-    def test_case(self):
-        processor = SwitchLineProcessor(None, None, None, None)
-        caseLineProcessor = processor.process_line('CASE("identifier") {')
-        self.assertIsInstance(caseLineProcessor, CaseLineProcessor)
-        self.assertEquals('identifier', caseLineProcessor.identifier)
-
-    def test_unexpected(self):
-        processor = SwitchLineProcessor(None, None, None, None)
-        self.assertRaises(
-            BadInput,
-            processor.process_line,
-            'unexpected')
-
-    def test_repeated(self):
-        processor = SwitchLineProcessor(None, None, None, None)
-        processor.process_line('CASE("x") {').process_line('}')
-        caseLineProcessor = processor.process_line('CASE("x") {')
-        self.assertRaises(
-            BadInput,
-            caseLineProcessor.process_line,
-            '}')
-
-
-class CaseLineProcessorTest(unittest.TestCase):
-    def test_break(self):
-        processor = CaseLineProcessor(None, None, None)
-        self.assertRaises(
-            BadInput,
-            processor.process_line,
-            'break;')
-
-
-class ProcessFileTest(unittest.TestCase):
-    SOURCE_SMALL = """
-        SWITCH(p, q) {
-            CASE("a(") {
-                X;
-            }
-            CASE("b(") {
-                Y;
-            }
-        }
-        """
-
-    EXPECTED_SMALL = """
-        if (LIKELY(q == 2)) {
-            if (LIKELY(p[1] == '(')) {
-                if ((p[0] | 0x20) == 'a') {
-                    X;
-                } else if (LIKELY((p[0] | 0x20) == 'b')) {
-                    Y;
-                }
-            }
-        }
-        """
-
-    SOURCE_MEDIUM = """
-        SWITCH (p, q) {
-            CASE ("ab") {
-                X;
-            }
-            CASE ("cd") {
-                Y;
-            }
-            CASE ("ed") {
-                Z;
-            }
-        }
-        """
-
-    EXPECTED_MEDIUM = """
-        if (LIKELY(q == 2)) {
-            if ((p[1] | 0x20) == 'b') {
-                if (LIKELY((p[0] | 0x20) == 'a')) {
-                    X;
-                }
-            } else if (LIKELY((p[1] | 0x20) == 'd')) {
-                if ((p[0] | 0x20) == 'c') {
-                    Y;
-                } else if (LIKELY((p[0] | 0x20) == 'e')) {
-                    Z;
-                }
-            }
-        }
-        """
-
-    SOURCE_LARGE = """
-        prefix;
-        SWITCH(p, q) {
-            CASE("hij") {
-                R;
-            }
-            CASE("efg") {
-                S;
-            }
-            CASE("c-") {
-                T;
-            }
-            CASE("klm") {
-                U;
-            }
-
-            CASE("d-") {
-                V;
-            }
-            CASE("a") {
-                W;
-                X;
-            }
-            CASE("b-") {
-                Y;
-                Z;
-            }
-        }
-        suffix;
-        """
-
-    EXPECTED_LARGE = """
-        prefix;
-        switch (q) {
-        case 1: {
-            if (LIKELY((p[0] | 0x20) == 'a')) {
-                W;
-                X;
-            }
-        } break;
-        case 2: {
-            if (LIKELY(p[1] == '-')) {
-                switch ((p[0] | 0x20)) {
-                case 'b': {
-                    Y;
-                    Z;
-                } break;
-                case 'c': {
-                    T;
-                } break;
-                case 'd': {
-                    V;
-                } break;
-                }
-            }
-        } break;
-        case 3: {
-            switch ((p[0] | 0x20)) {
-            case 'e': {
-                if (LIKELY((p[1] | 0x20) == 'f' && (p[2] | 0x20) == 'g')) {
-                    S;
-                }
-            } break;
-            case 'h': {
-                if (LIKELY((p[1] | 0x20) == 'i' && (p[2] | 0x20) == 'j')) {
-                    R;
-                }
-            } break;
-            case 'k': {
-                if (LIKELY((p[1] | 0x20) == 'l' && (p[2] | 0x20) == 'm')) {
-                    U;
-                }
-            } break;
-            }
-        } break;
-        }
-        suffix;
-        """
-
-    def validate(self, source, expected):
-        with tempfile.NamedTemporaryFile() as input_file:
-            with tempfile.NamedTemporaryFile() as generated_file:
-                input_file.write(source)
-                input_file.flush()
-                process_file(input_file.name, generated_file.name)
-                # Our code generation does not yet implement pretty indentation.
-                actual = generated_file.read().replace('    ', '')
-                expected = expected.replace('    ', '')
-                self.assertEquals(actual, expected)
-
-    def test_small(self):
-        self.validate(ProcessFileTest.SOURCE_SMALL, ProcessFileTest.EXPECTED_SMALL)
-
-    def test_medium(self):
-        self.validate(ProcessFileTest.SOURCE_MEDIUM, ProcessFileTest.EXPECTED_MEDIUM)
-
-    def test_large(self):
-        self.validate(ProcessFileTest.SOURCE_LARGE, ProcessFileTest.EXPECTED_LARGE)
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/core/scripts/name_macros.py b/core/scripts/name_macros.py
deleted file mode 100644
index 01d3644..0000000
--- a/core/scripts/name_macros.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os.path
-import re
-
-import in_generator
-from in_generator import Maker
-import license
-
-
-HEADER_TEMPLATE = """%(license)s
-
-#ifndef %(class_name)sHeaders_h
-#define %(class_name)sHeaders_h
-
-%(includes)s
-
-#endif // %(class_name)sHeaders_h
-"""
-
-
-INTERFACES_HEADER_TEMPLATE = """%(license)s
-
-#ifndef %(class_name)sInterfaces_h
-#define %(class_name)sInterfaces_h
-
-%(declare_conditional_macros)s
-
-#define %(macro_style_name)s_INTERFACES_FOR_EACH(macro) \\
-    \\
-%(unconditional_macros)s
-    \\
-%(conditional_macros)s
-
-#endif // %(class_name)sInterfaces_h
-"""
-
-
-def _to_macro_style(name):
-    s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
-    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1).upper()
-
-
-class Writer(in_generator.Writer):
-    def __init__(self, in_file_path, enabled_conditions):
-        super(Writer, self).__init__(in_file_path, enabled_conditions)
-        self.class_name = self.in_file.parameters['namespace'].strip('"')
-        self._entries_by_conditional = {}
-        self._unconditional_entries = []
-        self._sort_entries_by_conditional()
-        self._outputs = {(self.class_name + "Headers.h"): self.generate_headers_header,
-                         (self.class_name + "Interfaces.h"): self.generate_interfaces_header,
-                        }
-
-    def _sort_entries_by_conditional(self):
-        unconditional_names = set()
-        for entry in self.in_file.name_dictionaries:
-            conditional = entry['Conditional']
-            if not conditional:
-                name = self._class_name_for_entry(entry)
-                if name in unconditional_names:
-                    continue
-                unconditional_names.add(name)
-                self._unconditional_entries.append(entry)
-                continue
-        for entry in self.in_file.name_dictionaries:
-            name = self._class_name_for_entry(entry)
-            if name in unconditional_names:
-                continue
-            conditional = entry['Conditional']
-            if not conditional in self._entries_by_conditional:
-                self._entries_by_conditional[conditional] = []
-            self._entries_by_conditional[conditional].append(entry)
-
-    def _class_name_for_entry(self, entry):
-        if entry['ImplementedAs']:
-            return entry['ImplementedAs']
-        return os.path.basename(entry['name'])
-
-    def _headers_header_include_path(self, entry):
-        if entry['ImplementedAs']:
-            path = os.path.dirname(entry['name'])
-            if len(path):
-                path += '/'
-            path += entry['ImplementedAs']
-        else:
-            path = entry['name']
-        return path + '.h'
-
-    def _headers_header_includes(self, entries):
-        includes = dict()
-        for entry in entries:
-            class_name = self._class_name_for_entry(entry)
-            # Avoid duplicate includes.
-            if class_name in includes:
-                continue
-            include = '#include "%(path)s"\n#include "V8%(js_name)s.h"' % {
-                'path': self._headers_header_include_path(entry),
-                'js_name': os.path.basename(entry['name']),
-            }
-            includes[class_name] = self.wrap_with_condition(include, entry['Conditional'])
-        return includes.values()
-
-    def generate_headers_header(self):
-        return HEADER_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'includes': '\n'.join(self._headers_header_includes(self.in_file.name_dictionaries)),
-        }
-
-    def _declare_one_conditional_macro(self, conditional, entries):
-        macro_name = '%(macro_style_name)s_INTERFACES_FOR_EACH_%(conditional)s' % {
-            'macro_style_name': _to_macro_style(self.class_name),
-            'conditional': conditional,
-        }
-        return self.wrap_with_condition("""#define %(macro_name)s(macro) \\
-%(declarations)s
-
-#else
-#define %(macro_name)s(macro)""" % {
-            'macro_name': macro_name,
-            'declarations': '\n'.join(sorted(set([
-                '    macro(%(name)s) \\' % {'name': self._class_name_for_entry(entry)}
-                for entry in entries]))),
-        }, conditional)
-
-    def _declare_conditional_macros(self):
-        return '\n'.join([
-            self._declare_one_conditional_macro(conditional, entries)
-            for conditional, entries in self._entries_by_conditional.items()])
-
-    def _unconditional_macro(self, entry):
-        return '    macro(%(name)s) \\' % {'name': self._class_name_for_entry(entry)}
-
-    def _conditional_macros(self, conditional):
-        return '    %(macro_style_name)s_INTERFACES_FOR_EACH_%(conditional)s(macro) \\' % {
-            'macro_style_name': _to_macro_style(self.class_name),
-            'conditional': conditional,
-        }
-
-    def generate_interfaces_header(self):
-        return INTERFACES_HEADER_TEMPLATE % {
-            'license': license.license_for_generated_cpp(),
-            'class_name': self.class_name,
-            'macro_style_name': _to_macro_style(self.class_name),
-            'declare_conditional_macros': self._declare_conditional_macros(),
-            'unconditional_macros': '\n'.join(sorted(set(map(self._unconditional_macro, self._unconditional_entries)))),
-            'conditional_macros': '\n'.join(map(self._conditional_macros, self._entries_by_conditional.keys())),
-        }
diff --git a/core/scripts/name_utilities.py b/core/scripts/name_utilities.py
deleted file mode 100644
index c4993b0..0000000
--- a/core/scripts/name_utilities.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-ACRONYMS = ['CSS', 'HTML', 'IME', 'JS', 'SVG', 'URL', 'WOFF', 'XML', 'XSLT']
-
-
-def lower_first(name):
-    """Return name with first letter or initial acronym lowercased.
-
-    E.g., 'SetURL' becomes 'setURL', but 'URLFoo' becomes 'urlFoo'.
-    """
-    for acronym in ACRONYMS:
-        if name.startswith(acronym):
-            return name.replace(acronym, acronym.lower())
-    return name[0].lower() + name[1:]
diff --git a/core/scripts/rule_bison.py b/core/scripts/rule_bison.py
deleted file mode 100644
index 97a0541..0000000
--- a/core/scripts/rule_bison.py
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Copyright (c) 2009 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# usage: rule_bison.py INPUT_FILE OUTPUT_DIR [BISON_EXE]
-# INPUT_FILE is a path to either CSSGrammar.y or XPathGrammar.y.
-# OUTPUT_DIR is where the bison-generated .cpp and .h files should be placed.
-
-import errno
-import os
-import os.path
-import subprocess
-import sys
-
-assert len(sys.argv) == 3 or len(sys.argv) == 4
-
-inputFile = sys.argv[1]
-outputDir = sys.argv[2]
-bisonExe = 'bison'
-if len(sys.argv) > 3:
-    bisonExe = sys.argv[3]
-
-inputName = os.path.basename(inputFile)
-assert inputName == 'CSSGrammar.y' or inputName == 'XPathGrammar.y'
-prefix = {'CSSGrammar.y': 'cssyy', 'XPathGrammar.y': 'xpathyy'}[inputName]
-
-(inputRoot, inputExt) = os.path.splitext(inputName)
-
-# The generated .h will be in a different location depending on the bison
-# version.
-outputHTries = [
-    os.path.join(outputDir, inputRoot + '.cpp.h'),
-    os.path.join(outputDir, inputRoot + '.hpp'),
-]
-
-for outputHTry in outputHTries:
-    try:
-        os.unlink(outputHTry)
-    except OSError, e:
-        if e.errno != errno.ENOENT:
-            raise
-
-outputCpp = os.path.join(outputDir, inputRoot + '.cpp')
-
-returnCode = subprocess.call([bisonExe, '-d', '-p', prefix, inputFile, '-o', outputCpp])
-assert returnCode == 0
-
-# Find the name that bison used for the generated header file.
-outputHTmp = None
-for outputHTry in outputHTries:
-    try:
-        os.stat(outputHTry)
-        outputHTmp = outputHTry
-        break
-    except OSError, e:
-        if e.errno != errno.ENOENT:
-            raise
-
-assert outputHTmp != None
-
-# Read the header file in under the generated name and remove it.
-outputHFile = open(outputHTmp)
-outputHContents = outputHFile.read()
-outputHFile.close()
-os.unlink(outputHTmp)
-
-# Rewrite the generated header with #include guards.
-outputH = os.path.join(outputDir, inputRoot + '.h')
-
-outputHFile = open(outputH, 'w')
-print >>outputHFile, '#ifndef %sH' % inputRoot
-print >>outputHFile, '#define %sH' % inputRoot
-print >>outputHFile, outputHContents
-print >>outputHFile, '#endif'
-outputHFile.close()
diff --git a/core/scripts/template_expander.py b/core/scripts/template_expander.py
deleted file mode 100644
index b1e99b6..0000000
--- a/core/scripts/template_expander.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2013 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os
-import sys
-
-_current_dir = os.path.dirname(os.path.realpath(__file__))
-# jinja2 is in chromium's third_party directory
-# Insert at front to override system libraries, and after path[0] == script dir
-sys.path.insert(1, os.path.join(_current_dir, *([os.pardir] * 4)))
-import jinja2
-
-
-def apply_template(path_to_template, params):
-    dirname, basename = os.path.split(path_to_template)
-    path_to_templates = os.path.join(_current_dir, "templates")
-    jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader([dirname, path_to_templates]), keep_trailing_newline=True)
-    template = jinja_env.get_template(basename)
-    return template.render(params)
-
-
-def use_jinja(template_file_name):
-    def real_decorator(generator):
-        def generator_internal(*args, **kwargs):
-            parameters = generator(*args, **kwargs)
-            return apply_template(template_file_name, parameters)
-        generator_internal.func_name = generator.func_name
-        return generator_internal
-    return real_decorator
diff --git a/core/scripts/templates/InternalRuntimeFlags.idl.tmpl b/core/scripts/templates/InternalRuntimeFlags.idl.tmpl
deleted file mode 100644
index 92838f2..0000000
--- a/core/scripts/templates/InternalRuntimeFlags.idl.tmpl
+++ /dev/null
@@ -1,14 +0,0 @@
-{% from "macros.tmpl" import license -%}
-{{ license() }}
-
-[
-] interface InternalRuntimeFlags {
-{%- for feature in features if not feature.custom %}
-{#-
-    Currently assuming that runtime flags cannot be changed after startup
-    it's possible that some can be and should be conditionally readonly.
-#}
-    {% if feature.condition -%} [Conditional={{feature.condition}}] {% endif -%}
-    readonly attribute boolean {{feature.first_lowered_name}}Enabled;
-{%- endfor %}
-};
diff --git a/core/page/SpeechInputEvent.idl b/core/speech/SpeechInputEvent.idl
similarity index 100%
rename from core/page/SpeechInputEvent.idl
rename to core/speech/SpeechInputEvent.idl
diff --git a/core/page/SpeechInputResult.idl b/core/speech/SpeechInputResult.idl
similarity index 100%
rename from core/page/SpeechInputResult.idl
rename to core/speech/SpeechInputResult.idl
diff --git a/core/page/SpeechInputResultList.idl b/core/speech/SpeechInputResultList.idl
similarity index 100%
rename from core/page/SpeechInputResultList.idl
rename to core/speech/SpeechInputResultList.idl
diff --git a/core/storage/Storage.idl b/core/storage/Storage.idl
index e3b5c70..15cdf26 100644
--- a/core/storage/Storage.idl
+++ b/core/storage/Storage.idl
@@ -32,9 +32,9 @@
     [ImplementedAs=anonymousNamedDeleter, RaisesException] deleter boolean (DOMString name);
     [NotEnumerable, GetterRaisesException] readonly attribute unsigned long length;
     [NotEnumerable, TreatReturnedNullStringAs=Null, RaisesException] DOMString key(unsigned long index);
-    [NotEnumerable, TreatReturnedNullStringAs=Null, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] DOMString getItem(DOMString key);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void setItem(DOMString key, DOMString data);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void removeItem(DOMString key);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void clear();
+    [NotEnumerable, TreatReturnedNullStringAs=Null, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] DOMString getItem(DOMString key);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void setItem(DOMString key, DOMString data);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void removeItem(DOMString key);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void clear();
 };
 
diff --git a/core/svg/SVGDocument.idl b/core/svg/SVGDocument.idl
index 64ec90c..dced411 100644
--- a/core/svg/SVGDocument.idl
+++ b/core/svg/SVGDocument.idl
@@ -19,9 +19,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    CustomToV8
-] interface SVGDocument : Document {
+interface SVGDocument : Document {
     readonly attribute SVGSVGElement        rootElement;
 
     // Overwrite the one in events::DocumentEvent
diff --git a/core/svg/SVGElement.idl b/core/svg/SVGElement.idl
index 26d6c95..74d4db4 100644
--- a/core/svg/SVGElement.idl
+++ b/core/svg/SVGElement.idl
@@ -36,3 +36,4 @@
     CSSValue getPresentationAttribute([Default=Undefined] optional DOMString name);
 };
 
+SVGElement implements GlobalEventHandlers;
diff --git a/core/svg/SVGGlyphRefElement.idl b/core/svg/SVGGlyphRefElement.idl
index e10bf7b..76a4e4a 100644
--- a/core/svg/SVGGlyphRefElement.idl
+++ b/core/svg/SVGGlyphRefElement.idl
@@ -22,7 +22,7 @@
 ] interface SVGGlyphRefElement : SVGElement {
     // FIXME: Use [Reflect] after https://bugs.webkit.org/show_bug.cgi?id=64843 is fixed.
     attribute DOMString glyphRef;
-    [Reflect] attribute DOMString format;
+    [Reflect, TreatNullAs=NullString] attribute DOMString format;
     attribute float x;
     attribute float y;
     attribute float dx;
diff --git a/core/svg/SVGGraphicsElement.idl b/core/svg/SVGGraphicsElement.idl
index 0af2440..8732215 100644
--- a/core/svg/SVGGraphicsElement.idl
+++ b/core/svg/SVGGraphicsElement.idl
@@ -35,6 +35,7 @@
     readonly attribute SVGElement farthestViewportElement;
 
     SVGRect   getBBox();
+    SVGRect   getStrokeBBox();
     SVGMatrix getCTM();
     SVGMatrix getScreenCTM();
     [RaisesException] SVGMatrix getTransformToElement([Default=Undefined] optional SVGElement element);
diff --git a/core/svg/SVGMatrix.idl b/core/svg/SVGMatrix.idl
index dc871be..af56029 100644
--- a/core/svg/SVGMatrix.idl
+++ b/core/svg/SVGMatrix.idl
@@ -20,7 +20,9 @@
  * Boston, MA 02110-1301, USA.
  */
 
-interface SVGMatrix {
+[
+    SetReference(SVGTransform parent)
+] interface SVGMatrix {
     // FIXME: these attributes should all be floats but since we implement
     // AffineTransform with doubles setting these as doubles makes more sense.
     [StrictTypeChecking] attribute double a;
diff --git a/core/svg/SVGPathElement.idl b/core/svg/SVGPathElement.idl
index 083663b..5d75b70 100644
--- a/core/svg/SVGPathElement.idl
+++ b/core/svg/SVGPathElement.idl
@@ -28,77 +28,43 @@
     readonly attribute SVGAnimatedNumber pathLength;
 
     float getTotalLength();
-    SVGPoint getPointAtLength([Default=Undefined] optional float distance);
-    unsigned long getPathSegAtLength([Default=Undefined] optional float distance);
+    [StrictTypeChecking] SVGPoint getPointAtLength(float distance);
+    [StrictTypeChecking] unsigned long getPathSegAtLength(float distance);
 
     SVGPathSegClosePath createSVGPathSegClosePath();
 
-    SVGPathSegMovetoAbs createSVGPathSegMovetoAbs([Default=Undefined] optional float x,
-                                                  [Default=Undefined] optional float y);
-    SVGPathSegMovetoRel createSVGPathSegMovetoRel([Default=Undefined] optional float x,
-                                                  [Default=Undefined] optional float y);
+    [StrictTypeChecking] SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(float x, float y);
+    [StrictTypeChecking] SVGPathSegMovetoRel createSVGPathSegMovetoRel(float x, float y);
 
-    SVGPathSegLinetoAbs createSVGPathSegLinetoAbs([Default=Undefined] optional float x,
-                                                  [Default=Undefined] optional float y);
-    SVGPathSegLinetoRel createSVGPathSegLinetoRel([Default=Undefined] optional float x,
-                                                  [Default=Undefined] optional float y);
+    [StrictTypeChecking] SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(float x, float y);
+    [StrictTypeChecking] SVGPathSegLinetoRel createSVGPathSegLinetoRel(float x, float y);
 
-    SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs([Default=Undefined] optional float x,
-                                                              [Default=Undefined] optional float y,
-                                                              [Default=Undefined] optional float x1,
-                                                              [Default=Undefined] optional float y1,
-                                                              [Default=Undefined] optional float x2,
-                                                              [Default=Undefined] optional float y2);
-    SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel([Default=Undefined] optional float x,
-                                                              [Default=Undefined] optional float y,
-                                                              [Default=Undefined] optional float x1,
-                                                              [Default=Undefined] optional float y1,
-                                                              [Default=Undefined] optional float x2,
-                                                              [Default=Undefined] optional float y2);
+    [StrictTypeChecking] SVGPathSegCurvetoCubicAbs
+        createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2);
+    [StrictTypeChecking] SVGPathSegCurvetoCubicRel
+        createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2);
 
-    SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs([Default=Undefined] optional float x,
-                                                                      [Default=Undefined] optional float y,
-                                                                      [Default=Undefined] optional float x1,
-                                                                      [Default=Undefined] optional float y1);
-    SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel([Default=Undefined] optional float x,
-                                                                      [Default=Undefined] optional float y,
-                                                                      [Default=Undefined] optional float x1,
-                                                                      [Default=Undefined] optional float y1);
+    [StrictTypeChecking] SVGPathSegCurvetoQuadraticAbs
+        createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1);
+    [StrictTypeChecking] SVGPathSegCurvetoQuadraticRel
+        createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1);
 
-    SVGPathSegArcAbs createSVGPathSegArcAbs([Default=Undefined] optional float x,
-                                            [Default=Undefined] optional float y,
-                                            [Default=Undefined] optional float r1,
-                                            [Default=Undefined] optional float r2,
-                                            [Default=Undefined] optional float angle,
-                                            [Default=Undefined] optional boolean largeArcFlag,
-                                            [Default=Undefined] optional boolean sweepFlag);
-    SVGPathSegArcRel createSVGPathSegArcRel([Default=Undefined] optional float x,
-                                            [Default=Undefined] optional float y,
-                                            [Default=Undefined] optional float r1,
-                                            [Default=Undefined] optional float r2,
-                                            [Default=Undefined] optional float angle,
-                                            [Default=Undefined] optional boolean largeArcFlag,
-                                            [Default=Undefined] optional boolean sweepFlag);
+    [StrictTypeChecking] SVGPathSegArcAbs
+        createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag);
+    [StrictTypeChecking] SVGPathSegArcRel
+        createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, boolean largeArcFlag, boolean sweepFlag);
 
-    SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs([Default=Undefined] optional float x);
-    SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel([Default=Undefined] optional float x);
+    [StrictTypeChecking] SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(float x);
+    [StrictTypeChecking] SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(float x);
 
-    SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs([Default=Undefined] optional float y);
-    SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel([Default=Undefined] optional float y);
+    [StrictTypeChecking] SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(float y);
+    [StrictTypeChecking] SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(float y);
 
-    SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs([Default=Undefined] optional float x,
-                                                                          [Default=Undefined] optional float y,
-                                                                          [Default=Undefined] optional float x2,
-                                                                          [Default=Undefined] optional float y2);
-    SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel([Default=Undefined] optional float x,
-                                                                          [Default=Undefined] optional float y,
-                                                                          [Default=Undefined] optional float x2,
-                                                                          [Default=Undefined] optional float y2);
+    [StrictTypeChecking] SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2);
+    [StrictTypeChecking] SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2);
 
-    SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs([Default=Undefined] optional float x,
-                                                                                  [Default=Undefined] optional float y);
-    SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel([Default=Undefined] optional float x,
-                                                                                  [Default=Undefined] optional float y);
+    [StrictTypeChecking] SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y);
+    [StrictTypeChecking] SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y);
 
     readonly attribute SVGPathSegList pathSegList;
     readonly attribute SVGPathSegList normalizedPathSegList;
diff --git a/core/svg/SVGUseElement.idl b/core/svg/SVGUseElement.idl
index 752daa9..eb5d82c 100644
--- a/core/svg/SVGUseElement.idl
+++ b/core/svg/SVGUseElement.idl
@@ -29,7 +29,7 @@
     readonly attribute SVGAnimatedLength   width;
     readonly attribute SVGAnimatedLength   height;
 
-    readonly attribute SVGElementInstance instanceRoot;
+    [MeasureAs=SVGInstanceRoot] readonly attribute SVGElementInstance instanceRoot;
     readonly attribute SVGElementInstance animatedInstanceRoot;
 };
 
diff --git a/core/testing/InternalSettings.idl b/core/testing/InternalSettings.idl
index 9e03edc..5ac9133 100644
--- a/core/testing/InternalSettings.idl
+++ b/core/testing/InternalSettings.idl
@@ -41,7 +41,7 @@
     [RaisesException] void setTextAutosizingFontScaleFactor(float fontScaleFactor);
     [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
     [RaisesException] void setEditingBehavior(DOMString behavior);
-
+    [RaisesException] void setPasswordGenerationDecorationEnabled(boolean enabled);
     [RaisesException] void setImagesEnabled(boolean enabled);
     [RaisesException] void setDefaultVideoPosterURL(DOMString poster);
     [RaisesException] void setViewportEnabled(boolean enabled);
diff --git a/core/testing/Internals.idl b/core/testing/Internals.idl
index 0d21489..c0c80d9 100644
--- a/core/testing/Internals.idl
+++ b/core/testing/Internals.idl
@@ -51,7 +51,6 @@
     [RaisesException] boolean hasShadowInsertionPoint(Node root);
     [RaisesException] boolean hasContentElement(Node root);
     [RaisesException] unsigned long countElementShadow(Node Root);
-    [RaisesException] Element includerFor(Node node);
     [RaisesException] DOMString shadowPseudoId(Element element);
     [RaisesException] void setShadowPseudoId(Element element, DOMString id);
     [RaisesException] Element createContentElement();
@@ -66,8 +65,6 @@
 
     // CSS Animation and Transition testing.
     unsigned long numberOfActiveAnimations();
-    [RaisesException] void suspendAnimations(Document document);
-    [RaisesException] void resumeAnimations(Document document);
     [RaisesException] void pauseAnimations(double pauseTime);
 
     [RaisesException] Node nextSiblingByWalker(Node node);
@@ -76,8 +73,6 @@
     [RaisesException] Node nextNodeByWalker(Node node);
     [RaisesException] Node previousNodeByWalker(Node node);
 
-    [RaisesException] boolean attached(Node node);
-
     DOMString visiblePlaceholder(Element element);
 
     void selectColorInColorChooser(Element element, DOMString colorValue);
@@ -148,7 +143,7 @@
         unsigned long topPadding, unsigned long rightPadding, unsigned long bottomPadding, unsigned long leftPadding,
         boolean ignoreClipping, boolean allowShadowContent, boolean allowChildFrameContent);
 
-    void emitInspectorDidBeginFrame();
+    void emitInspectorDidBeginFrame(optional long frameId);
     void emitInspectorDidCancelFrame();
 
     [RaisesException] boolean hasSpellingMarker(Document document, long from, long length);
@@ -172,6 +167,7 @@
     const unsigned short LAYER_TREE_INCLUDES_REPAINT_RECTS = 2;
     const unsigned short LAYER_TREE_INCLUDES_PAINTING_PHASES = 4;
     const unsigned short LAYER_TREE_INCLUDES_ROOT_LAYER = 8;
+    const unsigned short LAYER_TREE_INCLUDES_CLIP_AND_SCROLL_PARENTS = 16;
     [RaisesException] DOMString layerTreeAsText(Document document, optional unsigned short flags);
     [RaisesException] DOMString elementLayerTreeAsText(Element element, optional unsigned short flags);
 
@@ -180,6 +176,7 @@
 
     [RaisesException] boolean scrollsWithRespectTo(Element element1, Element element2);
     [RaisesException] boolean isUnclippedDescendant(Element element);
+    [RaisesException] boolean needsCompositedScrolling(Element element);
 
     // The values of these constants must be kept in sync with those in RenderLayer.
     const unsigned short DO_NOT_FORCE_COMPOSITED_SCROLLING = 0;
@@ -239,6 +236,10 @@
     [RaisesException] void startTrackingRepaints(Document document);
     [RaisesException] void stopTrackingRepaints(Document document);
 
+    // Returns a list of draggable/non-draggable regions in the document.
+    [RaisesException] ClientRectList draggableRegions(Document document);
+    [RaisesException] ClientRectList nonDraggableRegions(Document document);
+
     // Returns a string with information about the mouse cursor used at the specified client location.
     [RaisesException] DOMString getCurrentCursorInfo(Document document);
 
@@ -251,8 +252,6 @@
 
     void forceReload(boolean endToEnd);
 
-    void enableMockSpeechSynthesizer();
-
     [RaisesException] DOMString getImageSourceURL(Element element);
 
     boolean isSelectPopupVisible(Node node);
@@ -260,4 +259,6 @@
     [RaisesException] ClientRect selectionBounds();
 
     boolean loseSharedGraphicsContext3D();
+
+    [RaisesException] void forceCompositingUpdate(Document document);
 };
diff --git a/core/testing/TypeConversions.idl b/core/testing/TypeConversions.idl
index 1f3df0c..7a70cc5 100644
--- a/core/testing/TypeConversions.idl
+++ b/core/testing/TypeConversions.idl
@@ -26,17 +26,22 @@
 [
 ] interface TypeConversions {
     attribute long testLong;
-    [EnforceRange] attribute long testEnforceRangeLong;
+    [EnforceRange, ImplementedAs=testLong] attribute long testEnforceRangeLong;
     attribute unsigned long testUnsignedLong;
-    [EnforceRange] attribute unsigned long testEnforceRangeUnsignedLong;
+    [EnforceRange, ImplementedAs=testUnsignedLong] attribute unsigned long testEnforceRangeUnsignedLong;
 
     attribute long long testLongLong;
-    [EnforceRange] attribute long long testEnforceRangeLongLong;
+    [EnforceRange, ImplementedAs=testLongLong] attribute long long testEnforceRangeLongLong;
     attribute unsigned long long testUnsignedLongLong;
-    [EnforceRange] attribute unsigned long long testEnforceRangeUnsignedLongLong;
+    [EnforceRange, ImplementedAs=testUnsignedLongLong] attribute unsigned long long testEnforceRangeUnsignedLongLong;
 
     attribute byte testByte;
-    [EnforceRange] attribute byte testEnforceRangeByte;
+    [EnforceRange, ImplementedAs=testByte] attribute byte testEnforceRangeByte;
     attribute octet testOctet;
-    [EnforceRange] attribute octet testEnforceRangeOctet;
+    [EnforceRange, ImplementedAs=testOctet] attribute octet testEnforceRangeOctet;
+
+    attribute short testShort;
+    [EnforceRange, ImplementedAs=testShort] attribute short testEnforceRangeShort;
+    attribute unsigned short testUnsignedShort;
+    [EnforceRange, ImplementedAs=testUnsignedShort] attribute unsigned short testEnforceRangeUnsignedShort;
 };
diff --git a/core/page/MemoryInfo.idl b/core/timing/MemoryInfo.idl
similarity index 100%
rename from core/page/MemoryInfo.idl
rename to core/timing/MemoryInfo.idl
diff --git a/core/page/Performance.idl b/core/timing/Performance.idl
similarity index 98%
rename from core/page/Performance.idl
rename to core/timing/Performance.idl
index 8dd3ea8..b29b83e 100644
--- a/core/page/Performance.idl
+++ b/core/timing/Performance.idl
@@ -29,7 +29,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-// See: http://dev.w3.org/2006/webapi/WebTiming/
+// See: http://www.w3.org/TR/navigation-timing/
 interface Performance : EventTarget {
     readonly attribute PerformanceNavigation navigation;
     readonly attribute PerformanceTiming timing;
diff --git a/core/page/PerformanceEntry.idl b/core/timing/PerformanceEntry.idl
similarity index 100%
rename from core/page/PerformanceEntry.idl
rename to core/timing/PerformanceEntry.idl
diff --git a/core/page/PerformanceMark.idl b/core/timing/PerformanceMark.idl
similarity index 100%
rename from core/page/PerformanceMark.idl
rename to core/timing/PerformanceMark.idl
diff --git a/core/page/PerformanceMeasure.idl b/core/timing/PerformanceMeasure.idl
similarity index 100%
rename from core/page/PerformanceMeasure.idl
rename to core/timing/PerformanceMeasure.idl
diff --git a/core/page/PerformanceNavigation.idl b/core/timing/PerformanceNavigation.idl
similarity index 100%
rename from core/page/PerformanceNavigation.idl
rename to core/timing/PerformanceNavigation.idl
diff --git a/core/page/PerformanceResourceTiming.idl b/core/timing/PerformanceResourceTiming.idl
similarity index 100%
rename from core/page/PerformanceResourceTiming.idl
rename to core/timing/PerformanceResourceTiming.idl
diff --git a/core/page/PerformanceTiming.idl b/core/timing/PerformanceTiming.idl
similarity index 100%
rename from core/page/PerformanceTiming.idl
rename to core/timing/PerformanceTiming.idl
diff --git a/core/workers/SharedWorker.idl b/core/workers/SharedWorker.idl
index 6bba130..a6e4d02 100644
--- a/core/workers/SharedWorker.idl
+++ b/core/workers/SharedWorker.idl
@@ -30,9 +30,9 @@
  */
 
 [
-    EnabledAtRuntime=SharedWorker,
+    RuntimeEnabled=SharedWorker,
     Constructor(DOMString scriptURL, [Default=NullString] optional DOMString name),
-    ConstructorCallWith=ScriptExecutionContext,
+    ConstructorCallWith=ExecutionContext,
     ConstructorRaisesException,
     ActiveDOMObject
 ] interface SharedWorker : EventTarget {
diff --git a/core/workers/Worker.idl b/core/workers/Worker.idl
index 40567a7..dc8b019 100644
--- a/core/workers/Worker.idl
+++ b/core/workers/Worker.idl
@@ -27,7 +27,7 @@
 
 [
     Constructor(DOMString scriptUrl),
-    ConstructorCallWith=ScriptExecutionContext,
+    ConstructorCallWith=ExecutionContext,
     ConstructorRaisesException,
     ActiveDOMObject
 ] interface Worker : EventTarget {
diff --git a/core/workers/WorkerLocation.idl b/core/workers/WorkerLocation.idl
index 0d8399b..7afd84b 100644
--- a/core/workers/WorkerLocation.idl
+++ b/core/workers/WorkerLocation.idl
@@ -29,15 +29,7 @@
 [
     GlobalContext=WorkerGlobalScope
 ] interface WorkerLocation {
-    readonly attribute DOMString href;
-    readonly attribute DOMString protocol;
-    readonly attribute DOMString host;
-    readonly attribute DOMString hostname;
-    readonly attribute DOMString port;
-    readonly attribute DOMString pathname;
-    readonly attribute DOMString search;
-    readonly attribute DOMString hash;
-
-    [NotEnumerable] DOMString toString();
 };
 
+// Force rebuild: crbug.com/307023
+WorkerLocation implements URLUtilsReadOnly;
diff --git a/core/page/WorkerNavigator.idl b/core/workers/WorkerNavigator.idl
similarity index 100%
rename from core/page/WorkerNavigator.idl
rename to core/workers/WorkerNavigator.idl
diff --git a/core/xml/DOMParser.idl b/core/xml/DOMParser.idl
index 5cbe49e..ff6af34 100644
--- a/core/xml/DOMParser.idl
+++ b/core/xml/DOMParser.idl
@@ -20,6 +20,6 @@
 [
     Constructor
 ] interface DOMParser {
-    Document parseFromString([Default=Undefined] optional DOMString str,
+    [RaisesException] Document parseFromString([Default=Undefined] optional DOMString str,
                              [Default=Undefined] optional DOMString contentType);
 };
diff --git a/core/xml/XMLHttpRequest.idl b/core/xml/XMLHttpRequest.idl
index 069129d..305ac87 100644
--- a/core/xml/XMLHttpRequest.idl
+++ b/core/xml/XMLHttpRequest.idl
@@ -40,7 +40,7 @@
     GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext,
+    ConstructorCallWith=ExecutionContext,
     CustomConstructor(optional XMLHttpRequestOptions options)
 ] interface XMLHttpRequest : XMLHttpRequestEventTarget {
     // event handler attributes
@@ -58,9 +58,9 @@
 
     [SetterRaisesException] attribute boolean withCredentials;
 
-    [Custom, ActivityLog=Access, RaisesException] void open(DOMString method, DOMString url, optional boolean async, optional DOMString user, optional DOMString password);
+    [Custom, ActivityLogging=AccessForAllWorlds, RaisesException] void open(DOMString method, DOMString url, optional boolean async, optional DOMString user, optional DOMString password);
 
-    [ActivityLog=Access, RaisesException] void setRequestHeader(DOMString header, DOMString value);
+    [ActivityLogging=AccessForAllWorlds, RaisesException] void setRequestHeader(DOMString header, DOMString value);
 
     [Custom, RaisesException] void send();
 
diff --git a/core/xml/XSLTProcessor.idl b/core/xml/XSLTProcessor.idl
index f552ed1..7c99868 100644
--- a/core/xml/XSLTProcessor.idl
+++ b/core/xml/XSLTProcessor.idl
@@ -32,12 +32,13 @@
 
 [
     Constructor,
+    RuntimeEnabled=XSLT,
     MeasureAs=XSLTProcessor
 ] interface XSLTProcessor {
 
     void importStylesheet([Default=Undefined] optional Node stylesheet);
-    [CustomElementCallbacks=Enable] DocumentFragment transformToFragment([Default=Undefined] optional Node source, [Default=Undefined] optional Document docVal);
-    [CustomElementCallbacks=Enable] Document transformToDocument([Default=Undefined] optional Node source);
+    [CustomElementCallbacks] DocumentFragment transformToFragment([Default=Undefined] optional Node source, [Default=Undefined] optional Document docVal);
+    [CustomElementCallbacks] Document transformToDocument([Default=Undefined] optional Node source);
 
     [Custom] void setParameter(DOMString namespaceURI, DOMString localName, DOMString value);
     [Custom, TreatReturnedNullStringAs=Undefined] DOMString getParameter(DOMString namespaceURI, DOMString localName);
diff --git a/modules/README b/modules/README
index 031dfa4..8f88f7d 100644
--- a/modules/README
+++ b/modules/README
@@ -5,5 +5,5 @@
 using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
 
 The current version corresponds to:
-URL: http://src.chromium.org/multivm/trunk/webkit
-Current revision: 1467
+URL: http://src.chromium.org/blink/branches/dart/1700
+Current revision: 164530
diff --git a/modules/crypto/Crypto.idl b/modules/crypto/Crypto.idl
index 7a24113..52044ab 100644
--- a/modules/crypto/Crypto.idl
+++ b/modules/crypto/Crypto.idl
@@ -36,6 +36,6 @@
     // Web Crypto API spec.
     [Custom, RaisesException] ArrayBufferView getRandomValues(ArrayBufferView array);
 
-    [EnabledAtRuntime=Crypto] readonly attribute SubtleCrypto subtle;
+    [RuntimeEnabled=Crypto] readonly attribute SubtleCrypto subtle;
 };
 
diff --git a/modules/crypto/SubtleCrypto.idl b/modules/crypto/SubtleCrypto.idl
index e4bc3a8..8631403 100644
--- a/modules/crypto/SubtleCrypto.idl
+++ b/modules/crypto/SubtleCrypto.idl
@@ -38,7 +38,7 @@
     [RaisesException] Promise digest(Dictionary algorithm, ArrayBufferView data);
 
     [RaisesException] Promise generateKey(Dictionary algorithm, boolean extractable, DOMString[] keyUsages);
-    [RaisesException] Promise importKey(DOMString format, ArrayBufferView keyData, Dictionary algorithm, boolean extractable, DOMString[] keyUsages);
+    [RaisesException] Promise importKey(DOMString format, ArrayBufferView keyData, Dictionary? algorithm, boolean extractable, DOMString[] keyUsages);
     [RaisesException] Promise exportKey(DOMString format, Key key);
 };
 
diff --git a/modules/crypto/WorkerGlobalScopeCrypto.idl b/modules/crypto/WorkerGlobalScopeCrypto.idl
index 12eea8c..3044d42 100644
--- a/modules/crypto/WorkerGlobalScopeCrypto.idl
+++ b/modules/crypto/WorkerGlobalScopeCrypto.idl
@@ -29,5 +29,5 @@
  */
 
 partial interface WorkerGlobalScope {
-    [EnabledAtRuntime=Crypto] readonly attribute WorkerCrypto crypto;
+    [RuntimeEnabled=Crypto] readonly attribute WorkerCrypto crypto;
 };
diff --git a/modules/device_orientation/DeviceMotionEvent.idl b/modules/device_orientation/DeviceMotionEvent.idl
index 809848d..8643b55 100644
--- a/modules/device_orientation/DeviceMotionEvent.idl
+++ b/modules/device_orientation/DeviceMotionEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=DeviceMotion
+    RuntimeEnabled=DeviceMotion
 ] interface DeviceMotionEvent : Event {
     readonly attribute DeviceAcceleration acceleration;
     readonly attribute DeviceAcceleration accelerationIncludingGravity;
diff --git a/modules/encoding/TextDecoder.idl b/modules/encoding/TextDecoder.idl
index 576d298..8450225 100644
--- a/modules/encoding/TextDecoder.idl
+++ b/modules/encoding/TextDecoder.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    EnabledAtRuntime=EncodingAPI,
+    RuntimeEnabled=EncodingAPI,
     GlobalContext=Window&WorkerGlobalScope,
     Constructor([Default=NullString] optional DOMString label, optional Dictionary options),
     ConstructorRaisesException
diff --git a/modules/encoding/TextEncoder.idl b/modules/encoding/TextEncoder.idl
index ed63e27..b3daede 100644
--- a/modules/encoding/TextEncoder.idl
+++ b/modules/encoding/TextEncoder.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    EnabledAtRuntime=EncodingAPI,
+    RuntimeEnabled=EncodingAPI,
     GlobalContext=Window&WorkerGlobalScope,
     Constructor([Default=NullString] optional DOMString utfLabel),
     ConstructorRaisesException
diff --git a/modules/encryptedmedia/MediaKeyMessageEvent.idl b/modules/encryptedmedia/MediaKeyMessageEvent.idl
index 1f1aab7..7d9c6d0 100644
--- a/modules/encryptedmedia/MediaKeyMessageEvent.idl
+++ b/modules/encryptedmedia/MediaKeyMessageEvent.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=ENCRYPTED_MEDIA_V2,
-    EnabledAtRuntime=EncryptedMedia,
+    RuntimeEnabled=EncryptedMedia,
     ConstructorTemplate=Event
 ] interface MediaKeyMessageEvent : Event {
     readonly attribute Uint8Array message;
diff --git a/modules/encryptedmedia/MediaKeyNeededEvent.idl b/modules/encryptedmedia/MediaKeyNeededEvent.idl
index f593cc3..5dfec5f 100644
--- a/modules/encryptedmedia/MediaKeyNeededEvent.idl
+++ b/modules/encryptedmedia/MediaKeyNeededEvent.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=ENCRYPTED_MEDIA_V2,
-    EnabledAtRuntime=EncryptedMedia,
+    RuntimeEnabled=EncryptedMedia,
     ConstructorTemplate=Event
 ] interface MediaKeyNeededEvent : Event {
     readonly attribute Uint8Array initData;
diff --git a/modules/encryptedmedia/MediaKeySession.idl b/modules/encryptedmedia/MediaKeySession.idl
index 46cda2d..ebebc9f 100644
--- a/modules/encryptedmedia/MediaKeySession.idl
+++ b/modules/encryptedmedia/MediaKeySession.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=ENCRYPTED_MEDIA_V2,
-    EnabledAtRuntime=EncryptedMedia
+    RuntimeEnabled=EncryptedMedia
 ] interface MediaKeySession : EventTarget {
     // error state
     readonly attribute MediaKeyError error;
@@ -39,7 +39,7 @@
     void close();
 
     // EventHandlers
-    [EnabledAtRuntime=EncryptedMedia] attribute EventHandler onwebkitkeyadded;
-    [EnabledAtRuntime=EncryptedMedia] attribute EventHandler onwebkitkeyerror;
-    [EnabledAtRuntime=EncryptedMedia] attribute EventHandler onwebkitkeymessage;
+    [RuntimeEnabled=EncryptedMedia] attribute EventHandler onwebkitkeyadded;
+    [RuntimeEnabled=EncryptedMedia] attribute EventHandler onwebkitkeyerror;
+    [RuntimeEnabled=EncryptedMedia] attribute EventHandler onwebkitkeymessage;
 };
diff --git a/modules/encryptedmedia/MediaKeys.idl b/modules/encryptedmedia/MediaKeys.idl
index 2d03169..9d57659 100644
--- a/modules/encryptedmedia/MediaKeys.idl
+++ b/modules/encryptedmedia/MediaKeys.idl
@@ -25,11 +25,11 @@
 
 [
     Conditional=ENCRYPTED_MEDIA_V2,
-    EnabledAtRuntime=EncryptedMedia,
+    RuntimeEnabled=EncryptedMedia,
     Constructor(DOMString keySystem),
     ConstructorRaisesException
 ] interface MediaKeys {
-    [CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession([Default=Undefined] optional DOMString type, [Default=Undefined] optional Uint8Array initData);
+    [CallWith=ExecutionContext, RaisesException] MediaKeySession createSession([Default=Undefined] optional DOMString type, [Default=Undefined] optional Uint8Array initData);
 
     readonly attribute DOMString keySystem;
 };
diff --git a/modules/filesystem/DataTransferItemFileSystem.idl b/modules/filesystem/DataTransferItemFileSystem.idl
index f41429f..19dd9f9 100644
--- a/modules/filesystem/DataTransferItemFileSystem.idl
+++ b/modules/filesystem/DataTransferItemFileSystem.idl
@@ -29,6 +29,6 @@
  */
 
 partial interface DataTransferItem {
-    [CallWith=ScriptExecutionContext] Entry webkitGetAsEntry();
+    [CallWith=ExecutionContext] Entry webkitGetAsEntry();
 };
 
diff --git a/modules/filesystem/HTMLInputElementFileSystem.idl b/modules/filesystem/HTMLInputElementFileSystem.idl
index 758d6fc..836e25d 100644
--- a/modules/filesystem/HTMLInputElementFileSystem.idl
+++ b/modules/filesystem/HTMLInputElementFileSystem.idl
@@ -29,6 +29,6 @@
  */
 
 partial interface HTMLInputElement {
-[EnabledAtRuntime=FileSystem,CallWith=ScriptExecutionContext] readonly attribute Entry[] webkitEntries;
+[RuntimeEnabled=FileSystem,CallWith=ExecutionContext] readonly attribute Entry[] webkitEntries;
 };
 
diff --git a/modules/filesystem/WindowFileSystem.idl b/modules/filesystem/WindowFileSystem.idl
index 4fed55e..dcbe807 100644
--- a/modules/filesystem/WindowFileSystem.idl
+++ b/modules/filesystem/WindowFileSystem.idl
@@ -30,9 +30,9 @@
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size,
+    [RuntimeEnabled=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size,
             FileSystemCallback successCallback, optional ErrorCallback errorCallback);
-    [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url,
+    [RuntimeEnabled=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url,
             EntryCallback successCallback, optional ErrorCallback errorCallback);
 };
 
diff --git a/modules/filesystem/WorkerGlobalScopeFileSystem.idl b/modules/filesystem/WorkerGlobalScopeFileSystem.idl
index f4a25bc..3762bc5 100644
--- a/modules/filesystem/WorkerGlobalScopeFileSystem.idl
+++ b/modules/filesystem/WorkerGlobalScopeFileSystem.idl
@@ -28,11 +28,11 @@
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size, optional FileSystemCallback successCallback, optional ErrorCallback errorCallback);
-    [EnabledAtRuntime=FileSystem, RaisesException] DOMFileSystemSync webkitRequestFileSystemSync(unsigned short type, long long size);
-    [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url, EntryCallback successCallback, optional ErrorCallback errorCallback);
-    [EnabledAtRuntime=FileSystem, RaisesException] EntrySync webkitResolveLocalFileSystemSyncURL(DOMString url);
+    [RuntimeEnabled=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size, optional FileSystemCallback successCallback, optional ErrorCallback errorCallback);
+    [RuntimeEnabled=FileSystem, RaisesException] DOMFileSystemSync webkitRequestFileSystemSync(unsigned short type, long long size);
+    [RuntimeEnabled=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url, EntryCallback successCallback, optional ErrorCallback errorCallback);
+    [RuntimeEnabled=FileSystem, RaisesException] EntrySync webkitResolveLocalFileSystemSyncURL(DOMString url);
 
-    [EnabledAtRuntime=FileSystem] attribute FileErrorConstructor FileError;
+    [RuntimeEnabled=FileSystem] attribute FileErrorConstructor FileError;
 };
 
diff --git a/modules/gamepad/NavigatorGamepad.idl b/modules/gamepad/NavigatorGamepad.idl
index e1686f3..0fbceee 100644
--- a/modules/gamepad/NavigatorGamepad.idl
+++ b/modules/gamepad/NavigatorGamepad.idl
@@ -18,6 +18,6 @@
  */
 
 partial interface Navigator {
-    [EnabledAtRuntime=Gamepad] GamepadList webkitGetGamepads();
+    [RuntimeEnabled=Gamepad] GamepadList webkitGetGamepads();
 };
 
diff --git a/modules/geolocation/Geolocation.idl b/modules/geolocation/Geolocation.idl
index 9c2ead1..de8466a 100644
--- a/modules/geolocation/Geolocation.idl
+++ b/modules/geolocation/Geolocation.idl
@@ -27,11 +27,11 @@
 [
     NoInterfaceObject
 ] interface Geolocation {
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void getCurrentPosition(PositionCallback successCallback,
+    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void getCurrentPosition(PositionCallback successCallback,
                                      optional PositionErrorCallback errorCallback,
                                      optional PositionOptions options);
 
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] long watchPosition(PositionCallback successCallback,
+    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] long watchPosition(PositionCallback successCallback,
                                 optional PositionErrorCallback errorCallback,
                                 optional PositionOptions options);
 
diff --git a/modules/geolocation/NavigatorGeolocation.idl b/modules/geolocation/NavigatorGeolocation.idl
index 460d293..4de885c 100644
--- a/modules/geolocation/NavigatorGeolocation.idl
+++ b/modules/geolocation/NavigatorGeolocation.idl
@@ -18,6 +18,6 @@
  */
 
 partial interface Navigator {
-    [EnabledAtRuntime=Geolocation] readonly attribute Geolocation geolocation;
+    [RuntimeEnabled=Geolocation] readonly attribute Geolocation geolocation;
 };
 
diff --git a/modules/imagebitmap/ImageBitmapFactories.idl b/modules/imagebitmap/ImageBitmapFactories.idl
index 90cacf0..7f244e1 100644
--- a/modules/imagebitmap/ImageBitmapFactories.idl
+++ b/modules/imagebitmap/ImageBitmapFactories.idl
@@ -30,7 +30,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=ExperimentalCanvasFeatures
+    RuntimeEnabled=ExperimentalCanvasFeatures
 ] interface ImageBitmapFactories {
     [RaisesException] Promise createImageBitmap(Blob blob);
     [RaisesException] Promise createImageBitmap(Blob blob, long sx, long sy, long sw, long sh);
diff --git a/modules/imagebitmap/WindowImageBitmapFactories.idl b/modules/imagebitmap/WindowImageBitmapFactories.idl
index c91ab89..ced1ff8 100644
--- a/modules/imagebitmap/WindowImageBitmapFactories.idl
+++ b/modules/imagebitmap/WindowImageBitmapFactories.idl
@@ -30,7 +30,7 @@
 
 [
     ImplementedAs=ImageBitmapFactories,
-    EnabledAtRuntime=ExperimentalCanvasFeatures
+    RuntimeEnabled=ExperimentalCanvasFeatures
 ] partial interface Window {
     [RaisesException] Promise createImageBitmap(HTMLImageElement image);
     [RaisesException] Promise createImageBitmap(HTMLImageElement image, long sx, long sy, long sw, long sh);
diff --git a/modules/indexeddb/IDBCursor.idl b/modules/indexeddb/IDBCursor.idl
index 18d53a1..1da7855 100644
--- a/modules/indexeddb/IDBCursor.idl
+++ b/modules/indexeddb/IDBCursor.idl
@@ -26,12 +26,12 @@
 interface IDBCursor {
 
     readonly attribute DOMString direction;
-    [CallWith=ScriptExecutionContext, CachedAttribute=isKeyDirty] readonly attribute any key;
-    [CallWith=ScriptExecutionContext, CachedAttribute=isPrimaryKeyDirty] readonly attribute any primaryKey;
+    [CallWith=ExecutionContext, CachedAttribute=isKeyDirty] readonly attribute any key;
+    [CallWith=ExecutionContext, CachedAttribute=isPrimaryKeyDirty] readonly attribute any primaryKey;
     readonly attribute IDBAny source;
 
     [CallWith=ScriptState, RaisesException] IDBRequest update(any value);
     [RaisesException] void advance([EnforceRange] unsigned long count);
-    [CallWith=ScriptExecutionContext, ImplementedAs=continueFunction, RaisesException] void continue([Default=Undefined] optional any key);
-    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete();
+    [CallWith=ExecutionContext, ImplementedAs=continueFunction, RaisesException] void continue([Default=Undefined] optional any key);
+    [CallWith=ExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete();
 };
diff --git a/modules/indexeddb/IDBCursorWithValue.idl b/modules/indexeddb/IDBCursorWithValue.idl
index 4f8a780..cad30a6 100644
--- a/modules/indexeddb/IDBCursorWithValue.idl
+++ b/modules/indexeddb/IDBCursorWithValue.idl
@@ -24,5 +24,5 @@
  */
 
 interface IDBCursorWithValue : IDBCursor {
-    [CallWith=ScriptExecutionContext,CachedAttribute=isValueDirty] readonly attribute any value;
+    [CallWith=ExecutionContext,CachedAttribute=isValueDirty] readonly attribute any value;
 };
diff --git a/modules/indexeddb/IDBDatabase.idl b/modules/indexeddb/IDBDatabase.idl
index 3d81ed2..3c2db17 100644
--- a/modules/indexeddb/IDBDatabase.idl
+++ b/modules/indexeddb/IDBDatabase.idl
@@ -38,9 +38,9 @@
 
     [RaisesException] IDBObjectStore createObjectStore(DOMString name, optional Dictionary options);
     [RaisesException] void deleteObjectStore(DOMString name);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(DOMStringList storeNames, [Default=NullString] optional DOMString mode);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(sequence<DOMString> storeNames, [Default=NullString] optional DOMString mode);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(DOMString storeName, [Default=NullString] optional DOMString mode);
+    [CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(DOMStringList storeNames, [Default=NullString] optional DOMString mode);
+    [CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(sequence<DOMString> storeNames, [Default=NullString] optional DOMString mode);
+    [CallWith=ExecutionContext, RaisesException] IDBTransaction transaction(DOMString storeName, [Default=NullString] optional DOMString mode);
 
     void close();
 };
diff --git a/modules/indexeddb/IDBFactory.idl b/modules/indexeddb/IDBFactory.idl
index dc69602..7e0013c 100644
--- a/modules/indexeddb/IDBFactory.idl
+++ b/modules/indexeddb/IDBFactory.idl
@@ -25,10 +25,10 @@
 
 [
 ] interface IDBFactory {
-    [CallWith=ScriptExecutionContext, ImplementedAs=getDatabaseNames, RaisesException] IDBRequest webkitGetDatabaseNames();
+    [CallWith=ExecutionContext, ImplementedAs=getDatabaseNames, RaisesException] IDBRequest webkitGetDatabaseNames();
 
-    [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest deleteDatabase(DOMString name);
+    [CallWith=ExecutionContext, RaisesException] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
+    [CallWith=ExecutionContext, RaisesException] IDBOpenDBRequest deleteDatabase(DOMString name);
 
-    [CallWith=ScriptExecutionContext, RaisesException] short cmp(any first, any second);
+    [CallWith=ExecutionContext, RaisesException] short cmp(any first, any second);
 };
diff --git a/modules/indexeddb/IDBIndex.idl b/modules/indexeddb/IDBIndex.idl
index 4819a1a..eca9a6f 100644
--- a/modules/indexeddb/IDBIndex.idl
+++ b/modules/indexeddb/IDBIndex.idl
@@ -31,10 +31,10 @@
     readonly attribute boolean unique;
     readonly attribute boolean multiEntry;
 
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor([Default=Undefined] optional any key, [Default=NullString] optional DOMString direction);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any key, [Default=NullString] optional DOMString direction);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, [Default=NullString] optional DOMString direction);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest openKeyCursor([Default=Undefined] optional any range, [Default=NullString] optional DOMString direction);
 
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(any key);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest getKey(any key);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count([Default=Undefined] optional any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest get(any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest getKey(any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest count([Default=Undefined] optional any key);
 };
diff --git a/modules/indexeddb/IDBKeyRange.idl b/modules/indexeddb/IDBKeyRange.idl
index 235e09e..031bfca 100644
--- a/modules/indexeddb/IDBKeyRange.idl
+++ b/modules/indexeddb/IDBKeyRange.idl
@@ -25,13 +25,13 @@
 
 [
 ] interface IDBKeyRange {
-    [ImplementedAs=lowerValue,CallWith=ScriptExecutionContext] readonly attribute any lower;
-    [ImplementedAs=upperValue,CallWith=ScriptExecutionContext] readonly attribute any upper;
+    [ImplementedAs=lowerValue,CallWith=ExecutionContext] readonly attribute any lower;
+    [ImplementedAs=upperValue,CallWith=ExecutionContext] readonly attribute any upper;
     readonly attribute boolean lowerOpen;
     readonly attribute boolean upperOpen;
 
-    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange only(any value);
-    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange lowerBound(any bound, [Default=Undefined] optional boolean open);
-    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange upperBound(any bound, [Default=Undefined] optional boolean open);
-    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange bound(any lower, any upper, [Default=Undefined] optional boolean lowerOpen, [Default=Undefined] optional boolean upperOpen);
+    [CallWith=ExecutionContext, RaisesException] static IDBKeyRange only(any value);
+    [CallWith=ExecutionContext, RaisesException] static IDBKeyRange lowerBound(any bound, [Default=Undefined] optional boolean open);
+    [CallWith=ExecutionContext, RaisesException] static IDBKeyRange upperBound(any bound, [Default=Undefined] optional boolean open);
+    [CallWith=ExecutionContext, RaisesException] static IDBKeyRange bound(any lower, any upper, [Default=Undefined] optional boolean lowerOpen, [Default=Undefined] optional boolean upperOpen);
 };
diff --git a/modules/indexeddb/IDBObjectStore.idl b/modules/indexeddb/IDBObjectStore.idl
index a3ca01d..9f7a6b6 100644
--- a/modules/indexeddb/IDBObjectStore.idl
+++ b/modules/indexeddb/IDBObjectStore.idl
@@ -33,14 +33,15 @@
 
     [CallWith=ScriptState, RaisesException] IDBRequest put(any value, [Default=Undefined] optional any key);
     [CallWith=ScriptState, RaisesException] IDBRequest add(any value, [Default=Undefined] optional any key);
-    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete(any key);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest clear();
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(any key);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor([Default=Undefined] optional any key, [Default=NullString] optional DOMString direction);
+    [CallWith=ExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete(any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest clear();
+    [CallWith=ExecutionContext, RaisesException] IDBRequest get(any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest openCursor([Default=Undefined] optional any range, [Default=NullString] optional DOMString direction);
+    [CallWith=ExecutionContext, RaisesException, RuntimeEnabled=IndexedDBExperimental] IDBRequest openKeyCursor([Default=Undefined] optional any range, [Default=NullString] optional DOMString direction);
 
-    [CallWith=ScriptExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, sequence<DOMString> keyPath, optional Dictionary options);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, DOMString keyPath, optional Dictionary options);
+    [CallWith=ExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, sequence<DOMString> keyPath, optional Dictionary options);
+    [CallWith=ExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, DOMString keyPath, optional Dictionary options);
     [RaisesException] IDBIndex index(DOMString name);
     [RaisesException] void deleteIndex(DOMString name);
-    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count([Default=Undefined] optional any key);
+    [CallWith=ExecutionContext, RaisesException] IDBRequest count([Default=Undefined] optional any key);
 };
diff --git a/modules/indexeddb/IDBVersionChangeEvent.idl b/modules/indexeddb/IDBVersionChangeEvent.idl
index ce66636..90fb68f 100644
--- a/modules/indexeddb/IDBVersionChangeEvent.idl
+++ b/modules/indexeddb/IDBVersionChangeEvent.idl
@@ -27,7 +27,8 @@
     readonly attribute IDBAny oldVersion;
     readonly attribute IDBAny newVersion;
 
-    // FIXME: This is non-standard, see
+    // FIXME: These are non-standard, see
     // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22370
     readonly attribute DOMString dataLoss;
+    readonly attribute DOMString dataLossMessage;
 };
diff --git a/modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl b/modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl
index e957d79..9b2c208 100644
--- a/modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl
+++ b/modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl
@@ -25,7 +25,7 @@
  */
 
 partial interface WorkerGlobalScope {
-    [ImplementedAs=indexedDB, EnabledAtRuntime=IndexedDB] readonly attribute IDBFactory webkitIndexedDB;
+    [ImplementedAs=indexedDB, RuntimeEnabled=IndexedDB] readonly attribute IDBFactory webkitIndexedDB;
 
     attribute IDBCursorConstructor webkitIDBCursor;
     attribute IDBDatabaseConstructor webkitIDBDatabase;
@@ -36,7 +36,7 @@
     attribute IDBRequestConstructor webkitIDBRequest;
     attribute IDBTransactionConstructor webkitIDBTransaction;
 
-    [EnabledAtRuntime=IndexedDB] readonly attribute IDBFactory indexedDB;
+    [RuntimeEnabled=IndexedDB] readonly attribute IDBFactory indexedDB;
 
     attribute IDBCursorConstructor IDBCursor;
     attribute IDBCursorWithValueConstructor IDBCursorWithValue;
diff --git a/core/dom/ErrorEvent.idl b/modules/mediasource/HTMLVideoElementMediaSource.idl
similarity index 73%
copy from core/dom/ErrorEvent.idl
copy to modules/mediasource/HTMLVideoElementMediaSource.idl
index 33f0239..79a51ab 100644
--- a/core/dom/ErrorEvent.idl
+++ b/modules/mediasource/HTMLVideoElementMediaSource.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -27,14 +27,6 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+partial interface HTMLVideoElement {
+    [RuntimeEnabled=MediaSourceExperimental] VideoPlaybackQuality getVideoPlaybackQuality();
 };
-
diff --git a/modules/mediasource/MediaSource.idl b/modules/mediasource/MediaSource.idl
index 6f2b0af..24a08d2 100644
--- a/modules/mediasource/MediaSource.idl
+++ b/modules/mediasource/MediaSource.idl
@@ -29,10 +29,10 @@
  */
 
 [
-    EnabledAtRuntime=MediaSource,
+    RuntimeEnabled=MediaSource,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface MediaSource : EventTarget {
     // All the source buffers created by this object.
     readonly attribute SourceBufferList sourceBuffers;
diff --git a/modules/mediasource/SourceBuffer.idl b/modules/mediasource/SourceBuffer.idl
index c6160bd..9498095 100644
--- a/modules/mediasource/SourceBuffer.idl
+++ b/modules/mediasource/SourceBuffer.idl
@@ -31,7 +31,7 @@
 [
     NoInterfaceObject,
     ActiveDOMObject,
-    EnabledAtRuntime=MediaSource
+    RuntimeEnabled=MediaSource
 ] interface SourceBuffer : EventTarget {
 
     readonly attribute boolean updating;
@@ -52,7 +52,7 @@
     [RaisesException] void appendBuffer(ArrayBuffer data);
     [RaisesException] void appendBuffer(ArrayBufferView data);
 
-    [RaisesException, EnabledAtRuntime=stream] void appendStream(Stream stream, optional unsigned long long maxSize);
+    [RaisesException, RuntimeEnabled=stream] void appendStream(Stream stream, optional unsigned long long maxSize);
 
     // Abort the current segment append sequence.
     [RaisesException] void abort();
diff --git a/modules/mediasource/SourceBufferList.idl b/modules/mediasource/SourceBufferList.idl
index ecf3508..b5bf134 100644
--- a/modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/SourceBufferList.idl
@@ -30,8 +30,8 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=MediaSource,
-    CallWith=ScriptExecutionContext
+    RuntimeEnabled=MediaSource,
+    CallWith=ExecutionContext
 ] interface SourceBufferList : EventTarget {
     readonly attribute unsigned long length;
     getter SourceBuffer item(unsigned long index);
diff --git a/modules/mediasource/URLMediaSource.idl b/modules/mediasource/URLMediaSource.idl
index 6adb9f1..e259be0 100644
--- a/modules/mediasource/URLMediaSource.idl
+++ b/modules/mediasource/URLMediaSource.idl
@@ -28,6 +28,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 partial interface URL {
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(WebKitMediaSource? source);
+    [CallWith=ExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
+    [CallWith=ExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(WebKitMediaSource? source);
 };
diff --git a/core/dom/ErrorEvent.idl b/modules/mediasource/VideoPlaybackQuality.idl
similarity index 73%
copy from core/dom/ErrorEvent.idl
copy to modules/mediasource/VideoPlaybackQuality.idl
index 33f0239..7be130b 100644
--- a/core/dom/ErrorEvent.idl
+++ b/modules/mediasource/VideoPlaybackQuality.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -27,14 +27,10 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+[RuntimeEnabled=MediaSourceExperimental]
+interface VideoPlaybackQuality {
+    readonly attribute double creationTime;
+    readonly attribute unsigned long totalVideoFrames;
+    readonly attribute unsigned long droppedVideoFrames;
+    readonly attribute unsigned long corruptedVideoFrames;
 };
-
diff --git a/modules/mediasource/WebKitMediaSource.idl b/modules/mediasource/WebKitMediaSource.idl
index 6039201..5d127ae 100644
--- a/modules/mediasource/WebKitMediaSource.idl
+++ b/modules/mediasource/WebKitMediaSource.idl
@@ -30,10 +30,10 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=WebKitMediaSource,
+    RuntimeEnabled=WebKitMediaSource,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface WebKitMediaSource : EventTarget {
     // All the source buffers created by this object.
     readonly attribute WebKitSourceBufferList sourceBuffers;
diff --git a/modules/mediasource/WebKitSourceBuffer.idl b/modules/mediasource/WebKitSourceBuffer.idl
index b7582b0..da4c157 100644
--- a/modules/mediasource/WebKitSourceBuffer.idl
+++ b/modules/mediasource/WebKitSourceBuffer.idl
@@ -30,7 +30,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=WebKitMediaSource
+    RuntimeEnabled=WebKitMediaSource
 ] interface WebKitSourceBuffer {
 
     // Returns the time ranges buffered.
diff --git a/modules/mediasource/WebKitSourceBufferList.idl b/modules/mediasource/WebKitSourceBufferList.idl
index 4c5e359..b3d2ec4 100644
--- a/modules/mediasource/WebKitSourceBufferList.idl
+++ b/modules/mediasource/WebKitSourceBufferList.idl
@@ -30,7 +30,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=WebKitMediaSource
+    RuntimeEnabled=WebKitMediaSource
 ] interface WebKitSourceBufferList : EventTarget {
     readonly attribute unsigned long length;
     getter WebKitSourceBuffer item(unsigned long index);
diff --git a/modules/mediasource/WindowMediaSource.idl b/modules/mediasource/WindowMediaSource.idl
index bf5bbef..6221f9e 100644
--- a/modules/mediasource/WindowMediaSource.idl
+++ b/modules/mediasource/WindowMediaSource.idl
@@ -28,7 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 partial interface Window {
-    [EnabledAtRuntime=WebKitMediaSource] attribute WebKitMediaSourceConstructor WebKitMediaSource;
-    [EnabledAtRuntime=WebKitMediaSource] attribute WebKitSourceBufferConstructor WebKitSourceBuffer;
-    [EnabledAtRuntime=WebKitMediaSource] attribute WebKitSourceBufferListConstructor WebKitSourceBufferList;
+    [RuntimeEnabled=WebKitMediaSource] attribute WebKitMediaSourceConstructor WebKitMediaSource;
+    [RuntimeEnabled=WebKitMediaSource] attribute WebKitSourceBufferConstructor WebKitSourceBuffer;
+    [RuntimeEnabled=WebKitMediaSource] attribute WebKitSourceBufferListConstructor WebKitSourceBufferList;
 };
diff --git a/modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
index 62d387f..2b65e3f 100644
--- a/modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -27,7 +27,7 @@
     Constructor,
     Constructor(MediaStream stream),
     Constructor(MediaStreamTrack[] tracks),
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface MediaStream : EventTarget {
     // DEPRECATED
     readonly attribute DOMString label;
@@ -42,6 +42,8 @@
     MediaStreamTrack getTrackById(DOMString trackId);
 
     readonly attribute boolean ended;
+
+    // DEPRECATED
     void stop();
 
     attribute EventHandler onended;
diff --git a/modules/mediastream/MediaStreamTrack.idl b/modules/mediastream/MediaStreamTrack.idl
index f5d9ea9..409d17b 100644
--- a/modules/mediastream/MediaStreamTrack.idl
+++ b/modules/mediastream/MediaStreamTrack.idl
@@ -28,14 +28,14 @@
     readonly attribute DOMString kind;
     readonly attribute DOMString id;
     readonly attribute DOMString label;
-             attribute boolean enabled;
-
+    attribute boolean enabled;
     readonly attribute DOMString readyState;
 
+    [CallWith=ExecutionContext, RaisesException] static void getSources(MediaStreamTrackSourcesCallback callback);
+    [ImplementedAs=stopTrack, RaisesException] void stop();
+
     attribute EventHandler onmute;
     attribute EventHandler onunmute;
     attribute EventHandler onended;
-
-    [CallWith=ScriptExecutionContext, RaisesException] static void getSources(MediaStreamTrackSourcesCallback callback);
 };
 
diff --git a/modules/mediastream/NavigatorMediaStream.idl b/modules/mediastream/NavigatorMediaStream.idl
index 960c32e..2f72684 100644
--- a/modules/mediastream/NavigatorMediaStream.idl
+++ b/modules/mediastream/NavigatorMediaStream.idl
@@ -18,7 +18,7 @@
  */
 
 partial interface Navigator {
-    [EnabledAtRuntime=MediaStream, RaisesException] void webkitGetUserMedia(Dictionary options,
+    [RuntimeEnabled=MediaStream, RaisesException] void webkitGetUserMedia(Dictionary options,
                                                  NavigatorUserMediaSuccessCallback successCallback,
                                                  optional NavigatorUserMediaErrorCallback errorCallback);
 };
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
index f0c847c..4455522 100644
--- a/modules/mediastream/RTCPeerConnection.idl
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -33,7 +33,7 @@
     ActiveDOMObject,
     Constructor(Dictionary rtcIceServers, optional Dictionary mediaConstraints),
     ConstructorRaisesException,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface RTCPeerConnection : EventTarget {
     [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
 
diff --git a/modules/mediastream/RTCSessionDescription.idl b/modules/mediastream/RTCSessionDescription.idl
index 0e3d464..70077ef 100644
--- a/modules/mediastream/RTCSessionDescription.idl
+++ b/modules/mediastream/RTCSessionDescription.idl
@@ -29,10 +29,10 @@
  */
 
 [
-    Constructor(Dictionary dictionary),
+    Constructor(optional Dictionary descriptionInitDict),
     ConstructorRaisesException
 ] interface RTCSessionDescription {
-    [SetterRaisesException] attribute DOMString type;
-    [SetterRaisesException] attribute DOMString sdp;
+    [SetterRaisesException, TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString type;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString sdp;
 };
 
diff --git a/modules/mediastream/URLMediaStream.idl b/modules/mediastream/URLMediaStream.idl
index 3b8edb5..d6d36cf 100644
--- a/modules/mediastream/URLMediaStream.idl
+++ b/modules/mediastream/URLMediaStream.idl
@@ -28,5 +28,5 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 partial interface URL {
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
+    [CallWith=ExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
 };
diff --git a/modules/notifications/Notification.idl b/modules/notifications/Notification.idl
index 75a4779..cbce5d6 100644
--- a/modules/notifications/Notification.idl
+++ b/modules/notifications/Notification.idl
@@ -32,16 +32,16 @@
 [
     ActiveDOMObject,
     Constructor(DOMString title, [Default=Undefined] optional Dictionary options),
-    ConstructorCallWith=ScriptExecutionContext,
-    EnabledAtRuntime=notifications
+    ConstructorCallWith=ExecutionContext,
+    RuntimeEnabled=notifications
 ] interface Notification : EventTarget {
     void show();
     [Conditional=LEGACY_NOTIFICATIONS] void cancel();
     void close();
 
 
-    [CallWith=ScriptExecutionContext] static readonly attribute DOMString permission;
-    [CallWith=ScriptExecutionContext] static void requestPermission(optional NotificationPermissionCallback callback);
+    [CallWith=ExecutionContext] static readonly attribute DOMString permission;
+    [CallWith=ExecutionContext] static void requestPermission(optional NotificationPermissionCallback callback);
 
     attribute EventHandler onshow;
     [Conditional=LEGACY_NOTIFICATIONS] attribute EventHandler ondisplay;
diff --git a/modules/notifications/NotificationCenter.idl b/modules/notifications/NotificationCenter.idl
index 9c27269..fb23a66 100644
--- a/modules/notifications/NotificationCenter.idl
+++ b/modules/notifications/NotificationCenter.idl
@@ -34,7 +34,7 @@
     Conditional=LEGACY_NOTIFICATIONS,
     ActiveDOMObject
 ] interface NotificationCenter {
-   [MeasureAs=LegacyTextNotifications, ActivityLog=Access, RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
+   [MeasureAs=LegacyTextNotifications, ActivityLogging=AccessForAllWorlds, RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
 
    long checkPermission();
    void requestPermission(optional VoidCallback callback);
diff --git a/modules/notifications/WindowNotifications.idl b/modules/notifications/WindowNotifications.idl
index 78a69d2..9f74cf0 100644
--- a/modules/notifications/WindowNotifications.idl
+++ b/modules/notifications/WindowNotifications.idl
@@ -28,5 +28,5 @@
     Conditional=LEGACY_NOTIFICATIONS,
     ImplementedAs=DOMWindowNotifications
 ] partial interface Window {
-    [EnabledAtRuntime=Notifications, MeasureAs=LegacyNotifications, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute NotificationCenter webkitNotifications;
+    [RuntimeEnabled=Notifications, MeasureAs=LegacyNotifications, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] readonly attribute NotificationCenter webkitNotifications;
 };
diff --git a/modules/notifications/WorkerGlobalScopeNotifications.idl b/modules/notifications/WorkerGlobalScopeNotifications.idl
index 70a33dd..f6468a7 100644
--- a/modules/notifications/WorkerGlobalScopeNotifications.idl
+++ b/modules/notifications/WorkerGlobalScopeNotifications.idl
@@ -27,5 +27,5 @@
 [
     Conditional=LEGACY_NOTIFICATIONS
 ] partial interface WorkerGlobalScope {
-    [EnabledAtRuntime=Notifications] readonly attribute NotificationCenter webkitNotifications;
+    [RuntimeEnabled=Notifications] readonly attribute NotificationCenter webkitNotifications;
 };
diff --git a/modules/performance/WorkerGlobalScopePerformance.idl b/modules/performance/WorkerGlobalScopePerformance.idl
index a737930..1522a1d 100644
--- a/modules/performance/WorkerGlobalScopePerformance.idl
+++ b/modules/performance/WorkerGlobalScopePerformance.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    EnabledAtRuntime=HighResolutionTimeInWorkers
+    RuntimeEnabled=HighResolutionTimeInWorkers
 ] partial interface WorkerGlobalScope {
     readonly attribute WorkerPerformance performance;
 };
diff --git a/modules/quota/StorageInfo.idl b/modules/quota/StorageInfo.idl
index f21070e..7988ac3 100644
--- a/modules/quota/StorageInfo.idl
+++ b/modules/quota/StorageInfo.idl
@@ -29,6 +29,6 @@
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [CallWith=ScriptExecutionContext] void queryUsageAndQuota(unsigned short storageType, optional StorageUsageCallback usageCallback, optional StorageErrorCallback errorCallback);
-    [CallWith=ScriptExecutionContext] void requestQuota(unsigned short storageType, unsigned long long newQuotaInBytes, optional StorageQuotaCallback quotaCallback, optional StorageErrorCallback errorCallback);
+    [CallWith=ExecutionContext] void queryUsageAndQuota(unsigned short storageType, optional StorageUsageCallback usageCallback, optional StorageErrorCallback errorCallback);
+    [CallWith=ExecutionContext] void requestQuota(unsigned short storageType, unsigned long long newQuotaInBytes, optional StorageQuotaCallback quotaCallback, optional StorageErrorCallback errorCallback);
 };
diff --git a/modules/quota/StorageQuota.idl b/modules/quota/StorageQuota.idl
index 1c8243e..a8f2c9c 100644
--- a/modules/quota/StorageQuota.idl
+++ b/modules/quota/StorageQuota.idl
@@ -26,6 +26,6 @@
 [
     NoInterfaceObject
 ] interface StorageQuota {
-    [CallWith=ScriptExecutionContext] void queryUsageAndQuota(StorageUsageCallback usageCallback, optional StorageErrorCallback errorCallback);
-    [CallWith=ScriptExecutionContext] void requestQuota(unsigned long long newQuotaInBytes, optional StorageQuotaCallback quotaCallback, optional StorageErrorCallback errorCallback);
+    [CallWith=ExecutionContext] void queryUsageAndQuota(StorageUsageCallback usageCallback, optional StorageErrorCallback errorCallback);
+    [CallWith=ExecutionContext] void requestQuota(unsigned long long newQuotaInBytes, optional StorageQuotaCallback quotaCallback, optional StorageErrorCallback errorCallback);
 };
diff --git a/modules/serviceworkers/NavigatorServiceWorker.idl b/modules/serviceworkers/NavigatorServiceWorker.idl
index 2747667..a2dcebf 100644
--- a/modules/serviceworkers/NavigatorServiceWorker.idl
+++ b/modules/serviceworkers/NavigatorServiceWorker.idl
@@ -28,8 +28,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 [
-    EnabledAtRuntime=ServiceWorker
+    RuntimeEnabled=ServiceWorker
 ] partial interface Navigator {
-  [CallWith=ScriptExecutionContext, RaisesException] Promise registerServiceWorker(DOMString pattern, DOMString src);
-  [CallWith=ScriptExecutionContext, RaisesException] Promise unregisterServiceWorker(DOMString pattern);
+  [CallWith=ExecutionContext, RaisesException] Promise registerServiceWorker(DOMString pattern, DOMString src);
+  [CallWith=ExecutionContext, RaisesException] Promise unregisterServiceWorker(DOMString pattern);
 };
diff --git a/modules/serviceworkers/ServiceWorker.idl b/modules/serviceworkers/ServiceWorker.idl
index 866d0ea..b58eb90 100644
--- a/modules/serviceworkers/ServiceWorker.idl
+++ b/modules/serviceworkers/ServiceWorker.idl
@@ -28,7 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 [
-    EnabledAtRuntime=ServiceWorker,
+    RuntimeEnabled=ServiceWorker,
     NoInterfaceObject
 ] interface ServiceWorker {
 };
diff --git a/modules/speech/SpeechGrammar.idl b/modules/speech/SpeechGrammar.idl
index 0116770..1b629a4 100644
--- a/modules/speech/SpeechGrammar.idl
+++ b/modules/speech/SpeechGrammar.idl
@@ -27,6 +27,6 @@
     NoInterfaceObject,
     Constructor
 ] interface SpeechGrammar {
-    [URL,CallWith=ScriptExecutionContext] attribute DOMString src;
+    [URL,CallWith=ExecutionContext] attribute DOMString src;
     attribute float weight;
 };
diff --git a/modules/speech/SpeechGrammarList.idl b/modules/speech/SpeechGrammarList.idl
index fa7c5e8..9239d9e 100644
--- a/modules/speech/SpeechGrammarList.idl
+++ b/modules/speech/SpeechGrammarList.idl
@@ -29,6 +29,6 @@
 ] interface SpeechGrammarList {
     readonly attribute unsigned long length;
     getter SpeechGrammar item(unsigned long index);
-    [CallWith=ScriptExecutionContext] void addFromUri(DOMString src, optional float weight);
+    [CallWith=ExecutionContext] void addFromUri(DOMString src, optional float weight);
     void addFromString(DOMString string, optional float weight);
 };
diff --git a/modules/speech/SpeechRecognition.idl b/modules/speech/SpeechRecognition.idl
index 95eb5d5..b637e3a 100644
--- a/modules/speech/SpeechRecognition.idl
+++ b/modules/speech/SpeechRecognition.idl
@@ -27,7 +27,7 @@
     NoInterfaceObject,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface SpeechRecognition : EventTarget {
     attribute SpeechGrammarList grammars;
     attribute DOMString lang;
diff --git a/modules/speech/SpeechSynthesis.idl b/modules/speech/SpeechSynthesis.idl
index 4fa847a..a88e496 100644
--- a/modules/speech/SpeechSynthesis.idl
+++ b/modules/speech/SpeechSynthesis.idl
@@ -25,15 +25,17 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=SpeechSynthesis
-] interface SpeechSynthesis  {
+    RuntimeEnabled=SpeechSynthesis
+] interface SpeechSynthesis : EventTarget {
     readonly attribute boolean pending;
     readonly attribute boolean speaking;
     readonly attribute boolean paused;
 
-    void speak(SpeechSynthesisUtterance utterance);
+    [RaisesException] void speak(SpeechSynthesisUtterance utterance);
     void cancel();
     void pause();
     void resume();
     sequence<SpeechSynthesisVoice> getVoices();
+
+    attribute EventHandler onvoiceschanged;
 };
diff --git a/modules/speech/SpeechSynthesisEvent.idl b/modules/speech/SpeechSynthesisEvent.idl
index 39bb723..e438411 100644
--- a/modules/speech/SpeechSynthesisEvent.idl
+++ b/modules/speech/SpeechSynthesisEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=SpeechSynthesis
+    RuntimeEnabled=SpeechSynthesis
 ] interface SpeechSynthesisEvent : Event {
     readonly attribute unsigned long charIndex;
     readonly attribute float elapsedTime;
diff --git a/modules/speech/SpeechSynthesisUtterance.idl b/modules/speech/SpeechSynthesisUtterance.idl
index d32d7a8..fbedcdc 100644
--- a/modules/speech/SpeechSynthesisUtterance.idl
+++ b/modules/speech/SpeechSynthesisUtterance.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    EnabledAtRuntime=SpeechSynthesis,
-    ConstructorCallWith=ScriptExecutionContext,
+    RuntimeEnabled=SpeechSynthesis,
+    ConstructorCallWith=ExecutionContext,
     Constructor([Default=NullString] optional DOMString text)
 ] interface SpeechSynthesisUtterance : EventTarget {
     attribute DOMString text;
diff --git a/modules/speech/SpeechSynthesisVoice.idl b/modules/speech/SpeechSynthesisVoice.idl
index 9ca4754..a326a8c 100644
--- a/modules/speech/SpeechSynthesisVoice.idl
+++ b/modules/speech/SpeechSynthesisVoice.idl
@@ -25,7 +25,7 @@
 
 [
     NoInterfaceObject,
-    EnabledAtRuntime=SpeechSynthesis
+    RuntimeEnabled=SpeechSynthesis
 ] interface SpeechSynthesisVoice {
     readonly attribute DOMString voiceURI;
     readonly attribute DOMString name;
diff --git a/modules/speech/WindowSpeechSynthesis.idl b/modules/speech/WindowSpeechSynthesis.idl
index 7dd441e..833797b 100644
--- a/modules/speech/WindowSpeechSynthesis.idl
+++ b/modules/speech/WindowSpeechSynthesis.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=SpeechSynthesis,
+    RuntimeEnabled=SpeechSynthesis,
     ImplementedAs=DOMWindowSpeechSynthesis
 ] partial interface Window {
     readonly attribute SpeechSynthesis speechSynthesis;
diff --git a/core/dom/ErrorEvent.idl b/modules/speech/testing/InternalsSpeechSynthesis.idl
similarity index 73%
copy from core/dom/ErrorEvent.idl
copy to modules/speech/testing/InternalsSpeechSynthesis.idl
index 33f0239..34f2bc8 100644
--- a/core/dom/ErrorEvent.idl
+++ b/modules/speech/testing/InternalsSpeechSynthesis.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -28,13 +28,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+partial interface Internals {
+    void enableMockSpeechSynthesizer(Document document);
 };
-
diff --git a/modules/vibration/NavigatorVibration.idl b/modules/vibration/NavigatorVibration.idl
index 8519266..3307c6a 100644
--- a/modules/vibration/NavigatorVibration.idl
+++ b/modules/vibration/NavigatorVibration.idl
@@ -18,9 +18,11 @@
  */
 
 [
-    EnabledAtRuntime=Vibration
+    RuntimeEnabled=Vibration
 ] partial interface Navigator {
+    // FIXME: The contents of the pattern argument should be clamped.
+    // See https://code.google.com/p/chromium/issues/detail?id=310138
     boolean vibrate(sequence<unsigned long> pattern);
-    boolean vibrate(unsigned long time);
+    boolean vibrate([Clamp] unsigned long time);
 };
 
diff --git a/core/dom/ErrorEvent.idl b/modules/vibration/testing/InternalsVibration.idl
similarity index 74%
copy from core/dom/ErrorEvent.idl
copy to modules/vibration/testing/InternalsVibration.idl
index 33f0239..5da4484 100644
--- a/core/dom/ErrorEvent.idl
+++ b/modules/vibration/testing/InternalsVibration.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -28,13 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    ConstructorTemplate=Event
-] interface ErrorEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString message;
-    [InitializedByEventConstructor] readonly attribute DOMString filename;
-    [InitializedByEventConstructor] readonly attribute unsigned long lineno;
-    [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [InitializedByEventConstructor, Custom, Unserializable] readonly attribute any error;
+partial interface Internals {
+    boolean isVibrating(Document document);
+    sequence<unsigned long> pendingVibrationPattern(Document document);
 };
-
diff --git a/modules/webaudio/AnalyserNode.idl b/modules/webaudio/AnalyserNode.idl
index 27117e1..f179f5e 100644
--- a/modules/webaudio/AnalyserNode.idl
+++ b/modules/webaudio/AnalyserNode.idl
@@ -29,11 +29,11 @@
     readonly attribute unsigned long frequencyBinCount;
 
     // minDecibels / maxDecibels represent the range to scale the FFT analysis data for conversion to unsigned byte values.
-    attribute float minDecibels;
-    attribute float maxDecibels;
+    [SetterRaisesException] attribute float minDecibels;
+    [SetterRaisesException] attribute float maxDecibels;
 
     // A value from 0.0 -> 1.0 where 0.0 represents no time averaging with the last analysis frame.
-    attribute float smoothingTimeConstant;
+    [SetterRaisesException] attribute float smoothingTimeConstant;
 
     // Copies the current frequency data into the passed array.
     // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
diff --git a/modules/webaudio/AudioBufferSourceNode.idl b/modules/webaudio/AudioBufferSourceNode.idl
index 24c95eb..946b28b 100644
--- a/modules/webaudio/AudioBufferSourceNode.idl
+++ b/modules/webaudio/AudioBufferSourceNode.idl
@@ -26,7 +26,7 @@
 [
     Conditional=WEB_AUDIO
 ] interface AudioBufferSourceNode : AudioSourceNode {
-    [CustomSetter, SetterRaisesException] attribute AudioBuffer buffer;
+    [StrictTypeChecking, SetterRaisesException] attribute AudioBuffer buffer;
 
     const unsigned short UNSCHEDULED_STATE = 0;
     const unsigned short SCHEDULED_STATE = 1;
@@ -43,16 +43,14 @@
     attribute double loopStart;
     attribute double loopEnd;
 
-    [MeasureAs=WebAudioStart] void start(double when);
-    [MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(double when, double grainOffset);
-    [MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(double when, double grainOffset, double grainDuration);
-    void stop(double when);
+    [RaisesException, MeasureAs=WebAudioStart] void start(optional double when, optional double grainOffset, optional double grainDuration);
+    [RaisesException] void stop(optional double when);
 
     [DeprecateAs=WebAudioLooping, ImplementedAs=loop] attribute boolean looping; // This is an alias for the .loop attribute for backwards compatibility.
 
-    [MeasureAs=LegacyWebAudio] void noteOn(double when);
-    [MeasureAs=LegacyWebAudio] void noteGrainOn(double when, double grainOffset, double grainDuration);
-    void noteOff(double when);
+    [RaisesException, ImplementedAs=start, MeasureAs=LegacyWebAudio] void noteOn(double when);
+    [RaisesException, MeasureAs=LegacyWebAudio] void noteGrainOn(double when, double grainOffset, double grainDuration);
+    [RaisesException, ImplementedAs=stop] void noteOff(double when);
 
     attribute EventHandler onended;
 };
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
index d1100f5..f14e8b6 100644
--- a/modules/webaudio/AudioContext.idl
+++ b/modules/webaudio/AudioContext.idl
@@ -27,7 +27,10 @@
     NoInterfaceObject,
     Conditional=WEB_AUDIO,
     ActiveDOMObject,
-    CustomConstructor
+    Constructor,
+    Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
+    ConstructorCallWith=Document,
+    ConstructorRaisesException
 ] interface AudioContext : EventTarget {
     // All rendered audio ultimately connects to destination, which represents the audio hardware.
     readonly attribute AudioDestinationNode destination;
@@ -67,7 +70,7 @@
     ConvolverNode createConvolver();
     DynamicsCompressorNode createDynamicsCompressor();
     AnalyserNode createAnalyser();
-    [RaisesException] ScriptProcessorNode createScriptProcessor(unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels);
+    [RaisesException] ScriptProcessorNode createScriptProcessor(optional unsigned long bufferSize, optional unsigned long numberOfInputChannels, optional unsigned long numberOfOutputChannels);
     OscillatorNode createOscillator();
     [RaisesException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag);
 
diff --git a/modules/webaudio/OfflineAudioContext.idl b/modules/webaudio/OfflineAudioContext.idl
index 81c104e..84c50e3 100644
--- a/modules/webaudio/OfflineAudioContext.idl
+++ b/modules/webaudio/OfflineAudioContext.idl
@@ -27,7 +27,7 @@
     Conditional=WEB_AUDIO,
     Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
     ConstructorRaisesException,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface OfflineAudioContext : AudioContext {
 
 };
diff --git a/modules/webaudio/OscillatorNode.idl b/modules/webaudio/OscillatorNode.idl
index 949eac6..0b5962a 100644
--- a/modules/webaudio/OscillatorNode.idl
+++ b/modules/webaudio/OscillatorNode.idl
@@ -47,11 +47,11 @@
     readonly attribute AudioParam frequency; // in Hertz
     readonly attribute AudioParam detune; // in Cents
 
-    void start(double when);
-    void stop(double when);
+    [RaisesException] void start(optional double when);
+    [RaisesException] void stop(optional double when);
 
-    void noteOn(double when);
-    void noteOff(double when);
+    [RaisesException, ImplementedAs=start] void noteOn(double when);
+    [RaisesException, ImplementedAs=stop] void noteOff(double when);
 
     void setPeriodicWave(PeriodicWave periodicWave);
 
diff --git a/modules/webaudio/WaveShaperNode.idl b/modules/webaudio/WaveShaperNode.idl
index c4f4c81..a789722 100644
--- a/modules/webaudio/WaveShaperNode.idl
+++ b/modules/webaudio/WaveShaperNode.idl
@@ -22,15 +22,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-enum OverSampleType {
-    "none",
-    "2x",
-    "4x"
-};
-
 [
     Conditional=WEB_AUDIO
 ] interface WaveShaperNode : AudioNode {
     attribute Float32Array curve;
-    [SetterRaisesException] attribute OverSampleType oversample;
+    [SetterRaisesException] attribute DOMString oversample;
 };
diff --git a/modules/webdatabase/WindowWebDatabase.idl b/modules/webdatabase/WindowWebDatabase.idl
index 1459918..8502e37 100644
--- a/modules/webdatabase/WindowWebDatabase.idl
+++ b/modules/webdatabase/WindowWebDatabase.idl
@@ -27,6 +27,6 @@
 [
     ImplementedAs=DOMWindowWebDatabase
 ] partial interface Window {
-    [EnabledAtRuntime=Database, MeasureAs=OpenWebDatabase, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
+    [RuntimeEnabled=Database, MeasureAs=OpenWebDatabase, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
 };
 
diff --git a/modules/webdatabase/WorkerGlobalScopeWebDatabase.idl b/modules/webdatabase/WorkerGlobalScopeWebDatabase.idl
index 9631dd7..095c320 100644
--- a/modules/webdatabase/WorkerGlobalScopeWebDatabase.idl
+++ b/modules/webdatabase/WorkerGlobalScopeWebDatabase.idl
@@ -25,8 +25,8 @@
  */
 
 partial interface WorkerGlobalScope {
-    [EnabledAtRuntime=Database, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
+    [RuntimeEnabled=Database, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
 
-    [EnabledAtRuntime=Database, RaisesException] DatabaseSync openDatabaseSync(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
+    [RuntimeEnabled=Database, RaisesException] DatabaseSync openDatabaseSync(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
 };
 
diff --git a/modules/webmidi/MIDIConnectionEvent.idl b/modules/webmidi/MIDIConnectionEvent.idl
index 8731966..7ec690b 100644
--- a/modules/webmidi/MIDIConnectionEvent.idl
+++ b/modules/webmidi/MIDIConnectionEvent.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    EnabledAtRuntime=WebMIDI,
+    RuntimeEnabled=WebMIDI,
     ConstructorTemplate=Event
 ] interface MIDIConnectionEvent : Event {
     [InitializedByEventConstructor] readonly attribute MIDIPort port;
diff --git a/modules/webmidi/MIDIMessageEvent.idl b/modules/webmidi/MIDIMessageEvent.idl
index 1734b42..087079e 100644
--- a/modules/webmidi/MIDIMessageEvent.idl
+++ b/modules/webmidi/MIDIMessageEvent.idl
@@ -31,7 +31,7 @@
 // FIXME: The spec doesn't provide details about constructor, yet.
 // See also, https://github.com/WebAudio/web-midi-api/issues/1 .
 [
-    EnabledAtRuntime=WebMIDI,
+    RuntimeEnabled=WebMIDI,
     ConstructorTemplate=Event
 ] interface MIDIMessageEvent : Event {
     [InitializedByEventConstructor] readonly attribute double receivedTime;
diff --git a/modules/webmidi/MIDIOutput.idl b/modules/webmidi/MIDIOutput.idl
index 78dff22..06a75ce 100644
--- a/modules/webmidi/MIDIOutput.idl
+++ b/modules/webmidi/MIDIOutput.idl
@@ -30,7 +30,8 @@
 
 [
     CustomToV8,
-    NoInterfaceObject
+    NoInterfaceObject,
+    ActiveDOMObject
 ] interface MIDIOutput : MIDIPort {
     [RaisesException] void send(Uint8Array data, optional double timestamp);
     [RaisesException] void send(sequence<unsigned long> data, optional double timestamp);
diff --git a/modules/webmidi/NavigatorWebMIDI.idl b/modules/webmidi/NavigatorWebMIDI.idl
index a1e4ed0..e8ad27d 100644
--- a/modules/webmidi/NavigatorWebMIDI.idl
+++ b/modules/webmidi/NavigatorWebMIDI.idl
@@ -29,5 +29,5 @@
  */
 
 partial interface Navigator {
-    [EnabledAtRuntime=WebMIDI] MIDIAccessPromise requestMIDIAccess(optional Dictionary options);
+    [RuntimeEnabled=WebMIDI] MIDIAccessPromise requestMIDIAccess(optional Dictionary options);
 };
diff --git a/modules/websockets/WebSocket.idl b/modules/websockets/WebSocket.idl
index 9748b64..9430204 100644
--- a/modules/websockets/WebSocket.idl
+++ b/modules/websockets/WebSocket.idl
@@ -36,7 +36,7 @@
     Constructor(DOMString url, sequence<DOMString> protocols),
     Constructor(DOMString url, DOMString protocol),
     ConstructorRaisesException,
-    ConstructorCallWith=ScriptExecutionContext
+    ConstructorCallWith=ExecutionContext
 ] interface WebSocket : EventTarget {
     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
     readonly attribute DOMString url;
