IDL roll.

Review URL: https://codereview.chromium.org//15685002

git-svn-id: http://dart.googlecode.com/svn/third_party/WebCore@22989 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/core/README b/core/README
index e18cf12..3929bfb 100644
--- a/core/README
+++ b/core/README
@@ -6,4 +6,4 @@
 
 The current version corresponds to:
 URL: http://src.chromium.org/multivm/trunk/webkit
-Current revision: 1242
+Current revision: 1246
diff --git a/core/css/CSSRule.idl b/core/css/CSSRule.idl
index 8a5d615..593305c 100644
--- a/core/css/CSSRule.idl
+++ b/core/css/CSSRule.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToJSObject,
+    CustomToV8,
 
     DependentLifetime,
     SkipVTableValidation
@@ -40,9 +40,7 @@
 #if defined(ENABLE_CSS_DEVICE_ADAPTATION) && ENABLE_CSS_DEVICE_ADAPTATION
     const unsigned short WEBKIT_VIEWPORT_RULE = 15;
 #endif
-#if defined(ENABLE_CSS_REGIONS) && ENABLE_CSS_REGIONS
-    const unsigned short WEBKIT_REGION_RULE = 16;
-#endif
+    [EnabledAtRuntime=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/CSSRuleList.idl b/core/css/CSSRuleList.idl
index 5e6ef7a..0cbc656 100644
--- a/core/css/CSSRuleList.idl
+++ b/core/css/CSSRuleList.idl
@@ -25,11 +25,10 @@
 
 // Introduced in DOM Level 2:
 [
-    IndexedGetter,
     DependentLifetime,
     SkipVTableValidation
 ] interface CSSRuleList {
     readonly attribute unsigned long    length;
-    CSSRule           item([Default=Undefined] optional unsigned long index);
+    getter CSSRule           item([Default=Undefined] optional unsigned long index);
 };
 
diff --git a/core/css/CSSStyleDeclaration.idl b/core/css/CSSStyleDeclaration.idl
index 67da6d7..be7b708 100644
--- a/core/css/CSSStyleDeclaration.idl
+++ b/core/css/CSSStyleDeclaration.idl
@@ -22,7 +22,6 @@
 [
     CustomNamedSetter,
     CustomNamedGetter,
-    IndexedGetter,
     CustomEnumerateProperty,
     DependentLifetime,
     SkipVTableValidation
@@ -38,7 +37,7 @@
                                     [Default=Undefined] optional DOMString priority);
 
     readonly attribute unsigned long    length;
-    DOMString          item([Default=Undefined] optional unsigned long index);
+    getter DOMString          item([Default=Undefined] optional unsigned long index);
     readonly attribute CSSRule          parentRule;
 
     // Extensions
diff --git a/core/css/CSSValue.idl b/core/css/CSSValue.idl
index d668995..5440b74 100644
--- a/core/css/CSSValue.idl
+++ b/core/css/CSSValue.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     
     DependentLifetime,
     ImplementationLacksVTable
diff --git a/core/css/CSSValueList.idl b/core/css/CSSValueList.idl
index 9504c7b..ca51d6c 100644
--- a/core/css/CSSValueList.idl
+++ b/core/css/CSSValueList.idl
@@ -25,10 +25,9 @@
 
 // Introduced in DOM Level 2:
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface CSSValueList : CSSValue {
     readonly attribute unsigned long    length;
-    CSSValue           item([Default=Undefined] optional unsigned long index);
+    getter CSSValue           item([Default=Undefined] optional unsigned long index);
 };
 
diff --git a/core/css/MediaList.idl b/core/css/MediaList.idl
index 46ef79e..248a092 100644
--- a/core/css/MediaList.idl
+++ b/core/css/MediaList.idl
@@ -25,14 +25,13 @@
 
 // Introduced in DOM Level 2:
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface MediaList {
 
              [TreatNullAs=NullString, TreatReturnedNullStringAs=Null, SetterRaisesException] attribute DOMString mediaText;
     readonly attribute unsigned long length;
 
-    [TreatReturnedNullStringAs=Null] DOMString item([Default=Undefined] optional unsigned long index);
+    [TreatReturnedNullStringAs=Null] getter DOMString item([Default=Undefined] optional unsigned long index);
     [RaisesException] void deleteMedium([Default=Undefined] optional DOMString oldMedium);
     [RaisesException] void appendMedium([Default=Undefined] optional DOMString newMedium);
 
diff --git a/core/css/StyleSheet.idl b/core/css/StyleSheet.idl
index c078c08..842174a 100644
--- a/core/css/StyleSheet.idl
+++ b/core/css/StyleSheet.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToJSObject,
+    CustomToV8,
     GenerateIsReachable=ImplOwnerNodeRoot
 ] interface StyleSheet {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString        type;
diff --git a/core/css/StyleSheetList.idl b/core/css/StyleSheetList.idl
index c9c044e..fce41cf 100644
--- a/core/css/StyleSheetList.idl
+++ b/core/css/StyleSheetList.idl
@@ -21,11 +21,10 @@
 // Introduced in DOM Level 2:
 [
     GenerateIsReachable=ImplDocument,
-    IndexedGetter,
     CustomNamedGetter,
     ImplementationLacksVTable
 ] interface StyleSheetList {
     readonly attribute unsigned long    length;
-    StyleSheet         item([Default=Undefined] optional unsigned long index);
+    getter StyleSheet         item([Default=Undefined] optional unsigned long index);
 };
 
diff --git a/core/css/WebKitCSSFilterValue.idl b/core/css/WebKitCSSFilterValue.idl
index ce66c6d..2547661 100644
--- a/core/css/WebKitCSSFilterValue.idl
+++ b/core/css/WebKitCSSFilterValue.idl
@@ -24,7 +24,6 @@
  */
 
 [
-        IndexedGetter,
         DoNotCheckConstants,
     ImplementationLacksVTable
 ] interface WebKitCSSFilterValue : CSSValueList {
diff --git a/core/css/WebKitCSSKeyframesRule.idl b/core/css/WebKitCSSKeyframesRule.idl
index 19faaa5..826413f 100644
--- a/core/css/WebKitCSSKeyframesRule.idl
+++ b/core/css/WebKitCSSKeyframesRule.idl
@@ -28,7 +28,6 @@
 
 // Introduced in DOM Level ?:
 [
-    IndexedGetter
 ] interface WebKitCSSKeyframesRule : CSSRule {
 
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString name;
diff --git a/core/css/WebKitCSSRegionRule.idl b/core/css/WebKitCSSRegionRule.idl
index 05c3c92..7549b75 100644
--- a/core/css/WebKitCSSRegionRule.idl
+++ b/core/css/WebKitCSSRegionRule.idl
@@ -28,7 +28,6 @@
  */
 
 [
-    Conditional=CSS_REGIONS,
     EnabledAtRuntime=cssRegions,
 ] interface WebKitCSSRegionRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
diff --git a/core/css/WebKitCSSTransformValue.idl b/core/css/WebKitCSSTransformValue.idl
index 95dbb28..ddbb799 100644
--- a/core/css/WebKitCSSTransformValue.idl
+++ b/core/css/WebKitCSSTransformValue.idl
@@ -27,7 +27,6 @@
  */
 
 [
-        IndexedGetter,
         DoNotCheckConstants,
     ImplementationLacksVTable
 ] interface WebKitCSSTransformValue : CSSValueList {
diff --git a/core/dom/ClientRectList.idl b/core/dom/ClientRectList.idl
index de579f5..8017c6b 100644
--- a/core/dom/ClientRectList.idl
+++ b/core/dom/ClientRectList.idl
@@ -25,11 +25,10 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface ClientRectList {
     readonly attribute unsigned long length;
-    ClientRect item([IsIndex,Default=Undefined] optional unsigned long index);
+    getter ClientRect item([IsIndex,Default=Undefined] optional unsigned long index);
     // FIXME: Fix list behavior to allow custom exceptions to be thrown.
 };
 
diff --git a/core/dom/DOMNamedFlowCollection.idl b/core/dom/DOMNamedFlowCollection.idl
index 2e3c353..6225e98 100644
--- a/core/dom/DOMNamedFlowCollection.idl
+++ b/core/dom/DOMNamedFlowCollection.idl
@@ -28,13 +28,11 @@
  */
 
 [
-    Conditional=CSS_REGIONS,
     EnabledAtRuntime=cssRegions,
     InterfaceName=WebKitNamedFlowCollection,
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface DOMNamedFlowCollection {
     readonly attribute unsigned long length;
-    NamedFlow item(unsigned long index);
+    getter NamedFlow item(unsigned long index);
     getter NamedFlow namedItem(DOMString name);
 };
diff --git a/core/dom/DOMStringList.idl b/core/dom/DOMStringList.idl
index 6eccd57..5109dc6 100644
--- a/core/dom/DOMStringList.idl
+++ b/core/dom/DOMStringList.idl
@@ -24,11 +24,10 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface DOMStringList {
     readonly attribute unsigned long length;
-    [TreatReturnedNullStringAs=Null] DOMString item([Default=Undefined] optional unsigned long index);
+    [TreatReturnedNullStringAs=Null] getter DOMString item([Default=Undefined] optional unsigned long index);
     boolean contains([Default=Undefined] optional DOMString string);
 };
 
diff --git a/core/dom/DataTransferItemList.idl b/core/dom/DataTransferItemList.idl
index 9b63b49..0217784 100644
--- a/core/dom/DataTransferItemList.idl
+++ b/core/dom/DataTransferItemList.idl
@@ -29,12 +29,10 @@
  */
 
 [
-    IndexedGetter,
-    CustomDeleteProperty,
     ImplementationLacksVTable
 ] interface DataTransferItemList {
     readonly attribute long length;
-    DataTransferItem item([Default=Undefined] optional unsigned long index);
+    getter DataTransferItem item([Default=Undefined] optional unsigned long index);
 
     void clear();
     void add(File? file);
diff --git a/core/dom/Document.idl b/core/dom/Document.idl
index 2d621eb..985097c 100644
--- a/core/dom/Document.idl
+++ b/core/dom/Document.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    CustomToJSObject
+    CustomToV8
 ] interface Document : Node {
 
     // DOM Level 1 Core
@@ -27,24 +27,24 @@
     readonly attribute DOMImplementation implementation;
     readonly attribute Element documentElement;
 
-    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
+    [DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
     DocumentFragment   createDocumentFragment();
-    [ReturnNewObject, PerWorldBindings] Text createTextNode([Default=Undefined] optional DOMString data);
-    [ReturnNewObject] Comment createComment([Default=Undefined] optional DOMString data);
-    [ReturnNewObject, RaisesException] CDATASection createCDATASection([Default=Undefined] optional DOMString data);
-    [ReturnNewObject, RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
+    [PerWorldBindings] Text createTextNode([Default=Undefined] optional DOMString data);
+    Comment createComment([Default=Undefined] optional DOMString data);
+    [RaisesException] CDATASection createCDATASection([Default=Undefined] optional DOMString data);
+    [RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
                                                                                  [Default=Undefined] optional DOMString data);
-    [ReturnNewObject, RaisesException] Attr createAttribute([Default=Undefined] optional DOMString name);
-    [ReturnNewObject, RaisesException] EntityReference createEntityReference([Default=Undefined] optional DOMString name);
+    [RaisesException] Attr createAttribute([Default=Undefined] optional DOMString name);
+    [RaisesException] EntityReference createEntityReference([Default=Undefined] optional DOMString name);
     [PerWorldBindings] NodeList           getElementsByTagName([Default=Undefined] optional DOMString tagname);
 
     // Introduced in DOM Level 2:
 
-    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
+    [DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
                     optional boolean deep);
-    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+    [DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                             [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
-    [ReturnNewObject, RaisesException] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
+    [RaisesException] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                                                           [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
      NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                                    [Default=Undefined] optional DOMString localName);
@@ -184,7 +184,7 @@
     void webkitExitPointerLock();
     readonly attribute Element webkitPointerLockElement;
 
-    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] DOMNamedFlowCollection webkitGetNamedFlows();
+    [EnabledAtRuntime=cssRegions] DOMNamedFlowCollection webkitGetNamedFlows();
 
     [EnabledAtRuntime=fontLoadEvents] readonly attribute FontLoader fontloader;
 
@@ -264,7 +264,7 @@
     [NotEnumerable] attribute EventListener onwebkitpointerlockerror;
     [NotEnumerable, EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute EventListener onsecuritypolicyviolation;
 
-    [ReturnNewObject, EnabledAtRuntime=touch, RaisesException] Touch createTouch([Default=Undefined] optional DOMWindow window,
+    [EnabledAtRuntime=touch, RaisesException] Touch createTouch([Default=Undefined] optional DOMWindow window,
                                                      [Default=Undefined] optional EventTarget target,
                                                      [Default=Undefined] optional long identifier,
                                                      [Default=Undefined] optional long pageX,
@@ -275,11 +275,11 @@
                                                      [Default=Undefined] optional long webkitRadiusY,
                                                      [Default=Undefined] optional float webkitRotationAngle,
                                                      [Default=Undefined] optional float webkitForce);
-    [ReturnNewObject, EnabledAtRuntime=touch, Custom, RaisesException] TouchList createTouchList();
+    [EnabledAtRuntime=touch, Custom, RaisesException] TouchList createTouchList();
 
     [EnabledAtRuntime=customDOMElements, ImplementedAs=registerElement, CallWith=ScriptState, DeliverCustomElementCallbacks, RaisesException] CustomElementConstructor webkitRegister(DOMString name, optional Dictionary options);
-    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
-    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
+    [DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
+    [DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
                             [TreatNullAs=NullString] DOMString typeExtension);
 
     // Page visibility API.
diff --git a/core/dom/Element.idl b/core/dom/Element.idl
index 30c5155..76136bc 100644
--- a/core/dom/Element.idl
+++ b/core/dom/Element.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     SkipVTableValidation
 ] interface Element : Node {
 
@@ -131,8 +131,8 @@
     void webkitRequestPointerLock();
 
     // CSS Regions API
-    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions, PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
-    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] sequence<Range> webkitGetRegionFlowRanges();
+    [EnabledAtRuntime=cssRegions, PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
+    [EnabledAtRuntime=cssRegions] sequence<Range> webkitGetRegionFlowRanges();
 
     // Event handler DOM attributes
     [NotEnumerable, PerWorldBindings] attribute EventListener onabort;
diff --git a/core/dom/Event.idl b/core/dom/Event.idl
index 9fee227..82b8e28 100644
--- a/core/dom/Event.idl
+++ b/core/dom/Event.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToJSObject,
+    CustomToV8,
     ConstructorTemplate=Event,
     
     SkipVTableValidation
diff --git a/core/dom/EventTarget.idl b/core/dom/EventTarget.idl
index 161b03f..8647c27 100644
--- a/core/dom/EventTarget.idl
+++ b/core/dom/EventTarget.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    CustomToJSObject,
-    NoWrapperCache,
+    CustomToV8,
+    DoNotGenerateWrap,
     EventTarget
 ] interface EventTarget {
     void addEventListener(DOMString type, 
diff --git a/core/dom/NamedFlow.idl b/core/dom/NamedFlow.idl
index 147f089..b7e09e5 100644
--- a/core/dom/NamedFlow.idl
+++ b/core/dom/NamedFlow.idl
@@ -28,6 +28,7 @@
  */
 
 [
+    EnabledAtRuntime=cssRegions,
     EventTarget,
     InterfaceName=WebKitNamedFlow,
     GenerateIsReachable=ImplOwnerNodeRoot
diff --git a/core/dom/NamedNodeMap.idl b/core/dom/NamedNodeMap.idl
index 8752794..17e7736 100644
--- a/core/dom/NamedNodeMap.idl
+++ b/core/dom/NamedNodeMap.idl
@@ -20,7 +20,6 @@
 
 [
     GenerateIsReachable=ImplElementRoot,
-    IndexedGetter,
     CustomNamedGetter,
     ImplementationLacksVTable
 ] interface NamedNodeMap {
@@ -31,7 +30,7 @@
 
     [RaisesException] Node removeNamedItem([Default=Undefined] optional DOMString name);
 
-    Node item([Default=Undefined] optional unsigned long index);
+    getter Node item([Default=Undefined] optional unsigned long index);
     
     readonly attribute unsigned long length;
 
diff --git a/core/dom/Node.idl b/core/dom/Node.idl
index a693fde..28d760e 100644
--- a/core/dom/Node.idl
+++ b/core/dom/Node.idl
@@ -20,7 +20,7 @@
 
 // FIXME: Node should inherit EventTarget.
 [
-    CustomToJSObject,
+    CustomToV8,
     EventTarget,
     DependentLifetime
 ] interface Node {
diff --git a/core/dom/NodeList.idl b/core/dom/NodeList.idl
index 4a6394d..02bf971 100644
--- a/core/dom/NodeList.idl
+++ b/core/dom/NodeList.idl
@@ -20,13 +20,12 @@
 
 [
     CustomIsReachable,
-    IndexedGetter,
     CustomNamedGetter,
     DependentLifetime,
     SkipVTableValidation
 ] interface NodeList {
 
-    Node item([IsIndex,Default=Undefined] optional unsigned long index);
+    getter Node item([IsIndex,Default=Undefined] optional unsigned long index);
 
     readonly attribute unsigned long length;
 
diff --git a/core/dom/RangeException.idl b/core/dom/RangeException.idl
deleted file mode 100644
index df58c81..0000000
--- a/core/dom/RangeException.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-[
-    DoNotCheckConstants,
-    ImplementationLacksVTable
-] exception RangeException {
-
-    readonly attribute unsigned short   code;
-    readonly attribute DOMString        name;
-    readonly attribute DOMString        message;
-
-    [NotEnumerable] DOMString toString();
-
-    // DOM Level 2
-
-    const unsigned short BAD_BOUNDARYPOINTS_ERR = 1;
-    const unsigned short INVALID_NODE_TYPE_ERR = 2;
-};
-
diff --git a/core/dom/Text.idl b/core/dom/Text.idl
index f420593..68e1b8d 100644
--- a/core/dom/Text.idl
+++ b/core/dom/Text.idl
@@ -17,7 +17,7 @@
  * Boston, MA 02110-1301, USA.
  */
 [
-    CustomToJSObject,
+    CustomToV8,
     SkipVTableValidation,
 ] interface Text : CharacterData {
 
diff --git a/core/dom/TouchList.idl b/core/dom/TouchList.idl
index acbc149..0034249 100644
--- a/core/dom/TouchList.idl
+++ b/core/dom/TouchList.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface TouchList {
     readonly attribute unsigned long length;
 
-    Touch item(unsigned long index);
+    getter Touch item(unsigned long index);
 };
diff --git a/core/fileapi/Blob.idl b/core/fileapi/Blob.idl
index d8ef965..05a9973 100644
--- a/core/fileapi/Blob.idl
+++ b/core/fileapi/Blob.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     CustomConstructor,
     CustomConstructor(sequence<any> blobParts, optional BlobPropertyBag options)
 ] interface Blob {
diff --git a/core/fileapi/FileList.idl b/core/fileapi/FileList.idl
index 9086f1c..4ef8bf6 100644
--- a/core/fileapi/FileList.idl
+++ b/core/fileapi/FileList.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface FileList {
     readonly attribute unsigned long length;
-    File item(unsigned long index);
+    getter File item(unsigned long index);
 };
 
diff --git a/core/html/DOMSettableTokenList.idl b/core/html/DOMSettableTokenList.idl
index 5bde9cd..ab242f7 100644
--- a/core/html/DOMSettableTokenList.idl
+++ b/core/html/DOMSettableTokenList.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    IndexedGetter,
     SkipVTableValidation
 ] interface DOMSettableTokenList : DOMTokenList {
     attribute DOMString value;
diff --git a/core/html/DOMTokenList.idl b/core/html/DOMTokenList.idl
index 2fb088d..64bc636 100644
--- a/core/html/DOMTokenList.idl
+++ b/core/html/DOMTokenList.idl
@@ -24,11 +24,10 @@
 
 [
     GenerateIsReachable=ImplElementRoot,
-    IndexedGetter,
     SkipVTableValidation
 ] interface DOMTokenList {
     readonly attribute unsigned long length;
-    [TreatReturnedNullStringAs=Null] DOMString item(unsigned long index);
+    [TreatReturnedNullStringAs=Null] getter DOMString item(unsigned long index);
     [RaisesException] boolean contains(DOMString token);
     [RaisesException] void add(DOMString... tokens);
     [RaisesException] void remove(DOMString... tokens);
diff --git a/core/html/DOMURL.idl b/core/html/DOMURL.idl
index 65c1895..c9fdd0a 100644
--- a/core/html/DOMURL.idl
+++ b/core/html/DOMURL.idl
@@ -30,9 +30,7 @@
     ImplementationLacksVTable
 ] interface DOMURL {
     [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
-#if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
     [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
-#endif
     [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
     [CallWith=ScriptExecutionContext] static void revokeObjectURL(DOMString url);
 };
diff --git a/core/html/HTMLAllCollection.idl b/core/html/HTMLAllCollection.idl
index 3fcf555..f421caf 100644
--- a/core/html/HTMLAllCollection.idl
+++ b/core/html/HTMLAllCollection.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    IndexedGetter,
     CustomNamedGetter,
     CustomCall,
     MasqueradesAsUndefined,
@@ -32,7 +31,7 @@
     DependentLifetime,
 ] interface HTMLAllCollection {
     readonly attribute unsigned long length;
-    [Custom] Node item([Default=Undefined] optional unsigned long index);
+    [Custom] getter Node item([Default=Undefined] optional unsigned long index);
     [Custom] Node namedItem(DOMString name);
     // FIXME: This should return an HTMLAllCollection.
     NodeList tags(DOMString name);
diff --git a/core/html/HTMLAppletElement.idl b/core/html/HTMLAppletElement.idl
index c42e5e9..e5f8707 100644
--- a/core/html/HTMLAppletElement.idl
+++ b/core/html/HTMLAppletElement.idl
@@ -19,8 +19,10 @@
  */
 
 [
+    CustomNamedGetter,
     CustomNamedSetter,
     CustomIndexedGetter,
+    CustomIndexedSetter,
     CustomCall
 ] interface HTMLAppletElement : HTMLElement {
     [Reflect] attribute DOMString align;
diff --git a/core/html/HTMLCollection.idl b/core/html/HTMLCollection.idl
index 4d33c09..ee1d158 100644
--- a/core/html/HTMLCollection.idl
+++ b/core/html/HTMLCollection.idl
@@ -19,15 +19,14 @@
  */
 
 [
-    IndexedGetter,
-    CustomToJSObject,
+    CustomToV8,
     GenerateIsReachable=ImplOwnerNodeRoot,
     DependentLifetime,
     
     SkipVTableValidation
 ] interface HTMLCollection {
     readonly attribute unsigned long length;
-    Node item([Default=Undefined] optional unsigned long index);
+    getter Node item([Default=Undefined] optional unsigned long index);
     getter Node namedItem([Default=Undefined] optional DOMString name);
 };
 
diff --git a/core/html/HTMLDocument.idl b/core/html/HTMLDocument.idl
index ec69153..91f2905 100644
--- a/core/html/HTMLDocument.idl
+++ b/core/html/HTMLDocument.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomNamedGetter,
-    CustomToJSObject,
+    CustomToV8,
     SkipVTableValidation
 ] interface HTMLDocument : Document {
     [Custom] void open();
diff --git a/core/html/HTMLElement.idl b/core/html/HTMLElement.idl
index 4b1cfa7..78e4a5e 100644
--- a/core/html/HTMLElement.idl
+++ b/core/html/HTMLElement.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     SkipVTableValidation
 ] interface HTMLElement : Element {
              // iht.com relies on id returning the empty string when no id is present. 
diff --git a/core/html/HTMLEmbedElement.idl b/core/html/HTMLEmbedElement.idl
index 7f74cb3..b702089 100644
--- a/core/html/HTMLEmbedElement.idl
+++ b/core/html/HTMLEmbedElement.idl
@@ -19,9 +19,11 @@
  */
 
 [
+    CustomNamedGetter,
     CustomNamedSetter,
     CustomCall,
     CustomIndexedGetter,
+    CustomIndexedSetter,
     SkipVTableValidation
 ] interface HTMLEmbedElement : HTMLElement {
 [Reflect] attribute DOMString align;
diff --git a/core/html/HTMLFormControlsCollection.idl b/core/html/HTMLFormControlsCollection.idl
index ba47fd3..e590abf 100644
--- a/core/html/HTMLFormControlsCollection.idl
+++ b/core/html/HTMLFormControlsCollection.idl
@@ -19,7 +19,6 @@
  */
 
 [
-    IndexedGetter,
     CustomNamedGetter,
     GenerateIsReachable=ImplOwnerNodeRoot,
     DependentLifetime,
diff --git a/core/html/HTMLObjectElement.idl b/core/html/HTMLObjectElement.idl
index c98914c..6082baa 100644
--- a/core/html/HTMLObjectElement.idl
+++ b/core/html/HTMLObjectElement.idl
@@ -19,8 +19,10 @@
  */
 
 [
+    CustomNamedGetter,
     CustomNamedSetter,
     CustomIndexedGetter,
+    CustomIndexedSetter,
     CustomCall
 ] interface HTMLObjectElement : HTMLElement {
     readonly attribute HTMLFormElement form;
diff --git a/core/html/HTMLSelectElement.idl b/core/html/HTMLSelectElement.idl
index 922cdc6..5fd7bb5 100644
--- a/core/html/HTMLSelectElement.idl
+++ b/core/html/HTMLSelectElement.idl
@@ -20,7 +20,6 @@
 
 [
     CustomIndexedSetter,
-    CustomIndexedGetter,
     SkipVTableValidation
 ] interface HTMLSelectElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
@@ -36,7 +35,7 @@
     readonly attribute HTMLOptionsCollection options;
     [SetterRaisesException] attribute unsigned long length;
 
-    Node item([IsIndex,Default=Undefined] optional unsigned long index);
+    getter Node item([IsIndex,Default=Undefined] optional unsigned long index);
     Node namedItem([Default=Undefined] optional DOMString name);
      [RaisesException] void add([Default=Undefined] optional HTMLElement element,
                             [Default=Undefined] optional HTMLElement before);
diff --git a/core/html/ImageData.idl b/core/html/ImageData.idl
index db2b4a7..180eb78 100644
--- a/core/html/ImageData.idl
+++ b/core/html/ImageData.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     ImplementationLacksVTable
 ] interface ImageData {
     readonly attribute long width;
diff --git a/core/html/RadioNodeList.idl b/core/html/RadioNodeList.idl
index cfb85c2..d3132f0 100644
--- a/core/html/RadioNodeList.idl
+++ b/core/html/RadioNodeList.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    IndexedGetter,
 ] interface RadioNodeList : NodeList {
     attribute DOMString value;
 };
diff --git a/core/html/canvas/ArrayBufferView.idl b/core/html/canvas/ArrayBufferView.idl
index 552927e..1ed4f9f 100644
--- a/core/html/canvas/ArrayBufferView.idl
+++ b/core/html/canvas/ArrayBufferView.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    CustomToJSObject,
+    CustomToV8,
     ImplementationNamespace=WTF
 ] interface ArrayBufferView {
     readonly attribute ArrayBuffer buffer;
diff --git a/core/html/canvas/CanvasRenderingContext.idl b/core/html/canvas/CanvasRenderingContext.idl
index a340905..819ae77 100644
--- a/core/html/canvas/CanvasRenderingContext.idl
+++ b/core/html/canvas/CanvasRenderingContext.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    CustomToJSObject
+    CustomToV8
 ] interface CanvasRenderingContext {
     readonly attribute HTMLCanvasElement canvas;
 };
diff --git a/core/html/canvas/DataView.idl b/core/html/canvas/DataView.idl
index 7224fc5..1636c4c 100644
--- a/core/html/canvas/DataView.idl
+++ b/core/html/canvas/DataView.idl
@@ -25,7 +25,7 @@
 
 [
     CustomConstructor(ArrayBuffer buffer, optional unsigned long byteOffset, optional unsigned long byteLength),
-    CustomToJSObject
+    CustomToV8
 ] interface DataView : ArrayBufferView {
     // All these methods raise an exception if they would read or write beyond the end of the view.
 
diff --git a/core/html/canvas/EXTTextureFilterAnisotropic.idl b/core/html/canvas/EXTTextureFilterAnisotropic.idl
index d8f0fa7..d454a9b 100644
--- a/core/html/canvas/EXTTextureFilterAnisotropic.idl
+++ b/core/html/canvas/EXTTextureFilterAnisotropic.idl
@@ -27,6 +27,6 @@
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface EXTTextureFilterAnisotropic {
-    const unsigned int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
-    const unsigned int MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
+    const unsigned long TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
+    const unsigned long MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF;
 };
diff --git a/core/html/canvas/Float32Array.idl b/core/html/canvas/Float32Array.idl
index b438e24..306b7e3 100644
--- a/core/html/canvas/Float32Array.idl
+++ b/core/html/canvas/Float32Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=float,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Float64Array.idl b/core/html/canvas/Float64Array.idl
index e6076b5..51870fa 100644
--- a/core/html/canvas/Float64Array.idl
+++ b/core/html/canvas/Float64Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=double,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Int16Array.idl b/core/html/canvas/Int16Array.idl
index a7740ec..ffa5682 100644
--- a/core/html/canvas/Int16Array.idl
+++ b/core/html/canvas/Int16Array.idl
@@ -25,7 +25,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=short,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Int32Array.idl b/core/html/canvas/Int32Array.idl
index c893f8f..c46242b 100644
--- a/core/html/canvas/Int32Array.idl
+++ b/core/html/canvas/Int32Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=int,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Int8Array.idl b/core/html/canvas/Int8Array.idl
index f0bd812..5cb46ab 100644
--- a/core/html/canvas/Int8Array.idl
+++ b/core/html/canvas/Int8Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=signed char,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/OESStandardDerivatives.idl b/core/html/canvas/OESStandardDerivatives.idl
index 2ffba96..6dbfd5d 100644
--- a/core/html/canvas/OESStandardDerivatives.idl
+++ b/core/html/canvas/OESStandardDerivatives.idl
@@ -27,5 +27,5 @@
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface OESStandardDerivatives {
-    const unsigned int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
+    const unsigned long FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
 };
diff --git a/core/html/canvas/OESVertexArrayObject.idl b/core/html/canvas/OESVertexArrayObject.idl
index 29b1972..5de854f 100644
--- a/core/html/canvas/OESVertexArrayObject.idl
+++ b/core/html/canvas/OESVertexArrayObject.idl
@@ -27,7 +27,7 @@
     Conditional=WEBGL, 
     DoNotCheckConstants
 ] interface OESVertexArrayObject {
-    const unsigned int VERTEX_ARRAY_BINDING_OES = 0x85B5;
+    const unsigned long VERTEX_ARRAY_BINDING_OES = 0x85B5;
     
     [StrictTypeChecking] WebGLVertexArrayObjectOES createVertexArrayOES();
     [StrictTypeChecking] void         deleteVertexArrayOES([Default=Undefined] optional WebGLVertexArrayObjectOES arrayObject);
diff --git a/core/html/canvas/Uint16Array.idl b/core/html/canvas/Uint16Array.idl
index ca376a1..4268ef6 100644
--- a/core/html/canvas/Uint16Array.idl
+++ b/core/html/canvas/Uint16Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=unsigned short,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Uint32Array.idl b/core/html/canvas/Uint32Array.idl
index cd5bf20..76936df 100644
--- a/core/html/canvas/Uint32Array.idl
+++ b/core/html/canvas/Uint32Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=unsigned int,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Uint8Array.idl b/core/html/canvas/Uint8Array.idl
index a1c3f1b..b6e3917 100644
--- a/core/html/canvas/Uint8Array.idl
+++ b/core/html/canvas/Uint8Array.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=unsigned char,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/Uint8ClampedArray.idl b/core/html/canvas/Uint8ClampedArray.idl
index 230e33f..cd15b26 100644
--- a/core/html/canvas/Uint8ClampedArray.idl
+++ b/core/html/canvas/Uint8ClampedArray.idl
@@ -26,7 +26,7 @@
 
 [
     ConstructorTemplate=TypedArray,
-    CustomToJSObject,
+    CustomToV8,
     DoNotCheckConstants,
     TypedArray=unsigned char,
     ImplementationNamespace=WTF
diff --git a/core/html/canvas/WebGLCompressedTextureATC.idl b/core/html/canvas/WebGLCompressedTextureATC.idl
index 2c7fac0..10db90e 100644
--- a/core/html/canvas/WebGLCompressedTextureATC.idl
+++ b/core/html/canvas/WebGLCompressedTextureATC.idl
@@ -28,7 +28,7 @@
     DoNotCheckConstants
 ] interface WebGLCompressedTextureATC {
     /* Compressed Texture Formats */
-    const unsigned int COMPRESSED_RGB_ATC_WEBGL                     = 0x8C92;
-    const unsigned int COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL     = 0x8C93;
-    const unsigned int COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE;
+    const unsigned long COMPRESSED_RGB_ATC_WEBGL                     = 0x8C92;
+    const unsigned long COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL     = 0x8C93;
+    const unsigned long COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 0x87EE;
 };
diff --git a/core/html/canvas/WebGLCompressedTexturePVRTC.idl b/core/html/canvas/WebGLCompressedTexturePVRTC.idl
index f30c349..36e73dc 100644
--- a/core/html/canvas/WebGLCompressedTexturePVRTC.idl
+++ b/core/html/canvas/WebGLCompressedTexturePVRTC.idl
@@ -28,8 +28,8 @@
     DoNotCheckConstants
 ] interface WebGLCompressedTexturePVRTC {
     /* Compressed Texture Formats */
-    const unsigned int COMPRESSED_RGB_PVRTC_4BPPV1_IMG  = 0x8C00;
-    const unsigned int COMPRESSED_RGB_PVRTC_2BPPV1_IMG  = 0x8C01;
-    const unsigned int COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
-    const unsigned int COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
+    const unsigned long COMPRESSED_RGB_PVRTC_4BPPV1_IMG  = 0x8C00;
+    const unsigned long COMPRESSED_RGB_PVRTC_2BPPV1_IMG  = 0x8C01;
+    const unsigned long COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02;
+    const unsigned long COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03;
 };
diff --git a/core/html/canvas/WebGLDebugRendererInfo.idl b/core/html/canvas/WebGLDebugRendererInfo.idl
index f0687e5..bd37ddb 100644
--- a/core/html/canvas/WebGLDebugRendererInfo.idl
+++ b/core/html/canvas/WebGLDebugRendererInfo.idl
@@ -27,6 +27,6 @@
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLDebugRendererInfo {
-    const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
-    const unsigned int UNMASKED_RENDERER_WEBGL = 0x9246;
+    const unsigned long UNMASKED_VENDOR_WEBGL = 0x9245;
+    const unsigned long UNMASKED_RENDERER_WEBGL = 0x9246;
 };
diff --git a/core/html/canvas/WebGLDepthTexture.idl b/core/html/canvas/WebGLDepthTexture.idl
index 1aaf21f..84f3acd 100644
--- a/core/html/canvas/WebGLDepthTexture.idl
+++ b/core/html/canvas/WebGLDepthTexture.idl
@@ -27,5 +27,5 @@
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLDepthTexture {
-    const unsigned int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
+    const unsigned long UNSIGNED_INT_24_8_WEBGL = 0x84FA;
 };
diff --git a/core/html/track/TextTrackCueList.idl b/core/html/track/TextTrackCueList.idl
index 1c5b63f..a77ede9 100644
--- a/core/html/track/TextTrackCueList.idl
+++ b/core/html/track/TextTrackCueList.idl
@@ -25,11 +25,10 @@
 
 [
     EnabledAtRuntime=webkitVideoTrack,
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface TextTrackCueList {
     readonly attribute unsigned long length;
-    TextTrackCue item(unsigned long index);
+    getter TextTrackCue item(unsigned long index);
     TextTrackCue getCueById(DOMString id);
 };
 
diff --git a/core/html/track/TextTrackList.idl b/core/html/track/TextTrackList.idl
index b837eaf..7fcbacd 100644
--- a/core/html/track/TextTrackList.idl
+++ b/core/html/track/TextTrackList.idl
@@ -25,12 +25,11 @@
 
 [
     EnabledAtRuntime=webkitVideoTrack,
-    IndexedGetter,
     EventTarget,
     GenerateIsReachable=ImplOwnerRoot
 ] interface TextTrackList {
     readonly attribute unsigned long length;
-    TextTrack item(unsigned long index);
+    getter TextTrack item(unsigned long index);
 
     attribute EventListener onaddtrack;
 
diff --git a/core/html/track/TextTrackRegionList.idl b/core/html/track/TextTrackRegionList.idl
index 49c6772..c6274cb 100644
--- a/core/html/track/TextTrackRegionList.idl
+++ b/core/html/track/TextTrackRegionList.idl
@@ -26,11 +26,10 @@
 [
     Conditional=WEBVTT_REGIONS,
     EnabledAtRuntime=webkitVideoTrack,
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface TextTrackRegionList {
     readonly attribute unsigned long length;
-    TextTrackRegion item(unsigned long index);
+    getter TextTrackRegion item(unsigned long index);
     TextTrackRegion getRegionById(DOMString id);
 };
 
diff --git a/core/inspector/InjectedScriptHost.idl b/core/inspector/InjectedScriptHost.idl
index 468724f..b285d67 100644
--- a/core/inspector/InjectedScriptHost.idl
+++ b/core/inspector/InjectedScriptHost.idl
@@ -37,7 +37,7 @@
 
     void copyText(DOMString text);
     [Custom] void inspect(any objectId, any hints);
-    [Custom] any inspectedObject(int num);
+    [Custom] any inspectedObject(long num);
     [Custom] any internalConstructorName(any object);
     [Custom] boolean isHTMLAllCollection(any object);
     [Custom] DOMString type(any object);
diff --git a/core/inspector/JavaScriptCallFrame.idl b/core/inspector/JavaScriptCallFrame.idl
index 0b8b8ed..ebd87d4 100644
--- a/core/inspector/JavaScriptCallFrame.idl
+++ b/core/inspector/JavaScriptCallFrame.idl
@@ -39,14 +39,14 @@
     [Custom] any restart();
     
     // Only declarative scope (local, with and catch) is accepted. Returns undefined. 
-    [Custom] any setVariableValue(int scopeIndex, DOMString variableName, any newValue);
+    [Custom] any setVariableValue(long scopeIndex, DOMString variableName, any newValue);
 
     readonly attribute JavaScriptCallFrame caller;
     readonly attribute long sourceID;
     readonly attribute long line;
     readonly attribute long column;
     [CustomGetter] readonly attribute Array scopeChain;
-    [Custom] unsigned short scopeType(int scopeIndex);
+    [Custom] unsigned short scopeType(long scopeIndex);
     [CustomGetter] readonly attribute Object thisObject;
     readonly attribute DOMString functionName;
     [CustomGetter] readonly attribute DOMString type;
diff --git a/core/page/DOMWindow.idl b/core/page/DOMWindow.idl
index 633839c..f68dd94 100644
--- a/core/page/DOMWindow.idl
+++ b/core/page/DOMWindow.idl
@@ -26,10 +26,10 @@
 
 [
     CheckSecurity,
-    CustomGetOwnPropertySlot,
     EventTarget,
-    CustomToJSObject,
-    NoWrapperCache,
+    CustomToV8,
+    CustomNamedGetter,
+    DoNotGenerateWrap,
     CustomIndexedGetter,
     InterfaceName=Window
 ] interface DOMWindow {
@@ -527,7 +527,7 @@
 
     attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
     attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
-    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
+    [EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
 
     attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
 
@@ -544,7 +544,6 @@
 
     attribute NodeFilterConstructor NodeFilter;
     attribute RangeConstructor Range;
-    attribute RangeExceptionConstructor RangeException;
 
     attribute EventSourceConstructor EventSource; // Usable with new the operator
 
@@ -555,13 +554,10 @@
     attribute XMLSerializerConstructor XMLSerializer;
     attribute XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
     attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
-    attribute XMLHttpRequestExceptionConstructor XMLHttpRequestException;
     attribute XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
 
-#if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
     attribute MessagePortConstructor MessagePort;
     attribute MessageChannelConstructor MessageChannel; // Usable with the new operator
-#endif
 
     attribute DOMPluginConstructor Plugin;
     attribute DOMPluginArrayConstructor PluginArray;
diff --git a/core/page/PerformanceEntry.idl b/core/page/PerformanceEntry.idl
index 045cab3..94638f8 100644
--- a/core/page/PerformanceEntry.idl
+++ b/core/page/PerformanceEntry.idl
@@ -30,7 +30,7 @@
 
 // See: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PerformanceTimeline/Overview.html
 [
-    CustomToJSObject,
+    CustomToV8,
 ] interface PerformanceEntry {
     readonly attribute DOMString name;
     readonly attribute DOMString entryType;
diff --git a/core/page/SpeechInputResultList.idl b/core/page/SpeechInputResultList.idl
index c5b32ac..0e2bf56 100644
--- a/core/page/SpeechInputResultList.idl
+++ b/core/page/SpeechInputResultList.idl
@@ -24,11 +24,10 @@
  */
 
 [
-    IndexedGetter,
     Conditional=INPUT_SPEECH,
     ImplementationLacksVTable
 ] interface SpeechInputResultList {
     readonly attribute unsigned long length;
-    SpeechInputResult item([IsIndex] unsigned long index);
+    getter SpeechInputResult item([IsIndex] unsigned long index);
 };
 
diff --git a/core/plugins/DOMMimeTypeArray.idl b/core/plugins/DOMMimeTypeArray.idl
index cefde58..fd5fe9e 100644
--- a/core/plugins/DOMMimeTypeArray.idl
+++ b/core/plugins/DOMMimeTypeArray.idl
@@ -19,11 +19,10 @@
 */
 
 [
-    IndexedGetter,
     InterfaceName=MimeTypeArray
 ] interface DOMMimeTypeArray {
     readonly attribute unsigned long length;
-    DOMMimeType item([Default=Undefined] optional unsigned long index);
+    getter DOMMimeType item([Default=Undefined] optional unsigned long index);
     getter DOMMimeType namedItem([Default=Undefined] optional DOMString name);
 };
 
diff --git a/core/plugins/DOMPlugin.idl b/core/plugins/DOMPlugin.idl
index f4ac45c..08e4a84 100644
--- a/core/plugins/DOMPlugin.idl
+++ b/core/plugins/DOMPlugin.idl
@@ -19,14 +19,13 @@
 */
 
 [
-    IndexedGetter,
     InterfaceName=Plugin
 ] interface DOMPlugin {
     readonly attribute DOMString name;
     readonly attribute DOMString filename;
     readonly attribute DOMString description;
     readonly attribute unsigned long length;
-    DOMMimeType item([Default=Undefined] optional unsigned long index);
+    getter DOMMimeType item([Default=Undefined] optional unsigned long index);
     getter DOMMimeType namedItem([Default=Undefined] optional DOMString name);
 };
 
diff --git a/core/plugins/DOMPluginArray.idl b/core/plugins/DOMPluginArray.idl
index 08b9cab..52430aa 100644
--- a/core/plugins/DOMPluginArray.idl
+++ b/core/plugins/DOMPluginArray.idl
@@ -19,11 +19,10 @@
 */
 
 [
-    IndexedGetter,
     InterfaceName=PluginArray
 ] interface DOMPluginArray {
     readonly attribute unsigned long length;
-    DOMPlugin item([Default=Undefined] optional unsigned long index);
+    getter DOMPlugin item([Default=Undefined] optional unsigned long index);
     getter DOMPlugin namedItem([Default=Undefined] optional DOMString name);
     void refresh([Default=Undefined] optional boolean reload);
 };
diff --git a/core/scripts/in_generator.py b/core/scripts/in_generator.py
index 1ee994a..47b85f5 100644
--- a/core/scripts/in_generator.py
+++ b/core/scripts/in_generator.py
@@ -49,6 +49,11 @@
     def generate_implementation(self):
         raise NotImplementedError
 
+    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
@@ -65,12 +70,18 @@
             file_to_write.write(contents)
 
     def write_header(self, output_dir):
-        header_path = os.path.join(output_dir, self.class_name + ".h")
-        self._forcibly_create_text_file_at_path_with_contents(header_path, self.generate_header())
+        contents = self.generate_header()
+        if not contents:
+            return
+        path = os.path.join(output_dir, self.class_name + ".h")
+        self._forcibly_create_text_file_at_path_with_contents(path, contents)
 
     def write_implmentation(self, output_dir):
-        implmentation_path = os.path.join(output_dir, self.class_name + ".cpp")
-        self._forcibly_create_text_file_at_path_with_contents(implmentation_path, self.generate_implementation())
+        contents = self.generate_implementation()
+        if not contents:
+            return
+        path = os.path.join(output_dir, self.class_name + ".cpp")
+        self._forcibly_create_text_file_at_path_with_contents(path, contents)
 
 
 class Maker(object):
diff --git a/core/scripts/make_event_factory.py b/core/scripts/make_event_factory.py
new file mode 100644
index 0000000..c5a5f0b
--- /dev/null
+++ b/core/scripts/make_event_factory.py
@@ -0,0 +1,101 @@
+#!/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 in_generator
+import license
+
+
+IMPLEMENTATION_TEMPLATE = """%(license)s
+#include "config.h"
+#include "%(namespace)sFactory.h"
+
+#include "%(namespace)sHeaders.h"
+#include "RuntimeEnabledFeatures.h"
+
+namespace WebCore {
+
+PassRefPtr<%(namespace)s> %(namespace)sFactory::create(const String& type)
+{
+%(factory_implementation)s
+    return 0;
+}
+
+} // namespace WebCore
+"""
+
+
+class EventFactoryWriter(in_generator.Writer):
+    defaults = {
+        'interfaceName' : None,
+        'conditional' : None,
+        'runtimeConditional': None,
+    }
+    default_parameters = {
+        'namespace': '',
+    }
+    class_name = 'EventFactory'
+
+    def _namespace(self):
+        return self.in_file.parameters['namespace']
+
+    def _events(self):
+        return self.in_file.name_dictionaries
+
+    def _factory_implementation(self, event):
+        runtime_condition = ''
+        if event['runtimeConditional']:
+            runtime_condition = ' && RuntimeEnabledFeatures::' + event['runtimeConditional'] + '()'
+        name = os.path.basename(event['name'])
+        interface_name = event['interfaceName'] if event['interfaceName'] else name
+        implementation = """    if (type == "%(name)s"%(runtime_condition)s)
+        return %(interface_name)s::create();""" % {
+            'name': name,
+            'runtime_condition': runtime_condition,
+            'interface_name': interface_name,
+        }
+        return self.wrap_with_condition(implementation, event['conditional'])
+
+    def generate_header(self):
+        pass
+
+    def generate_implementation(self):
+        return IMPLEMENTATION_TEMPLATE % {
+            'namespace': self._namespace().strip('"'),
+            'license': license.license_for_generated_cpp(),
+            'factory_implementation': "\n".join(map(self._factory_implementation, self._events())),
+        }
+
+
+if __name__ == "__main__":
+    in_generator.Maker(EventFactoryWriter).main(sys.argv)
diff --git a/core/scripts/make_runtime_features.py b/core/scripts/make_runtime_features.py
index 3890a61..13e1f9b 100755
--- a/core/scripts/make_runtime_features.py
+++ b/core/scripts/make_runtime_features.py
@@ -97,11 +97,6 @@
         lowered = lowered.replace("iME", "ime")
         return lowered
 
-    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 _method_declaration(self, feature):
         if feature['custom']:
             return "    static bool %(first_lowered_name)sEnabled();\n" % feature
@@ -118,7 +113,7 @@
 
     def _storage_declarations(self, feature):
         declaration = "    static bool is%(name)sEnabled;" % feature
-        return self._wrap_with_condition(declaration, feature['condition'])
+        return self.wrap_with_condition(declaration, feature['condition'])
 
     def generate_header(self):
         return HEADER_TEMPLATE % {
@@ -130,7 +125,7 @@
 
     def _storage_definition(self, feature):
         definition = "bool RuntimeEnabledFeatures::is%(name)sEnabled = %(default)s;" % feature
-        return self._wrap_with_condition(definition, feature['condition'])
+        return self.wrap_with_condition(definition, feature['condition'])
 
     def generate_implementation(self):
         return IMPLEMENTATION_TEMPLATE % {
diff --git a/core/storage/Storage.idl b/core/storage/Storage.idl
index 3d0364b..ce94506 100644
--- a/core/storage/Storage.idl
+++ b/core/storage/Storage.idl
@@ -28,6 +28,7 @@
     CustomDeleteProperty,
     CustomEnumerateProperty,
     CustomIndexedGetter,
+    CustomIndexedSetter,
     CustomNamedSetter,
 ] interface Storage {
     [NotEnumerable, GetterRaisesException] readonly attribute unsigned long length;
diff --git a/core/svg/SVGDocument.idl b/core/svg/SVGDocument.idl
index 98f4114..1758849 100644
--- a/core/svg/SVGDocument.idl
+++ b/core/svg/SVGDocument.idl
@@ -21,7 +21,7 @@
 
 [
     Conditional=SVG,
-    CustomToJSObject
+    CustomToV8
 ] interface SVGDocument : Document {
     readonly attribute SVGSVGElement        rootElement;
 
diff --git a/core/svg/SVGElement.idl b/core/svg/SVGElement.idl
index 589bb5c..73d0077 100644
--- a/core/svg/SVGElement.idl
+++ b/core/svg/SVGElement.idl
@@ -22,7 +22,7 @@
 
 [
     Conditional=SVG,
-    CustomToJSObject
+    CustomToV8
 ] interface SVGElement : Element {
     [Reflect] attribute DOMString id;
     [TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlbase;
diff --git a/core/svg/SVGExternalResourcesRequired.idl b/core/svg/SVGExternalResourcesRequired.idl
index 36bff05..854b268 100644
--- a/core/svg/SVGExternalResourcesRequired.idl
+++ b/core/svg/SVGExternalResourcesRequired.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGExternalResourcesRequired { 
     readonly attribute SVGAnimatedBoolean externalResourcesRequired;
 };
diff --git a/core/svg/SVGFitToViewBox.idl b/core/svg/SVGFitToViewBox.idl
index e9ad2ab..ccd61c5 100644
--- a/core/svg/SVGFitToViewBox.idl
+++ b/core/svg/SVGFitToViewBox.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGFitToViewBox {
     readonly attribute SVGAnimatedRect                viewBox;
     readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
diff --git a/core/svg/SVGLangSpace.idl b/core/svg/SVGLangSpace.idl
index fef8c46..c5152cc 100644
--- a/core/svg/SVGLangSpace.idl
+++ b/core/svg/SVGLangSpace.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGLangSpace {
              attribute DOMString xmllang;
              attribute DOMString xmlspace;
diff --git a/core/svg/SVGLocatable.idl b/core/svg/SVGLocatable.idl
index ef547b8..7a71bd5 100644
--- a/core/svg/SVGLocatable.idl
+++ b/core/svg/SVGLocatable.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGLocatable {
     readonly attribute SVGElement nearestViewportElement;
     readonly attribute SVGElement farthestViewportElement;
diff --git a/core/svg/SVGPathSeg.idl b/core/svg/SVGPathSeg.idl
index 2d1267d..cda62ad 100644
--- a/core/svg/SVGPathSeg.idl
+++ b/core/svg/SVGPathSeg.idl
@@ -26,7 +26,7 @@
 
 [
     Conditional=SVG,
-    CustomToJSObject,
+    CustomToV8,
     
     ImplementationLacksVTable
 ] interface SVGPathSeg {
diff --git a/core/svg/SVGRenderingIntent.idl b/core/svg/SVGRenderingIntent.idl
index 708f7a1..9383422 100644
--- a/core/svg/SVGRenderingIntent.idl
+++ b/core/svg/SVGRenderingIntent.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=SVG,
-    SuppressToJSObject,
+    DoNotGenerateToV8,
     ImplementationLacksVTable
 ] interface SVGRenderingIntent {
     // Rendering Intent Types
diff --git a/core/svg/SVGTests.idl b/core/svg/SVGTests.idl
index 6b33373..3941d6a 100644
--- a/core/svg/SVGTests.idl
+++ b/core/svg/SVGTests.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGTests {
     readonly attribute SVGStringList requiredFeatures;
     readonly attribute SVGStringList requiredExtensions;
diff --git a/core/svg/SVGURIReference.idl b/core/svg/SVGURIReference.idl
index 8722ada..7ed40e8 100644
--- a/core/svg/SVGURIReference.idl
+++ b/core/svg/SVGURIReference.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
 ] interface SVGURIReference {
     readonly attribute SVGAnimatedString href;
 };
diff --git a/core/svg/SVGUnitTypes.idl b/core/svg/SVGUnitTypes.idl
index c6c0551..b872b3e 100644
--- a/core/svg/SVGUnitTypes.idl
+++ b/core/svg/SVGUnitTypes.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=SVG,
-    SuppressToJSObject,
+    DoNotGenerateToV8,
     ImplementationLacksVTable
 ] interface SVGUnitTypes {
     // Unit Types
diff --git a/core/svg/SVGZoomAndPan.idl b/core/svg/SVGZoomAndPan.idl
index cf10f3c..738a916 100644
--- a/core/svg/SVGZoomAndPan.idl
+++ b/core/svg/SVGZoomAndPan.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    SuppressToJSObject,
+    DoNotGenerateToV8,
     ImplementationLacksVTable
 ] interface SVGZoomAndPan {
     const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
diff --git a/core/testing/InternalSettings.idl b/core/testing/InternalSettings.idl
index 6359c27..30c0d91 100644
--- a/core/testing/InternalSettings.idl
+++ b/core/testing/InternalSettings.idl
@@ -25,11 +25,10 @@
 
 [
 ] interface InternalSettings : InternalSettingsGenerated {
+    // All methods which access Page::settings() can raise an exception
+    // when the page cannot be accessed. (Such as during page tear-down.)
     [RaisesException] void setMockScrollbarsEnabled(boolean enabled);
     [RaisesException] void setTouchEventEmulationEnabled(boolean enabled);
-    void setAuthorShadowDOMForAnyElementEnabled(boolean isEnabled);
-    void setExperimentalShadowDOMEnabled(boolean isEnabled);
-    void setStyleScopedEnabled(boolean isEnabled);
     [RaisesException] void setStandardFontFamily(DOMString family, DOMString script);
     [RaisesException] void setSerifFontFamily(DOMString family, DOMString script);
     [RaisesException] void setSansSerifFontFamily(DOMString family, DOMString script);
@@ -42,17 +41,26 @@
     [RaisesException] void setTextAutosizingFontScaleFactor(float fontScaleFactor);
     [RaisesException] void setResolutionOverride(long dotsPerCSSInchHorizontally, long dotsPerCSSInchVertically);
     [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
-    [RaisesException] void setCSSExclusionsEnabled(boolean enabled);
-    [RaisesException] void setCSSVariablesEnabled(boolean enabled);
-    [RaisesException] boolean cssVariablesEnabled();
-    [RaisesException] void setCanStartMedia(boolean enabled);
     [RaisesException] void setEditingBehavior(DOMString behavior);
-    [RaisesException] void setDialogElementEnabled(boolean enabled);
-    [RaisesException] void setLazyLayoutEnabled(boolean enabled);
-    void setLangAttributeAwareFormControlUIEnabled(boolean enabled);
 
     [RaisesException] void setShouldDisplayTrackKind(DOMString kind, boolean enabled);
     [RaisesException] boolean shouldDisplayTrackKind(DOMString trackKind);
     [RaisesException] void setImagesEnabled(boolean enabled);
     [RaisesException] void setDefaultVideoPosterURL(DOMString poster);
+
+    // FIXME: cssVariablesEnabled is a real Setting and not a
+    // RuntimeEnabledFeature, but it should be changed to be a REF.
+    [RaisesException] boolean cssVariablesEnabled();
+    [RaisesException] void setCSSVariablesEnabled(boolean enabled);
+
+    // FIXME: The following are RuntimeEnabledFeatures and likely
+    // cannot be changed after process start.  These setters should
+    // be removed or moved onto internals.runtimeFlags:
+    void setAuthorShadowDOMForAnyElementEnabled(boolean enabled);
+    void setCSSExclusionsEnabled(boolean enabled);
+    void setDialogElementEnabled(boolean enabled);
+    void setExperimentalShadowDOMEnabled(boolean enabled);
+    void setLangAttributeAwareFormControlUIEnabled(boolean enabled);
+    void setLazyLayoutEnabled(boolean enabled);
+    void setStyleScopedEnabled(boolean enabled);
 };
diff --git a/core/testing/Internals.idl b/core/testing/Internals.idl
index 89ab3d5..3be4238 100644
--- a/core/testing/Internals.idl
+++ b/core/testing/Internals.idl
@@ -212,6 +212,8 @@
 
     [RaisesException] void setPageScaleFactor(float scaleFactor, long x, long y);
 
+    [RaisesException] void setIsCursorVisible(Document document, boolean isVisible);
+
     void webkitWillEnterFullScreenForElement(Document document, Element element);
     void webkitDidEnterFullScreenForElement(Document document, Element element);
     void webkitWillExitFullScreenForElement(Document document, Element element);
diff --git a/core/workers/WorkerContext.idl b/core/workers/WorkerContext.idl
index eaa6313..ef788ac 100644
--- a/core/workers/WorkerContext.idl
+++ b/core/workers/WorkerContext.idl
@@ -26,8 +26,8 @@
 
 [
     EventTarget,
-    CustomToJSObject,
-    NoWrapperCache
+    CustomToV8,
+    DoNotGenerateWrap
 ] interface WorkerContext {
 
     // WorkerGlobalScope
@@ -60,9 +60,7 @@
     attribute MessageEventConstructor MessageEvent;
     attribute WorkerLocationConstructor WorkerLocation;
 
-#if defined(ENABLE_CHANNEL_MESSAGING) && ENABLE_CHANNEL_MESSAGING
     attribute MessageChannelConstructor MessageChannel;
-#endif
     attribute EventSourceConstructor EventSource;
     attribute XMLHttpRequestConstructor XMLHttpRequest;
 
diff --git a/core/xml/XMLHttpRequestException.idl b/core/xml/XMLHttpRequestException.idl
deleted file mode 100644
index 6bf63a0..0000000
--- a/core/xml/XMLHttpRequestException.idl
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2007 Apple 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.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") 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 APPLE AND ITS 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 APPLE OR ITS 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.
- */
-
-[
-    DoNotCheckConstants,
-    ImplementationLacksVTable
-] exception XMLHttpRequestException {
-
-    readonly attribute unsigned short   code;
-    readonly attribute DOMString        name;
-    readonly attribute DOMString        message;
-
-    // Override in a Mozilla compatible format
-    [NotEnumerable] DOMString toString();
-
-    // XMLHttpRequestExceptionCode
-    const unsigned short NETWORK_ERR = 101;
-    const unsigned short ABORT_ERR = 102;
-};
-
diff --git a/modules/README b/modules/README
index e18cf12..3929bfb 100644
--- a/modules/README
+++ b/modules/README
@@ -6,4 +6,4 @@
 
 The current version corresponds to:
 URL: http://src.chromium.org/multivm/trunk/webkit
-Current revision: 1242
+Current revision: 1246
diff --git a/modules/filesystem/Entry.idl b/modules/filesystem/Entry.idl
index e6638ab..ba90dfe 100644
--- a/modules/filesystem/Entry.idl
+++ b/modules/filesystem/Entry.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    CustomToJSObject
+    CustomToV8
 ] interface Entry {
     readonly attribute boolean isFile;
     readonly attribute boolean isDirectory;
diff --git a/modules/filesystem/EntryArray.idl b/modules/filesystem/EntryArray.idl
index 03fd973..6d75100 100644
--- a/modules/filesystem/EntryArray.idl
+++ b/modules/filesystem/EntryArray.idl
@@ -29,9 +29,8 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface EntryArray {
     readonly attribute unsigned long length;
-    Entry item([IsIndex] unsigned long index);
+    getter Entry item([IsIndex] unsigned long index);
 };
diff --git a/modules/filesystem/EntryArraySync.idl b/modules/filesystem/EntryArraySync.idl
index 9b85156..52651e4 100644
--- a/modules/filesystem/EntryArraySync.idl
+++ b/modules/filesystem/EntryArraySync.idl
@@ -29,9 +29,8 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface EntryArraySync {
     readonly attribute unsigned long length;
-    EntrySync item([IsIndex] unsigned long index);
+    getter EntrySync item([IsIndex] unsigned long index);
 };
diff --git a/modules/filesystem/EntrySync.idl b/modules/filesystem/EntrySync.idl
index 1131652..08021da 100644
--- a/modules/filesystem/EntrySync.idl
+++ b/modules/filesystem/EntrySync.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    CustomToJSObject
+    CustomToV8
 ] interface EntrySync {
     readonly attribute boolean isFile;
     readonly attribute boolean isDirectory;
diff --git a/modules/gamepad/GamepadList.idl b/modules/gamepad/GamepadList.idl
index 2eb45f9..0277a61 100644
--- a/modules/gamepad/GamepadList.idl
+++ b/modules/gamepad/GamepadList.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface GamepadList {
     readonly attribute unsigned long length;
-    Gamepad item([Default=Undefined] optional unsigned long index);
+    getter Gamepad item([Default=Undefined] optional unsigned long index);
 };
 
diff --git a/modules/indexeddb/IDBAny.idl b/modules/indexeddb/IDBAny.idl
index f742222..485e3db 100644
--- a/modules/indexeddb/IDBAny.idl
+++ b/modules/indexeddb/IDBAny.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    CustomToJSObject,
-    NoWrapperCache
+    CustomToV8,
+    DoNotGenerateWrap
 ] interface IDBAny {
     // This space is intentionally left blank.
 };
diff --git a/modules/mediasource/SourceBufferList.idl b/modules/mediasource/SourceBufferList.idl
index f8531ed..443edb3 100644
--- a/modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/SourceBufferList.idl
@@ -30,12 +30,11 @@
  
 [
     EnabledAtRuntime=mediaSource,
-    IndexedGetter,
     EventTarget,
     CallWith=ScriptExecutionContext
 ] interface SourceBufferList {
     readonly attribute unsigned long length;
-    SourceBuffer item(unsigned long index);
+    getter SourceBuffer item(unsigned long index);
 
     // EventTarget interface
     void addEventListener(DOMString type,
diff --git a/modules/mediastream/DOMWindowMediaStream.idl b/modules/mediastream/DOMWindowMediaStream.idl
index c492de4..c9cffef 100644
--- a/modules/mediastream/DOMWindowMediaStream.idl
+++ b/modules/mediastream/DOMWindowMediaStream.idl
@@ -24,9 +24,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] partial interface DOMWindow {
+partial interface DOMWindow {
     [EnabledAtRuntime=mediaStream] attribute MediaStreamConstructor webkitMediaStream;
     [EnabledAtRuntime=peerConnection] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
     attribute RTCSessionDescriptionConstructor RTCSessionDescription;
diff --git a/modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
index e41ea5c..45c415d 100644
--- a/modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     EventTarget,
     Constructor,
     Constructor(MediaStream stream),
diff --git a/modules/mediastream/MediaStreamEvent.idl b/modules/mediastream/MediaStreamEvent.idl
index b44729c..ee96157 100644
--- a/modules/mediastream/MediaStreamEvent.idl
+++ b/modules/mediastream/MediaStreamEvent.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     ConstructorTemplate=Event
 ] interface MediaStreamEvent : Event {
    [InitializedByEventConstructor] readonly attribute MediaStream stream;
diff --git a/modules/mediastream/MediaStreamTrack.idl b/modules/mediastream/MediaStreamTrack.idl
index 48495fd..b58a085 100644
--- a/modules/mediastream/MediaStreamTrack.idl
+++ b/modules/mediastream/MediaStreamTrack.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     EventTarget,
     ActiveDOMObject
 ] interface MediaStreamTrack {
diff --git a/modules/mediastream/MediaStreamTrackEvent.idl b/modules/mediastream/MediaStreamTrackEvent.idl
index 640a2af..c7ad507 100644
--- a/modules/mediastream/MediaStreamTrackEvent.idl
+++ b/modules/mediastream/MediaStreamTrackEvent.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] interface MediaStreamTrackEvent : Event {
+interface MediaStreamTrackEvent : Event {
    readonly attribute MediaStreamTrack track;
 };
 
diff --git a/modules/mediastream/NavigatorMediaStream.idl b/modules/mediastream/NavigatorMediaStream.idl
index 5da3ed9..94df656 100644
--- a/modules/mediastream/NavigatorMediaStream.idl
+++ b/modules/mediastream/NavigatorMediaStream.idl
@@ -17,9 +17,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] partial interface Navigator {
+partial interface Navigator {
     [EnabledAtRuntime=mediaStream, RaisesException] void webkitGetUserMedia(Dictionary options,
                                                  NavigatorUserMediaSuccessCallback successCallback,
                                                  optional NavigatorUserMediaErrorCallback errorCallback);
diff --git a/modules/mediastream/NavigatorUserMediaError.idl b/modules/mediastream/NavigatorUserMediaError.idl
index 9c6df79..cdaa5c0 100644
--- a/modules/mediastream/NavigatorUserMediaError.idl
+++ b/modules/mediastream/NavigatorUserMediaError.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] interface NavigatorUserMediaError {
+interface NavigatorUserMediaError {
     const unsigned short PERMISSION_DENIED = 1;
     readonly attribute unsigned short code;
 };
diff --git a/modules/mediastream/NavigatorUserMediaErrorCallback.idl b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
index da94ad8..37c581d 100644
--- a/modules/mediastream/NavigatorUserMediaErrorCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] callback interface NavigatorUserMediaErrorCallback {
+callback interface NavigatorUserMediaErrorCallback {
     boolean handleEvent(NavigatorUserMediaError error);
 };
 
diff --git a/modules/mediastream/NavigatorUserMediaSuccessCallback.idl b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
index 3912797..c520266 100644
--- a/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] callback interface NavigatorUserMediaSuccessCallback {
+callback interface NavigatorUserMediaSuccessCallback {
     boolean handleEvent(MediaStream stream);
 };
 
diff --git a/modules/mediastream/RTCDTMFSender.idl b/modules/mediastream/RTCDTMFSender.idl
index 6c3f419..ad97c75 100644
--- a/modules/mediastream/RTCDTMFSender.idl
+++ b/modules/mediastream/RTCDTMFSender.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     ActiveDOMObject,
     EventTarget
 ] interface RTCDTMFSender {
diff --git a/modules/mediastream/RTCDTMFToneChangeEvent.idl b/modules/mediastream/RTCDTMFToneChangeEvent.idl
index b8057f5..ee1ae8a 100644
--- a/modules/mediastream/RTCDTMFToneChangeEvent.idl
+++ b/modules/mediastream/RTCDTMFToneChangeEvent.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     ConstructorTemplate=Event
 ] interface RTCDTMFToneChangeEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString tone;
diff --git a/modules/mediastream/RTCDataChannel.idl b/modules/mediastream/RTCDataChannel.idl
index 265c822..4532213 100644
--- a/modules/mediastream/RTCDataChannel.idl
+++ b/modules/mediastream/RTCDataChannel.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     EventTarget
 ] interface RTCDataChannel {
     readonly attribute DOMString label;
diff --git a/modules/mediastream/RTCDataChannelEvent.idl b/modules/mediastream/RTCDataChannelEvent.idl
index 7fd7ec9..2a820b8 100644
--- a/modules/mediastream/RTCDataChannelEvent.idl
+++ b/modules/mediastream/RTCDataChannelEvent.idl
@@ -22,8 +22,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] interface RTCDataChannelEvent : Event {
+interface RTCDataChannelEvent : Event {
     readonly attribute RTCDataChannel channel;
 };
diff --git a/modules/mediastream/RTCErrorCallback.idl b/modules/mediastream/RTCErrorCallback.idl
index 5af5bfc..d215353 100644
--- a/modules/mediastream/RTCErrorCallback.idl
+++ b/modules/mediastream/RTCErrorCallback.idl
@@ -28,9 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] callback interface RTCErrorCallback {
+callback interface RTCErrorCallback {
     boolean handleEvent(DOMString errorInformation);
 };
 
diff --git a/modules/mediastream/RTCIceCandidate.idl b/modules/mediastream/RTCIceCandidate.idl
index 9cba455..acad5fa 100644
--- a/modules/mediastream/RTCIceCandidate.idl
+++ b/modules/mediastream/RTCIceCandidate.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     Constructor(Dictionary dictionary),
     RaisesException
 ] interface RTCIceCandidate {
diff --git a/modules/mediastream/RTCIceCandidateEvent.idl b/modules/mediastream/RTCIceCandidateEvent.idl
index 331d3b3..26b5a61 100644
--- a/modules/mediastream/RTCIceCandidateEvent.idl
+++ b/modules/mediastream/RTCIceCandidateEvent.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM,
-] interface RTCIceCandidateEvent : Event {
+interface RTCIceCandidateEvent : Event {
     readonly attribute RTCIceCandidate candidate;
 };
 
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
index 940e96c..ac044ab 100644
--- a/modules/mediastream/RTCPeerConnection.idl
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     ActiveDOMObject,
     Constructor(Dictionary rtcIceServers, optional Dictionary mediaConstraints),
     RaisesException,
diff --git a/modules/mediastream/RTCSessionDescription.idl b/modules/mediastream/RTCSessionDescription.idl
index 5802e0b..bdd8d69 100644
--- a/modules/mediastream/RTCSessionDescription.idl
+++ b/modules/mediastream/RTCSessionDescription.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     Constructor(Dictionary dictionary),
     RaisesException
 ] interface RTCSessionDescription {
diff --git a/modules/mediastream/RTCSessionDescriptionCallback.idl b/modules/mediastream/RTCSessionDescriptionCallback.idl
index 2fb8560..e80be03 100644
--- a/modules/mediastream/RTCSessionDescriptionCallback.idl
+++ b/modules/mediastream/RTCSessionDescriptionCallback.idl
@@ -28,9 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] callback interface RTCSessionDescriptionCallback {
+callback interface RTCSessionDescriptionCallback {
     boolean handleEvent(RTCSessionDescription sdp);
 };
 
diff --git a/modules/mediastream/RTCStatsCallback.idl b/modules/mediastream/RTCStatsCallback.idl
index 437e03f..c81c725 100644
--- a/modules/mediastream/RTCStatsCallback.idl
+++ b/modules/mediastream/RTCStatsCallback.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] callback interface RTCStatsCallback {
+callback interface RTCStatsCallback {
     boolean handleEvent(RTCStatsResponse response);
 };
 
diff --git a/modules/mediastream/RTCStatsReport.idl b/modules/mediastream/RTCStatsReport.idl
index 0259add..00ae129 100644
--- a/modules/mediastream/RTCStatsReport.idl
+++ b/modules/mediastream/RTCStatsReport.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=MEDIA_STREAM,
     ImplementationLacksVTable
 ] interface RTCStatsReport {
     readonly attribute Date timestamp;
diff --git a/modules/mediastream/RTCStatsResponse.idl b/modules/mediastream/RTCStatsResponse.idl
index bbec09b..384bd6b 100644
--- a/modules/mediastream/RTCStatsResponse.idl
+++ b/modules/mediastream/RTCStatsResponse.idl
@@ -22,9 +22,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=MEDIA_STREAM
-] interface RTCStatsResponse {
+interface RTCStatsResponse {
     sequence<RTCStatsReport> result();
     getter RTCStatsReport namedItem([Default=Undefined] optional DOMString name);
 };
diff --git a/modules/notifications/NotificationCenter.idl b/modules/notifications/NotificationCenter.idl
index 0263f91..ceddbe3 100644
--- a/modules/notifications/NotificationCenter.idl
+++ b/modules/notifications/NotificationCenter.idl
@@ -38,7 +38,7 @@
 #endif
    [MeasureAs=LegacyTextNotifications, ActivityLog=Access, RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
 
-   int checkPermission();
+   long checkPermission();
    void requestPermission(optional VoidCallback callback);
 };
 
diff --git a/modules/speech/SpeechGrammarList.idl b/modules/speech/SpeechGrammarList.idl
index 18ae829..2c6db68 100644
--- a/modules/speech/SpeechGrammarList.idl
+++ b/modules/speech/SpeechGrammarList.idl
@@ -24,12 +24,11 @@
  */
 
 [
-    IndexedGetter,
     Constructor,
     ImplementationLacksVTable
 ] interface SpeechGrammarList {
     readonly attribute unsigned long length;
-    SpeechGrammar item([IsIndex] unsigned long index);
+    getter SpeechGrammar item([IsIndex] unsigned long index);
     [CallWith=ScriptExecutionContext] void addFromUri(DOMString src, optional float weight);
     void addFromString(DOMString string, optional float weight);
 };
diff --git a/modules/speech/SpeechRecognitionResult.idl b/modules/speech/SpeechRecognitionResult.idl
index 9abd376..15a7f7d 100644
--- a/modules/speech/SpeechRecognitionResult.idl
+++ b/modules/speech/SpeechRecognitionResult.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface SpeechRecognitionResult {
     readonly attribute unsigned long length;
-    SpeechRecognitionAlternative item([IsIndex] unsigned long index);
+    getter SpeechRecognitionAlternative item([IsIndex] unsigned long index);
     readonly attribute boolean isFinal;
 };
diff --git a/modules/speech/SpeechRecognitionResultList.idl b/modules/speech/SpeechRecognitionResultList.idl
index 51a83ae..f2ccdeb 100644
--- a/modules/speech/SpeechRecognitionResultList.idl
+++ b/modules/speech/SpeechRecognitionResultList.idl
@@ -24,9 +24,8 @@
  */
 
 [
-    IndexedGetter,
     ImplementationLacksVTable
 ] interface SpeechRecognitionResultList {
     readonly attribute unsigned long length;
-    SpeechRecognitionResult item([IsIndex] unsigned long index);
+    getter SpeechRecognitionResult item([IsIndex] unsigned long index);
 };
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
index 6326afa..088f684 100644
--- a/modules/webaudio/AudioContext.idl
+++ b/modules/webaudio/AudioContext.idl
@@ -55,10 +55,8 @@
 
     [RaisesException] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
 
-#if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
     [RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
     MediaStreamAudioDestinationNode createMediaStreamDestination();
-#endif
 
     // Processing nodes
     GainNode createGain();
diff --git a/modules/webaudio/MediaStreamAudioDestinationNode.idl b/modules/webaudio/MediaStreamAudioDestinationNode.idl
index 26f2c3d..8e2fa8a 100644
--- a/modules/webaudio/MediaStreamAudioDestinationNode.idl
+++ b/modules/webaudio/MediaStreamAudioDestinationNode.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO&MEDIA_STREAM
+    Conditional=WEB_AUDIO
 ] interface MediaStreamAudioDestinationNode : AudioSourceNode {
     readonly attribute MediaStream stream;
 };
diff --git a/modules/webaudio/MediaStreamAudioSourceNode.idl b/modules/webaudio/MediaStreamAudioSourceNode.idl
index f32a332..78f29df 100644
--- a/modules/webaudio/MediaStreamAudioSourceNode.idl
+++ b/modules/webaudio/MediaStreamAudioSourceNode.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO&MEDIA_STREAM
+    Conditional=WEB_AUDIO
 ] interface MediaStreamAudioSourceNode : AudioSourceNode {
     readonly attribute MediaStream mediaStream;
 };
diff --git a/modules/webmidi/MIDIInput.idl b/modules/webmidi/MIDIInput.idl
new file mode 100644
index 0000000..f4cd4f2
--- /dev/null
+++ b/modules/webmidi/MIDIInput.idl
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+
+[
+    ActiveDOMObject,
+    EventTarget
+] interface MIDIInput : MIDIPort {
+    attribute EventListener onmidimessage;
+};