diff --git a/core/README b/core/README
index 3929bfb..8d6d9a3 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: 1246
+Current revision: 1266
diff --git a/core/core.gyp/scripts/action_csspropertynames.py b/core/core.gyp/scripts/action_csspropertynames.py
deleted file mode 100644
index b95540d..0000000
--- a/core/core.gyp/scripts/action_csspropertynames.py
+++ /dev/null
@@ -1,174 +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.
-#
-# action_csspropertynames.py is a harness script to connect actions sections of
-# gyp-based builds to makeprop.pl.
-#
-# usage: action_csspropertynames.py OUTPUTS -- [--defines ENABLE_FLAG1 ENABLE_FLAG2 ...] -- INPUTS
-#
-# Exactly two outputs must be specified: a path to each of CSSPropertyNames.cpp
-# and CSSPropertyNames.h.
-#
-# Multiple inputs may be specified. One input must have a basename of
-# makeprop.pl; this is taken as the path to makeprop.pl. All other inputs are
-# paths to .in files that are used as input to makeprop.pl; at least one,
-# CSSPropertyNames.in, is required.
-
-
-import os
-import posixpath
-import shlex
-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 SplitDefines(options):
-    # 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)
-
-def main(args):
-    outputs, options, inputs = SplitArgsIntoSections(args[1:])
-
-    SplitDefines(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 one is makeprop.pl and which are
-    # inputs to that script.
-    makepropInput = None
-    inFiles = []
-    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 == 'makeprop.pl':
-            assert makepropInput == None
-            makepropInput = inputAbs
-        elif inputBasename.endswith('.in'):
-            inFiles.append(inputAbsPosix)
-        else:
-            assert False
-
-    assert makepropInput != None
-    assert len(inFiles) >= 1
-
-    # Change to the output directory because makeprop.pl puts output in its
-    # working directory.
-    os.chdir(outputDir)
-
-    # Merge all inFiles into a single file whose name will be the same as the
-    # first listed inFile, but in the output directory.
-    mergedPath = os.path.basename(inFiles[0])
-    merged = open(mergedPath, 'wb')    # 'wb' to get \n only on windows
-
-    # Concatenate all the input files.
-    for inFilePath in inFiles:
-        inFile = open(inFilePath)
-        shutil.copyfileobj(inFile, merged)
-        inFile.close()
-
-    merged.close()
-
-    # scriptsPath is a Perl include directory, located relative to
-    # makepropInput.
-    scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makepropInput), os.pardir, 'scripts'))
-
-    # Build up the command.
-    command = ['perl', '-I', scriptsPath, makepropInput]
-    command.extend(options)
-
-    # Do it. checkCall is new in 2.5, so simulate its behavior with call and
-    # assert.
-    returnCode = subprocess.call(command)
-    assert returnCode == 0
-
-    # Don't leave behind the merged file or the .gperf file created by
-    # makeprop.
-    (root, ext) = os.path.splitext(mergedPath)
-    gperfPath = root + '.gperf'
-    os.unlink(gperfPath)
-    os.unlink(mergedPath)
-
-    # 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/core.gyp/scripts/action_cssvaluekeywords.py b/core/core.gyp/scripts/action_cssvaluekeywords.py
deleted file mode 100644
index 8232fb4..0000000
--- a/core/core.gyp/scripts/action_cssvaluekeywords.py
+++ /dev/null
@@ -1,178 +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_cssvaluekeywords.py is a harness script to connect actions sections of
-# gyp-based builds to makevalues.pl.
-#
-# usage: action_cssvaluekeywords.py OUTPUTS -- [--defines ENABLE_FLAG1 ENABLE_FLAG2 ...] -- INPUTS
-#
-# Exactly two outputs must be specified: a path to each of CSSValueKeywords.c
-# and CSSValueKeywords.h.
-#
-# Multiple inputs may be specified. One input must have a basename of
-# makevalues.pl; this is taken as the path to makevalues.pl. All other inputs
-# are paths to .in files that are used as input to makevalues.pl; at least
-# one, CSSValueKeywords.in, is required.
-
-
-import os
-import posixpath
-import shlex
-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 SplitDefines(options):
-    # 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)
-
-def main(args):
-    outputs, options, inputs = SplitArgsIntoSections(args[1:])
-
-    SplitDefines(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 one is makevalues.pl and which are
-    # inputs to that script.
-    makevaluesInput = None
-    inFiles = []
-    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 == 'makevalues.pl':
-            assert makevaluesInput == None
-            makevaluesInput = inputAbs
-        elif inputBasename.endswith('.in'):
-            inFiles.append(inputAbsPosix)
-        else:
-            assert False
-
-    assert makevaluesInput != None
-    assert len(inFiles) >= 1
-
-    # Change to the output directory because makevalues.pl puts output in its
-    # working directory.
-    os.chdir(outputDir)
-
-    # Merge all inFiles into a single file whose name will be the same as the
-    # first listed inFile, but in the output directory.
-    mergedPath = os.path.basename(inFiles[0])
-    merged = open(mergedPath, 'wb')    # 'wb' to get \n only on windows
-
-    # Concatenate all the input files.
-    for inFilePath in inFiles:
-        inFile = open(inFilePath)
-        shutil.copyfileobj(inFile, merged)
-        inFile.close()
-
-    merged.close()
-
-    # scriptsPath is a Perl include directory, located relative to
-    # makevaluesInput.
-    scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makevaluesInput), os.pardir, 'scripts'))
-
-    # Build up the command.
-    command = ['perl', '-I', scriptsPath, makevaluesInput]
-    command.extend(options)
-
-    # Do it. checkCall is new in 2.5, so simulate its behavior with call and
-    # assert.
-    returnCode = subprocess.call(command)
-    assert returnCode == 0
-
-    # Don't leave behind the merged file or the .gperf file created by
-    # makevalues.
-    (root, ext) = os.path.splitext(mergedPath)
-    gperfPath = root + '.gperf'
-    os.unlink(gperfPath)
-    os.unlink(mergedPath)
-
-    # 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/css/DOMWindowCSS.idl b/core/css/CSS.idl
similarity index 95%
rename from core/css/DOMWindowCSS.idl
rename to core/css/CSS.idl
index 742a152..4ba9ba7 100644
--- a/core/css/DOMWindowCSS.idl
+++ b/core/css/CSS.idl
@@ -28,11 +28,9 @@
  */
 
 [
-    InterfaceName=CSS,
-    ImplementationLacksVTable
-] interface DOMWindowCSS {
-
+    NoInterfaceObject,
+    ImplementedAs=DOMWindowCSS
+] interface CSS {
     boolean supports(DOMString property, DOMString value);
     boolean supports(DOMString conditionText);
-
 };
diff --git a/core/css/CSSFontFaceLoadEvent.idl b/core/css/CSSFontFaceLoadEvent.idl
index c4bd55e..d89e765 100644
--- a/core/css/CSSFontFaceLoadEvent.idl
+++ b/core/css/CSSFontFaceLoadEvent.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     EnabledAtRuntime=fontLoadEvents,
     ConstructorTemplate=Event
 ] interface CSSFontFaceLoadEvent : Event {
diff --git a/core/css/CSSPrimitiveValue.idl b/core/css/CSSPrimitiveValue.idl
index 8581cdb..ff49620 100644
--- a/core/css/CSSPrimitiveValue.idl
+++ b/core/css/CSSPrimitiveValue.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface CSSPrimitiveValue : CSSValue {
 
     // UnitTypes
diff --git a/core/css/CSSRule.idl b/core/css/CSSRule.idl
index 593305c..983a464 100644
--- a/core/css/CSSRule.idl
+++ b/core/css/CSSRule.idl
@@ -22,8 +22,7 @@
 [
     CustomToV8,
 
-    DependentLifetime,
-    SkipVTableValidation
+    DependentLifetime
 ] interface CSSRule {
 
     // RuleType
diff --git a/core/css/CSSRuleList.idl b/core/css/CSSRuleList.idl
index 0cbc656..e89a820 100644
--- a/core/css/CSSRuleList.idl
+++ b/core/css/CSSRuleList.idl
@@ -25,8 +25,7 @@
 
 // Introduced in DOM Level 2:
 [
-    DependentLifetime,
-    SkipVTableValidation
+    DependentLifetime
 ] interface CSSRuleList {
     readonly attribute unsigned long    length;
     getter CSSRule           item([Default=Undefined] optional unsigned long index);
diff --git a/core/css/CSSStyleDeclaration.idl b/core/css/CSSStyleDeclaration.idl
index be7b708..252ddcb 100644
--- a/core/css/CSSStyleDeclaration.idl
+++ b/core/css/CSSStyleDeclaration.idl
@@ -23,8 +23,7 @@
     CustomNamedSetter,
     CustomNamedGetter,
     CustomEnumerateProperty,
-    DependentLifetime,
-    SkipVTableValidation
+    DependentLifetime
 ] interface CSSStyleDeclaration {
              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString        cssText;
 
@@ -39,9 +38,5 @@
     readonly attribute unsigned long    length;
     getter DOMString          item([Default=Undefined] optional unsigned long index);
     readonly attribute CSSRule          parentRule;
-
-    // Extensions
-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyShorthand([Default=Undefined] optional DOMString propertyName);
-    boolean            isPropertyImplicit([Default=Undefined] optional DOMString propertyName);
 };
 
diff --git a/core/css/CSSStyleSheet.idl b/core/css/CSSStyleSheet.idl
index 7ab434f..62350f5 100644
--- a/core/css/CSSStyleSheet.idl
+++ b/core/css/CSSStyleSheet.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    GenerateIsReachable=ImplOwnerNodeRoot
+    GenerateIsReachable=ownerNode
 ] interface CSSStyleSheet : StyleSheet {
     readonly attribute CSSRule          ownerRule;
     readonly attribute CSSRuleList      cssRules;
diff --git a/core/css/CSSSupportsRule.idl b/core/css/CSSSupportsRule.idl
index 13e0efd..b2aa0cc 100644
--- a/core/css/CSSSupportsRule.idl
+++ b/core/css/CSSSupportsRule.idl
@@ -26,7 +26,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface CSSSupportsRule : CSSRule {
+[
+    NoInterfaceObject
+] interface CSSSupportsRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
     readonly attribute DOMString conditionText;
 
diff --git a/core/css/CSSValue.idl b/core/css/CSSValue.idl
index 5440b74..e8a4a13 100644
--- a/core/css/CSSValue.idl
+++ b/core/css/CSSValue.idl
@@ -21,8 +21,7 @@
 [
     CustomToV8,
     
-    DependentLifetime,
-    ImplementationLacksVTable
+    DependentLifetime
 ] interface CSSValue {
 
     // UnitTypes
diff --git a/core/css/CSSValueList.idl b/core/css/CSSValueList.idl
index ca51d6c..7d0b63e 100644
--- a/core/css/CSSValueList.idl
+++ b/core/css/CSSValueList.idl
@@ -25,7 +25,6 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
 ] interface CSSValueList : CSSValue {
     readonly attribute unsigned long    length;
     getter CSSValue           item([Default=Undefined] optional unsigned long index);
diff --git a/core/css/Counter.idl b/core/css/Counter.idl
index aff8b56..7006aa5 100644
--- a/core/css/Counter.idl
+++ b/core/css/Counter.idl
@@ -19,7 +19,6 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
 ] interface Counter {
     readonly attribute DOMString identifier;
     readonly attribute DOMString listStyle;
diff --git a/core/css/FontLoader.idl b/core/css/FontLoader.idl
index ae6fbf1..7e7842a 100644
--- a/core/css/FontLoader.idl
+++ b/core/css/FontLoader.idl
@@ -29,10 +29,11 @@
  */
 
 [
+    NoInterfaceObject,
     EnabledAtRuntime=fontLoadEvents,
     ActiveDOMObject,
     EventTarget,
-    GenerateIsReachable=ImplDocument,
+    GenerateIsReachable=document
 ] interface FontLoader {
 
     attribute EventListener onloading;
diff --git a/core/css/MediaList.idl b/core/css/MediaList.idl
index 248a092..29cc41a 100644
--- a/core/css/MediaList.idl
+++ b/core/css/MediaList.idl
@@ -25,7 +25,6 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
 ] interface MediaList {
 
              [TreatNullAs=NullString, TreatReturnedNullStringAs=Null, SetterRaisesException] attribute DOMString mediaText;
diff --git a/core/css/MediaQueryList.idl b/core/css/MediaQueryList.idl
index 7fb2bca..7785d8d 100644
--- a/core/css/MediaQueryList.idl
+++ b/core/css/MediaQueryList.idl
@@ -17,7 +17,7 @@
  *  Boston, MA 02110-1301, USA.
  */
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface MediaQueryList {
     readonly attribute DOMString media;
     readonly attribute boolean matches;
diff --git a/core/css/MediaQueryListListener.idl b/core/css/MediaQueryListListener.idl
index 91f97f1..d8ff09e 100644
--- a/core/css/MediaQueryListListener.idl
+++ b/core/css/MediaQueryListListener.idl
@@ -19,7 +19,7 @@
 
 [
     
-    CPPPureInterface,
+    CPPPureInterface
 ] interface MediaQueryListListener {
     void queryChanged([Default=Undefined] optional MediaQueryList list);
 };
diff --git a/core/css/RGBColor.idl b/core/css/RGBColor.idl
index 6afcfac..09fa76e 100644
--- a/core/css/RGBColor.idl
+++ b/core/css/RGBColor.idl
@@ -19,7 +19,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface RGBColor {
     readonly attribute CSSPrimitiveValue  red;
     readonly attribute CSSPrimitiveValue  green;
diff --git a/core/css/Rect.idl b/core/css/Rect.idl
index 5013285..3eac82f 100644
--- a/core/css/Rect.idl
+++ b/core/css/Rect.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface Rect {
     readonly attribute CSSPrimitiveValue  top;
     readonly attribute CSSPrimitiveValue  right;
diff --git a/core/css/StyleMedia.idl b/core/css/StyleMedia.idl
index cd87599..27424f3 100644
--- a/core/css/StyleMedia.idl
+++ b/core/css/StyleMedia.idl
@@ -24,7 +24,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-interface StyleMedia {
+[
+    NoInterfaceObject
+] interface StyleMedia {
     readonly attribute DOMString type;
     boolean matchMedium([Default=Undefined] optional DOMString mediaquery);
 };
diff --git a/core/css/StyleSheet.idl b/core/css/StyleSheet.idl
index 842174a..2c179ac 100644
--- a/core/css/StyleSheet.idl
+++ b/core/css/StyleSheet.idl
@@ -21,7 +21,7 @@
 // Introduced in DOM Level 2:
 [
     CustomToV8,
-    GenerateIsReachable=ImplOwnerNodeRoot
+    GenerateIsReachable=ownerNode
 ] interface StyleSheet {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString        type;
              attribute boolean          disabled;
diff --git a/core/css/StyleSheetList.idl b/core/css/StyleSheetList.idl
index fce41cf..84224df 100644
--- a/core/css/StyleSheetList.idl
+++ b/core/css/StyleSheetList.idl
@@ -20,9 +20,8 @@
 
 // Introduced in DOM Level 2:
 [
-    GenerateIsReachable=ImplDocument,
-    CustomNamedGetter,
-    ImplementationLacksVTable
+    GenerateIsReachable=document,
+    CustomNamedGetter
 ] interface StyleSheetList {
     readonly attribute unsigned long    length;
     getter StyleSheet         item([Default=Undefined] optional unsigned long index);
diff --git a/core/css/WebKitCSSFilterValue.idl b/core/css/WebKitCSSFilterValue.idl
index 2547661..4f5e23c 100644
--- a/core/css/WebKitCSSFilterValue.idl
+++ b/core/css/WebKitCSSFilterValue.idl
@@ -24,8 +24,7 @@
  */
 
 [
-        DoNotCheckConstants,
-    ImplementationLacksVTable
+        DoNotCheckConstants
 ] interface WebKitCSSFilterValue : CSSValueList {
 
     // OperationTypes
@@ -44,4 +43,5 @@
     const unsigned short CSS_FILTER_CUSTOM = 12;
 
     readonly attribute unsigned short operationType;
+    [ImplementedAs=item] getter CSSValue([Default=Undefined] optional unsigned long index);
 };
diff --git a/core/css/WebKitCSSKeyframesRule.idl b/core/css/WebKitCSSKeyframesRule.idl
index 826413f..895d34e 100644
--- a/core/css/WebKitCSSKeyframesRule.idl
+++ b/core/css/WebKitCSSKeyframesRule.idl
@@ -33,6 +33,7 @@
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString name;
     readonly attribute CSSRuleList cssRules;
     
+    [ImplementedAs=item] getter WebKitCSSKeyframeRule(unsigned long index);
     void insertRule([Default=Undefined] optional DOMString rule);
     void deleteRule([Default=Undefined] optional DOMString key);
     WebKitCSSKeyframeRule findRule([Default=Undefined] optional DOMString key);
diff --git a/core/css/WebKitCSSMixFunctionValue.idl b/core/css/WebKitCSSMixFunctionValue.idl
index 1ce921e..c4a2abd 100644
--- a/core/css/WebKitCSSMixFunctionValue.idl
+++ b/core/css/WebKitCSSMixFunctionValue.idl
@@ -28,7 +28,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface WebKitCSSMixFunctionValue : CSSValueList {
 };
 
diff --git a/core/css/WebKitCSSRegionRule.idl b/core/css/WebKitCSSRegionRule.idl
index 7549b75..2dfbf39 100644
--- a/core/css/WebKitCSSRegionRule.idl
+++ b/core/css/WebKitCSSRegionRule.idl
@@ -28,7 +28,7 @@
  */
 
 [
-    EnabledAtRuntime=cssRegions,
+    EnabledAtRuntime=cssRegions
 ] interface WebKitCSSRegionRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
 };
diff --git a/core/css/WebKitCSSTransformValue.idl b/core/css/WebKitCSSTransformValue.idl
index ddbb799..97a5430 100644
--- a/core/css/WebKitCSSTransformValue.idl
+++ b/core/css/WebKitCSSTransformValue.idl
@@ -27,8 +27,7 @@
  */
 
 [
-        DoNotCheckConstants,
-    ImplementationLacksVTable
+        DoNotCheckConstants
 ] interface WebKitCSSTransformValue : CSSValueList {
 
     // OperationTypes
@@ -56,5 +55,6 @@
     const unsigned short CSS_MATRIX3D    = 21;
 
     readonly attribute unsigned short operationType;
+    [ImplementedAs=item] getter CSSValue([Default=Undefined] optional unsigned long index);
 };
 
diff --git a/core/css/WebKitCSSViewportRule.idl b/core/css/WebKitCSSViewportRule.idl
index a194922..f2cc09f 100644
--- a/core/css/WebKitCSSViewportRule.idl
+++ b/core/css/WebKitCSSViewportRule.idl
@@ -28,7 +28,7 @@
  */
 
 [
-    Conditional=CSS_DEVICE_ADAPTATION,
+    Conditional=CSS_DEVICE_ADAPTATION
 ] interface WebKitCSSViewportRule : CSSRule {
     readonly attribute CSSStyleDeclaration style;
 };
diff --git a/core/dom/CharacterData.idl b/core/dom/CharacterData.idl
index 4b45308..6491b8e 100644
--- a/core/dom/CharacterData.idl
+++ b/core/dom/CharacterData.idl
@@ -37,7 +37,9 @@
                                     [IsIndex,Default=Undefined] optional unsigned long length,
                                     [Default=Undefined] optional DOMString data);
 
-    // DOM 4
+    // ChildNode interface API
+    readonly attribute Element previousElementSibling;
+    readonly attribute Element nextElementSibling;
     [RaisesException] void remove();
 };
 
diff --git a/core/dom/ClientRect.idl b/core/dom/ClientRect.idl
index 3dc5b03..2d96ed0 100644
--- a/core/dom/ClientRect.idl
+++ b/core/dom/ClientRect.idl
@@ -25,7 +25,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface ClientRect {
     readonly attribute float top;
     readonly attribute float right;
diff --git a/core/dom/ClientRectList.idl b/core/dom/ClientRectList.idl
index 8017c6b..2d35d67 100644
--- a/core/dom/ClientRectList.idl
+++ b/core/dom/ClientRectList.idl
@@ -25,7 +25,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface ClientRectList {
     readonly attribute unsigned long length;
     getter ClientRect item([IsIndex,Default=Undefined] optional unsigned long index);
diff --git a/core/dom/Clipboard.idl b/core/dom/Clipboard.idl
index da58a66..82453c7 100644
--- a/core/dom/Clipboard.idl
+++ b/core/dom/Clipboard.idl
@@ -27,7 +27,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface Clipboard {
              [TreatReturnedNullStringAs=Undefined] attribute DOMString dropEffect;
              [TreatReturnedNullStringAs=Undefined] attribute DOMString effectAllowed;
diff --git a/core/dom/Comment.idl b/core/dom/Comment.idl
index 5c07e2f..3a46dd7 100644
--- a/core/dom/Comment.idl
+++ b/core/dom/Comment.idl
@@ -17,6 +17,9 @@
  * Boston, MA 02110-1301, USA.
  */
 
-interface Comment : CharacterData {
+[
+    Constructor([Default=NullString] optional DOMString data),
+    CallWith=ScriptExecutionContext
+] interface Comment : CharacterData {
 };
 
diff --git a/core/dom/CustomElementConstructor.idl b/core/dom/CustomElementConstructor.idl
index 0460874..4b6d84f 100644
--- a/core/dom/CustomElementConstructor.idl
+++ b/core/dom/CustomElementConstructor.idl
@@ -23,8 +23,9 @@
  */
 
 [
+    NoInterfaceObject,
     EnabledAtRuntime=customDOMElements,
     WrapAsFunction,
-    CustomCall
+    CustomLegacyCall
 ] interface CustomElementConstructor {
 };
diff --git a/core/dom/DOMCoreException.idl b/core/dom/DOMCoreException.idl
index 2b6f16e..3df6046 100644
--- a/core/dom/DOMCoreException.idl
+++ b/core/dom/DOMCoreException.idl
@@ -28,8 +28,7 @@
 
 [
     DoNotCheckConstants,
-    InterfaceName=DOMException,
-    ImplementationLacksVTable
+    InterfaceName=DOMException
 ] exception DOMCoreException {
 
     readonly attribute unsigned short   code;
diff --git a/core/dom/DOMError.idl b/core/dom/DOMError.idl
index 79a5881..5cded18 100644
--- a/core/dom/DOMError.idl
+++ b/core/dom/DOMError.idl
@@ -26,7 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface  DOMError {
     readonly attribute DOMString name;
   };
diff --git a/core/dom/DOMImplementation.idl b/core/dom/DOMImplementation.idl
index 960e2df..0040c11 100644
--- a/core/dom/DOMImplementation.idl
+++ b/core/dom/DOMImplementation.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    GenerateIsReachable=ImplDocument,
-    ImplementationLacksVTable
+    GenerateIsReachable=document
 ] interface DOMImplementation {
 
     // DOM Level 1
@@ -39,8 +38,8 @@
 
     // DOMImplementationCSS interface from DOM Level 2 CSS
 
-     [RaisesException] CSSStyleSheet createCSSStyleSheet([Default=Undefined] optional DOMString title,
-                                                     [Default=Undefined] optional DOMString media);
+     CSSStyleSheet createCSSStyleSheet([Default=Undefined] optional DOMString title,
+                                       [Default=Undefined] optional DOMString media);
 
     // HTMLDOMImplementation interface from DOM Level 2 HTML
 
diff --git a/core/dom/DOMNamedFlowCollection.idl b/core/dom/DOMNamedFlowCollection.idl
index 6225e98..90d2a44 100644
--- a/core/dom/DOMNamedFlowCollection.idl
+++ b/core/dom/DOMNamedFlowCollection.idl
@@ -28,9 +28,9 @@
  */
 
 [
+    NoInterfaceObject,
     EnabledAtRuntime=cssRegions,
-    InterfaceName=WebKitNamedFlowCollection,
-    ImplementationLacksVTable
+    InterfaceName=WebKitNamedFlowCollection
 ] interface DOMNamedFlowCollection {
     readonly attribute unsigned long length;
     getter NamedFlow item(unsigned long index);
diff --git a/core/dom/DOMStringList.idl b/core/dom/DOMStringList.idl
index 5109dc6..1c75bcb 100644
--- a/core/dom/DOMStringList.idl
+++ b/core/dom/DOMStringList.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface DOMStringList {
     readonly attribute unsigned long length;
     [TreatReturnedNullStringAs=Null] getter DOMString item([Default=Undefined] optional unsigned long index);
diff --git a/core/dom/DOMStringMap.idl b/core/dom/DOMStringMap.idl
index e200cc8..d3e48ab 100644
--- a/core/dom/DOMStringMap.idl
+++ b/core/dom/DOMStringMap.idl
@@ -24,12 +24,11 @@
  */
 
 [
-    GenerateIsReachable=ImplElementRoot,
-    CustomNamedGetter,
+    GenerateIsReachable=element,
     CustomDeleteProperty,
     CustomEnumerateProperty,
-    CustomNamedSetter,
-    SkipVTableValidation
+    CustomNamedSetter
 ] interface DOMStringMap {
+    [ImplementedAs=item, OverrideBuiltins] getter DOMString (DOMString name);
 };
 
diff --git a/core/dom/DataTransferItem.idl b/core/dom/DataTransferItem.idl
index 227e5a5..4ce2992 100644
--- a/core/dom/DataTransferItem.idl
+++ b/core/dom/DataTransferItem.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DataTransferItem {
     readonly attribute DOMString kind;
     readonly attribute DOMString type;
diff --git a/core/dom/DataTransferItemList.idl b/core/dom/DataTransferItemList.idl
index 0217784..07e9e2a 100644
--- a/core/dom/DataTransferItemList.idl
+++ b/core/dom/DataTransferItemList.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DataTransferItemList {
     readonly attribute long length;
     getter DataTransferItem item([Default=Undefined] optional unsigned long index);
diff --git a/core/dom/Document.idl b/core/dom/Document.idl
index 985097c..abee356 100644
--- a/core/dom/Document.idl
+++ b/core/dom/Document.idl
@@ -35,7 +35,6 @@
     [RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
                                                                                  [Default=Undefined] optional DOMString data);
     [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:
@@ -137,7 +136,7 @@
 
     [PerWorldBindings] NodeList getElementsByName([Default=Undefined] optional DOMString elementName);
 
-    [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] attribute Location location;
+    [Custom, Replaceable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location;
 
     // IE extensions
 
@@ -151,7 +150,7 @@
                                            [Default=Undefined] optional long y);
 
     // Mozilla extensions
-    DOMSelection       getSelection();
+    Selection          getSelection();
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString characterSet;
 
     // WebKit extensions
@@ -264,17 +263,17 @@
     [NotEnumerable] attribute EventListener onwebkitpointerlockerror;
     [NotEnumerable, EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute EventListener onsecuritypolicyviolation;
 
-    [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,
-                                                     [Default=Undefined] optional long pageY,
-                                                     [Default=Undefined] optional long screenX,
-                                                     [Default=Undefined] optional long screenY,
-                                                     [Default=Undefined] optional long webkitRadiusX,
-                                                     [Default=Undefined] optional long webkitRadiusY,
-                                                     [Default=Undefined] optional float webkitRotationAngle,
-                                                     [Default=Undefined] optional float webkitForce);
+    [EnabledAtRuntime=touch] Touch createTouch([Default=Undefined] optional DOMWindow window,
+                                               [Default=Undefined] optional EventTarget target,
+                                               [Default=Undefined] optional long identifier,
+                                               [Default=Undefined] optional long pageX,
+                                               [Default=Undefined] optional long pageY,
+                                               [Default=Undefined] optional long screenX,
+                                               [Default=Undefined] optional long screenY,
+                                               [Default=Undefined] optional long webkitRadiusX,
+                                               [Default=Undefined] optional long webkitRadiusY,
+                                               [Default=Undefined] optional float webkitRotationAngle,
+                                               [Default=Undefined] optional float webkitForce);
     [EnabledAtRuntime=touch, Custom, RaisesException] TouchList createTouchList();
 
     [EnabledAtRuntime=customDOMElements, ImplementedAs=registerElement, CallWith=ScriptState, DeliverCustomElementCallbacks, RaisesException] CustomElementConstructor webkitRegister(DOMString name, optional Dictionary options);
@@ -287,7 +286,12 @@
     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 DOMSecurityPolicy securityPolicy;
+    [EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] readonly attribute SecurityPolicy securityPolicy;
 
+    // ParentNode interface API
+    readonly attribute HTMLCollection children;
+    readonly attribute Element firstElementChild;
+    readonly attribute Element lastElementChild;
+    readonly attribute unsigned long childElementCount;
 };
 
diff --git a/core/dom/DocumentFragment.idl b/core/dom/DocumentFragment.idl
index e8cd287..f02cf18 100644
--- a/core/dom/DocumentFragment.idl
+++ b/core/dom/DocumentFragment.idl
@@ -18,10 +18,17 @@
  */
 
 [
-    SkipVTableValidation
+    Constructor,
+    CallWith=ScriptExecutionContext
 ] interface DocumentFragment : Node {
     // NodeSelector - Selector API
     [RaisesException] Element querySelector(DOMString selectors);
     [RaisesException] NodeList querySelectorAll(DOMString selectors);
+
+    // ParentNode interface API
+    readonly attribute HTMLCollection children;
+    readonly attribute Element firstElementChild;
+    readonly attribute Element lastElementChild;
+    readonly attribute unsigned long childElementCount;
 };
 
diff --git a/core/dom/DocumentType.idl b/core/dom/DocumentType.idl
index 5cd61a9..352da12 100644
--- a/core/dom/DocumentType.idl
+++ b/core/dom/DocumentType.idl
@@ -31,7 +31,9 @@
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString systemId;
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString internalSubset;        
 
-    // DOM 4
+    // ChildNode interface API
+    readonly attribute Element previousElementSibling;
+    readonly attribute Element nextElementSibling;
     [RaisesException] void remove();
 };
 
diff --git a/core/dom/Element.idl b/core/dom/Element.idl
index 76136bc..831e32c 100644
--- a/core/dom/Element.idl
+++ b/core/dom/Element.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomToV8,
-    SkipVTableValidation
+    CustomToV8
 ] interface Element : Node {
 
     // DOM Level 1 Core
@@ -28,12 +27,12 @@
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString tagName;
 
     [TreatReturnedNullStringAs=Null] DOMString getAttribute([Default=Undefined] optional DOMString name);
-     [RaisesException] void setAttribute([Default=Undefined] optional DOMString name,
+    [RaisesException] void setAttribute([Default=Undefined] optional DOMString name,
                                      [Default=Undefined] optional DOMString value);
     void removeAttribute([Default=Undefined] optional DOMString name);
     Attr getAttributeNode([Default=Undefined] optional DOMString name);
-    [RaisesException] Attr setAttributeNode([Default=Undefined] optional Attr newAttr);
-    [RaisesException] Attr removeAttributeNode([Default=Undefined] optional Attr oldAttr);
+    [RaisesException] Attr setAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr newAttr);
+    [RaisesException] Attr removeAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr oldAttr);
     [PerWorldBindings] NodeList getElementsByTagName([Default=Undefined] optional DOMString name);
 
     // For ObjC this is defined on Node for legacy support.
@@ -53,7 +52,7 @@
                                                    [Default=Undefined] optional DOMString localName);
      Attr getAttributeNodeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                            [Default=Undefined] optional DOMString localName);
-    [RaisesException] Attr setAttributeNodeNS([Default=Undefined] optional Attr newAttr);
+    [RaisesException] 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);
@@ -101,11 +100,10 @@
     // WebKit extension, pending specification.
     [RaisesException] boolean webkitMatchesSelector([Default=Undefined] optional DOMString selectors);
 
-    // ElementTraversal API
+    // ParentNode interface API
+    [PerWorldBindings] readonly attribute HTMLCollection children;
     [PerWorldBindings] readonly attribute Element firstElementChild;
     [PerWorldBindings] readonly attribute Element lastElementChild;
-    [PerWorldBindings] readonly attribute Element previousElementSibling;
-    [PerWorldBindings] readonly attribute Element nextElementSibling;
     [PerWorldBindings] readonly attribute unsigned long childElementCount;
 
     // ShadowAware API
@@ -114,7 +112,9 @@
     [ImplementedAs=shadowRoot, PerWorldBindings] readonly attribute ShadowRoot webkitShadowRoot;
     [ImplementedAs=insertionParentForBinding, PerWorldBindings] readonly attribute Node webkitInsertionParent;
 
-    // DOM 4
+    // ChildNode interface API
+    [PerWorldBindings] readonly attribute Element previousElementSibling;
+    [PerWorldBindings] readonly attribute Element nextElementSibling;
     [RaisesException] void remove();
 
     // CSSOM View Module API
diff --git a/core/dom/Entity.idl b/core/dom/Entity.idl
index 7f5bf4b..12b9234 100644
--- a/core/dom/Entity.idl
+++ b/core/dom/Entity.idl
@@ -17,7 +17,6 @@
  * Boston, MA 02110-1301, USA.
  */
 [
-    ImplementationLacksVTable
 ] interface Entity : Node {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString publicId;
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString systemId;
diff --git a/core/dom/EntityReference.idl b/core/dom/EntityReference.idl
deleted file mode 100644
index 363554a..0000000
--- a/core/dom/EntityReference.idl
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
- *
- * 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.
- */
-
-interface EntityReference : Node {
-};
-
diff --git a/core/dom/Event.idl b/core/dom/Event.idl
index 82b8e28..c38db7d 100644
--- a/core/dom/Event.idl
+++ b/core/dom/Event.idl
@@ -21,9 +21,8 @@
 // Introduced in DOM Level 2:
 [
     CustomToV8,
-    ConstructorTemplate=Event,
+    ConstructorTemplate=Event
     
-    SkipVTableValidation
 ] interface Event {
 
     // DOM PhaseType
@@ -73,6 +72,8 @@
              attribute boolean          returnValue;
              attribute boolean          cancelBubble;
 
+    [EnabledAtRuntime=experimentalShadowDOM] NodeList path();
+
     [Custom] readonly attribute Clipboard        clipboardData;
 };
 
diff --git a/core/dom/EventException.idl b/core/dom/EventException.idl
index cde7100..7d05830 100644
--- a/core/dom/EventException.idl
+++ b/core/dom/EventException.idl
@@ -28,8 +28,7 @@
 
 // Introduced in DOM Level 2:
 [
-    DoNotCheckConstants,
-    ImplementationLacksVTable,
+    DoNotCheckConstants
 ] exception EventException {
 
     readonly attribute unsigned short   code;
diff --git a/core/dom/EventTarget.idl b/core/dom/EventTarget.idl
index 8647c27..32af401 100644
--- a/core/dom/EventTarget.idl
+++ b/core/dom/EventTarget.idl
@@ -19,6 +19,7 @@
  */
 
 [
+    NoInterfaceObject,
     CustomToV8,
     DoNotGenerateWrap,
     EventTarget
diff --git a/core/dom/MessageChannel.idl b/core/dom/MessageChannel.idl
index c81bd4c..07b1a10 100644
--- a/core/dom/MessageChannel.idl
+++ b/core/dom/MessageChannel.idl
@@ -27,8 +27,7 @@
 [
     Constructor,
     CallWith=ScriptExecutionContext,
-    CustomConstructor,
-    ImplementationLacksVTable
+    CustomConstructor
 ] interface MessageChannel {
 
     readonly attribute MessagePort port1;
diff --git a/core/dom/MessageEvent.idl b/core/dom/MessageEvent.idl
index 928f2d7..a279331 100644
--- a/core/dom/MessageEvent.idl
+++ b/core/dom/MessageEvent.idl
@@ -31,8 +31,8 @@
     [InitializedByEventConstructor] readonly attribute DOMString origin;
     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
     [InitializedByEventConstructor] readonly attribute DOMWindow source;
-    [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any data;
-    [InitializedByEventConstructor, CustomGetter] readonly attribute Array ports;
+    [InitializedByEventConstructor, CustomGetter] readonly attribute any data;
+    [InitializedByEventConstructor] readonly attribute MessagePort[] ports;
 
     [Custom] void initMessageEvent([Default=Undefined] optional DOMString typeArg, 
                                    [Default=Undefined] optional boolean canBubbleArg, 
diff --git a/core/dom/MouseEvent.idl b/core/dom/MouseEvent.idl
index 888ac71..5465735 100644
--- a/core/dom/MouseEvent.idl
+++ b/core/dom/MouseEvent.idl
@@ -18,8 +18,7 @@
  */
 
 [
-    ConstructorTemplate=Event,
-    SkipVTableValidation
+    ConstructorTemplate=Event
 ] interface MouseEvent : UIEvent {
     [InitializedByEventConstructor] readonly attribute long             screenX;
     [InitializedByEventConstructor] readonly attribute long             screenY;
diff --git a/core/dom/MutationObserver.idl b/core/dom/MutationObserver.idl
index 6df62b7..e87fa44 100644
--- a/core/dom/MutationObserver.idl
+++ b/core/dom/MutationObserver.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    CustomConstructor(MutationCallback callback),
-    ImplementationLacksVTable
+    CustomConstructor(MutationCallback callback)
 ] interface MutationObserver {
     [RaisesException] void observe(Node target, Dictionary options);
     sequence<MutationRecord> takeRecords();
diff --git a/core/dom/MutationRecord.idl b/core/dom/MutationRecord.idl
index 2002d1d..c3ef616 100644
--- a/core/dom/MutationRecord.idl
+++ b/core/dom/MutationRecord.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface MutationRecord {
     readonly attribute DOMString type;
     readonly attribute Node target;
diff --git a/core/dom/NamedFlow.idl b/core/dom/NamedFlow.idl
index b7e09e5..ae2cfeb 100644
--- a/core/dom/NamedFlow.idl
+++ b/core/dom/NamedFlow.idl
@@ -28,10 +28,11 @@
  */
 
 [
+    NoInterfaceObject,
     EnabledAtRuntime=cssRegions,
     EventTarget,
     InterfaceName=WebKitNamedFlow,
-    GenerateIsReachable=ImplOwnerNodeRoot
+    GenerateIsReachable=ownerNode
 ] interface NamedFlow {
     readonly attribute DOMString name;
     readonly attribute boolean overset;
diff --git a/core/dom/NamedNodeMap.idl b/core/dom/NamedNodeMap.idl
index 17e7736..0613357 100644
--- a/core/dom/NamedNodeMap.idl
+++ b/core/dom/NamedNodeMap.idl
@@ -19,12 +19,10 @@
  */
 
 [
-    GenerateIsReachable=ImplElementRoot,
-    CustomNamedGetter,
-    ImplementationLacksVTable
+    GenerateIsReachable=element
 ] interface NamedNodeMap {
 
-    Node getNamedItem([Default=Undefined] optional DOMString name);
+    getter Node getNamedItem([Default=Undefined] optional DOMString name);
 
     [RaisesException] Node setNamedItem([Default=Undefined] optional Node node);
 
diff --git a/core/dom/Node.idl b/core/dom/Node.idl
index 28d760e..ba0eb17 100644
--- a/core/dom/Node.idl
+++ b/core/dom/Node.idl
@@ -29,7 +29,7 @@
     const unsigned short      ATTRIBUTE_NODE                 = 2;
     const unsigned short      TEXT_NODE                      = 3;
     const unsigned short      CDATA_SECTION_NODE             = 4;
-    const unsigned short      ENTITY_REFERENCE_NODE          = 5;
+    const unsigned short      ENTITY_REFERENCE_NODE          = 5; // EntityReference nodes are impossible to create in WebKit.
     const unsigned short      ENTITY_NODE                    = 6;
     const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;
     const unsigned short      COMMENT_NODE                   = 8;
diff --git a/core/dom/NodeFilter.idl b/core/dom/NodeFilter.idl
index b42757c..989099f 100644
--- a/core/dom/NodeFilter.idl
+++ b/core/dom/NodeFilter.idl
@@ -19,7 +19,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface NodeFilter {
     // Constants returned by acceptNode
     const short               FILTER_ACCEPT                  = 1;
diff --git a/core/dom/NodeIterator.idl b/core/dom/NodeIterator.idl
index 3101322..b019d76 100644
--- a/core/dom/NodeIterator.idl
+++ b/core/dom/NodeIterator.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface NodeIterator {
     readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
diff --git a/core/dom/NodeList.idl b/core/dom/NodeList.idl
index 02bf971..cc30450 100644
--- a/core/dom/NodeList.idl
+++ b/core/dom/NodeList.idl
@@ -20,12 +20,11 @@
 
 [
     CustomIsReachable,
-    CustomNamedGetter,
-    DependentLifetime,
-    SkipVTableValidation
+    DependentLifetime
 ] interface NodeList {
 
     getter Node item([IsIndex,Default=Undefined] optional unsigned long index);
+    [ImplementedAs=anonymousNamedGetter, OverrideBuiltins] getter (Node or unsigned long) (DOMString name);
 
     readonly attribute unsigned long length;
 
diff --git a/core/dom/PopStateEvent.idl b/core/dom/PopStateEvent.idl
index c4153f6..709777f 100644
--- a/core/dom/PopStateEvent.idl
+++ b/core/dom/PopStateEvent.idl
@@ -27,5 +27,5 @@
 [
     ConstructorTemplate=Event
 ] interface PopStateEvent : Event {
-    [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any state;
+    [InitializedByEventConstructor, CustomGetter] readonly attribute any state;
 };
diff --git a/core/dom/ProcessingInstruction.idl b/core/dom/ProcessingInstruction.idl
index 03530e2..1767ee5 100644
--- a/core/dom/ProcessingInstruction.idl
+++ b/core/dom/ProcessingInstruction.idl
@@ -23,7 +23,7 @@
     // DOM Level 1
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString target;
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString data;
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString data;
 
     // interface LinkStyle from DOM Level 2 Style Sheets
     readonly attribute StyleSheet sheet;
diff --git a/core/dom/Range.idl b/core/dom/Range.idl
index 3504bad..f816069 100644
--- a/core/dom/Range.idl
+++ b/core/dom/Range.idl
@@ -20,7 +20,8 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
+    Constructor,
+    CallWith=ScriptExecutionContext
 ] interface Range {
 
     [GetterRaisesException] readonly attribute Node startContainer;
diff --git a/core/dom/SecurityPolicyViolationEvent.idl b/core/dom/SecurityPolicyViolationEvent.idl
index 590d8e6..b214e6f 100644
--- a/core/dom/SecurityPolicyViolationEvent.idl
+++ b/core/dom/SecurityPolicyViolationEvent.idl
@@ -23,7 +23,8 @@
  */
 
 [
-    ConstructorTemplate=Event,
+    NoInterfaceObject,
+    ConstructorTemplate=Event
 ] interface SecurityPolicyViolationEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString documentURI;
     [InitializedByEventConstructor] readonly attribute DOMString referrer;
diff --git a/core/dom/Text.idl b/core/dom/Text.idl
index 68e1b8d..9ccd7e0 100644
--- a/core/dom/Text.idl
+++ b/core/dom/Text.idl
@@ -17,8 +17,9 @@
  * Boston, MA 02110-1301, USA.
  */
 [
-    CustomToV8,
-    SkipVTableValidation,
+    Constructor([Default=NullString] optional DOMString data),
+    CallWith=ScriptExecutionContext,
+    CustomToV8
 ] interface Text : CharacterData {
 
     // DOM Level 1
@@ -27,7 +28,7 @@
 
     // Introduced in DOM Level 3:
     readonly attribute DOMString       wholeText;
-    [RaisesException] Text               replaceWholeText([Default=Undefined] optional DOMString content);
+    Text                               replaceWholeText([Default=Undefined] optional DOMString content);
     // ShadowAware API
     [ImplementedAs=insertionParentForBinding, PerWorldBindings] readonly attribute Node webkitInsertionParent;
 
diff --git a/core/dom/Touch.idl b/core/dom/Touch.idl
index 4625083..2d89c3b 100644
--- a/core/dom/Touch.idl
+++ b/core/dom/Touch.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Touch {
     readonly attribute long             clientX;
     readonly attribute long             clientY;
diff --git a/core/dom/TouchEvent.idl b/core/dom/TouchEvent.idl
index 236aff2..c0838a8 100644
--- a/core/dom/TouchEvent.idl
+++ b/core/dom/TouchEvent.idl
@@ -23,7 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface TouchEvent : UIEvent {
+[
+    NoInterfaceObject
+] interface TouchEvent : UIEvent {
     readonly attribute TouchList touches;
     readonly attribute TouchList targetTouches;
     readonly attribute TouchList changedTouches;
diff --git a/core/dom/TouchList.idl b/core/dom/TouchList.idl
index 0034249..19900ac 100644
--- a/core/dom/TouchList.idl
+++ b/core/dom/TouchList.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface TouchList {
     readonly attribute unsigned long length;
 
diff --git a/core/dom/TreeWalker.idl b/core/dom/TreeWalker.idl
index 7a81fec..2188bef 100644
--- a/core/dom/TreeWalker.idl
+++ b/core/dom/TreeWalker.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface TreeWalker {
     readonly attribute Node root;
     readonly attribute unsigned long whatToShow;
diff --git a/core/dom/ShadowRoot.idl b/core/dom/shadow/ShadowRoot.idl
similarity index 95%
rename from core/dom/ShadowRoot.idl
rename to core/dom/shadow/ShadowRoot.idl
index 8d95548..39488df 100644
--- a/core/dom/ShadowRoot.idl
+++ b/core/dom/shadow/ShadowRoot.idl
@@ -24,7 +24,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface ShadowRoot : DocumentFragment {
+[
+    NoInterfaceObject
+] interface ShadowRoot : DocumentFragment {
     readonly attribute Element activeElement;
     attribute boolean applyAuthorStyles;
     attribute boolean resetStyleInheritance;
@@ -32,7 +34,7 @@
     [TreatNullAs=NullString, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
 
     [RaisesException] Node cloneNode([Default=Undefined] optional boolean deep);
-    DOMSelection getSelection();
+    Selection getSelection();
     Element getElementById([Default=Undefined] optional DOMString elementId);
     NodeList getElementsByClassName([Default=Undefined] optional DOMString className);
     NodeList getElementsByTagName([Default=Undefined] optional DOMString tagName);
diff --git a/core/fileapi/FileError.idl b/core/fileapi/FileError.idl
index 7116324..46c910f 100644
--- a/core/fileapi/FileError.idl
+++ b/core/fileapi/FileError.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface FileError {
     // FIXME: Some of constant names are already defined in DOMException.h for Objective-C binding and we cannot have the same names here (they are translated into a enum in the same namespace).
     const unsigned short NOT_FOUND_ERR = 1;
diff --git a/core/fileapi/FileException.idl b/core/fileapi/FileException.idl
index b6221df..c64d716 100644
--- a/core/fileapi/FileException.idl
+++ b/core/fileapi/FileException.idl
@@ -29,8 +29,8 @@
  */
 
 [
-    DoNotCheckConstants,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    DoNotCheckConstants
 ] exception FileException {
 
     readonly attribute unsigned short   code;
diff --git a/core/fileapi/FileList.idl b/core/fileapi/FileList.idl
index 4ef8bf6..b0a09ef 100644
--- a/core/fileapi/FileList.idl
+++ b/core/fileapi/FileList.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface FileList {
     readonly attribute unsigned long length;
     getter File item(unsigned long index);
diff --git a/core/fileapi/FileReaderSync.idl b/core/fileapi/FileReaderSync.idl
index a36e4c3..1920a53 100644
--- a/core/fileapi/FileReaderSync.idl
+++ b/core/fileapi/FileReaderSync.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     Constructor
 ] interface FileReaderSync {
     [CallWith=ScriptExecutionContext, RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
diff --git a/core/html/DOMSettableTokenList.idl b/core/html/DOMSettableTokenList.idl
index ab242f7..18142d0 100644
--- a/core/html/DOMSettableTokenList.idl
+++ b/core/html/DOMSettableTokenList.idl
@@ -22,9 +22,8 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    SkipVTableValidation
-] interface DOMSettableTokenList : DOMTokenList {
+interface DOMSettableTokenList : DOMTokenList {
+    [TreatReturnedNullStringAs=Null, ImplementedAs=item] getter DOMString(unsigned long index);
     attribute DOMString value;
 };
 
diff --git a/core/html/DOMTokenList.idl b/core/html/DOMTokenList.idl
index 64bc636..bfc142a 100644
--- a/core/html/DOMTokenList.idl
+++ b/core/html/DOMTokenList.idl
@@ -23,8 +23,7 @@
  */
 
 [
-    GenerateIsReachable=ImplElementRoot,
-    SkipVTableValidation
+    GenerateIsReachable=element
 ] interface DOMTokenList {
     readonly attribute unsigned long length;
     [TreatReturnedNullStringAs=Null] getter DOMString item(unsigned long index);
diff --git a/core/html/DOMFormData.idl b/core/html/FormData.idl
similarity index 95%
rename from core/html/DOMFormData.idl
rename to core/html/FormData.idl
index 25d9ed1..3652d4e 100644
--- a/core/html/DOMFormData.idl
+++ b/core/html/FormData.idl
@@ -30,9 +30,8 @@
 
 [
     CustomConstructor(optional HTMLFormElement form),
-    InterfaceName=FormData,
-    ImplementationLacksVTable
-] interface DOMFormData {
+    ImplementedAs=DOMFormData
+] interface FormData {
     // void append(DOMString name, DOMString value);
     // void append(DOMString name, Blob value, optional DOMString filename);
     [Custom] void append([Default=Undefined] optional DOMString name, 
diff --git a/core/html/HTMLAllCollection.idl b/core/html/HTMLAllCollection.idl
index f421caf..e43def6 100644
--- a/core/html/HTMLAllCollection.idl
+++ b/core/html/HTMLAllCollection.idl
@@ -24,14 +24,14 @@
  */
 
 [
-    CustomNamedGetter,
-    CustomCall,
+    CustomLegacyCall,
     MasqueradesAsUndefined,
-    GenerateIsReachable=ImplOwnerNodeRoot,
-    DependentLifetime,
+    GenerateIsReachable=ownerNode,
+    DependentLifetime
 ] interface HTMLAllCollection {
     readonly attribute unsigned long length;
     [Custom] getter Node item([Default=Undefined] optional unsigned long index);
+    [ImplementedAs=anonymousNamedGetter] getter (NodeList or Node)(DOMString name);
     [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 e5f8707..b7ae3c2 100644
--- a/core/html/HTMLAppletElement.idl
+++ b/core/html/HTMLAppletElement.idl
@@ -23,7 +23,7 @@
     CustomNamedSetter,
     CustomIndexedGetter,
     CustomIndexedSetter,
-    CustomCall
+    CustomLegacyCall
 ] interface HTMLAppletElement : HTMLElement {
     [Reflect] attribute DOMString align;
     [Reflect] attribute DOMString alt;
diff --git a/core/html/HTMLAudioElement.idl b/core/html/HTMLAudioElement.idl
index 3be47e5..b4e9004 100644
--- a/core/html/HTMLAudioElement.idl
+++ b/core/html/HTMLAudioElement.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    EnabledAtRuntime=media,
     NamedConstructor=Audio([Default=NullString] optional DOMString src)
 ] interface HTMLAudioElement : HTMLMediaElement {
 };
diff --git a/core/html/HTMLCollection.idl b/core/html/HTMLCollection.idl
index ee1d158..4e32829 100644
--- a/core/html/HTMLCollection.idl
+++ b/core/html/HTMLCollection.idl
@@ -20,10 +20,8 @@
 
 [
     CustomToV8,
-    GenerateIsReachable=ImplOwnerNodeRoot,
-    DependentLifetime,
-    
-    SkipVTableValidation
+    GenerateIsReachable=ownerNode,
+    DependentLifetime
 ] interface HTMLCollection {
     readonly attribute unsigned long length;
     getter Node item([Default=Undefined] optional unsigned long index);
diff --git a/core/html/HTMLDataListElement.idl b/core/html/HTMLDataListElement.idl
index 13fdaa4..f87df9a 100644
--- a/core/html/HTMLDataListElement.idl
+++ b/core/html/HTMLDataListElement.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    Conditional=DATALIST_ELEMENT,
+    EnabledAtRuntime=DataListElement
 ] interface HTMLDataListElement : HTMLElement {
     readonly attribute HTMLCollection options;
 };
diff --git a/core/html/HTMLDetailsElement.idl b/core/html/HTMLDetailsElement.idl
index 8909fc8..363785a 100644
--- a/core/html/HTMLDetailsElement.idl
+++ b/core/html/HTMLDetailsElement.idl
@@ -17,7 +17,9 @@
  * Boston, MA 02110-1301, USA.
  */
 
-interface HTMLDetailsElement : HTMLElement {
+[
+    NoInterfaceObject
+] interface HTMLDetailsElement : HTMLElement {
     [Reflect] attribute boolean open;
 };
 
diff --git a/core/html/HTMLDialogElement.idl b/core/html/HTMLDialogElement.idl
index 874cbcf..3fddf94 100644
--- a/core/html/HTMLDialogElement.idl
+++ b/core/html/HTMLDialogElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    SkipVTableValidation
+    EnabledPerContext=dialogElement
 ] interface HTMLDialogElement : HTMLElement {
     [Reflect] attribute boolean open;
     [RaisesException] void close();
diff --git a/core/html/HTMLDivElement.idl b/core/html/HTMLDivElement.idl
index dd17326..5793564 100644
--- a/core/html/HTMLDivElement.idl
+++ b/core/html/HTMLDivElement.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface HTMLDivElement : HTMLElement {
     [Reflect] attribute DOMString align;
 };
diff --git a/core/html/HTMLDocument.idl b/core/html/HTMLDocument.idl
index 91f2905..889f741 100644
--- a/core/html/HTMLDocument.idl
+++ b/core/html/HTMLDocument.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomToV8,
-    SkipVTableValidation
+    CustomToV8
 ] interface HTMLDocument : Document {
     [Custom] void open();
     void close();
@@ -33,12 +32,9 @@
 
     // Extensions
 
-    [Replaceable] attribute HTMLAllCollection all;
+    [Replaceable] readonly attribute HTMLAllCollection all;
 
-    void clear();
-
-    void captureEvents();
-    void releaseEvents();
+    [DeprecateAs=DocumentClear] void clear();
 
     readonly attribute long width;
     readonly attribute long height;
diff --git a/core/html/HTMLElement.idl b/core/html/HTMLElement.idl
index 78e4a5e..8bcdc4b 100644
--- a/core/html/HTMLElement.idl
+++ b/core/html/HTMLElement.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomToV8,
-    SkipVTableValidation
+    CustomToV8
 ] interface HTMLElement : Element {
              // 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.
@@ -37,7 +36,7 @@
              [Reflect] attribute DOMString accessKey;
 
     // Extensions
-             [TreatNullAs=NullString, DeliverCustomElementCallbacks, SetterRaisesException] attribute DOMString innerHTML;
+             [TreatNullAs=NullString, DeliverCustomElementCallbacks, PerWorldBindings, ActivityLog=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
              [TreatNullAs=NullString, SetterRaisesException] attribute DOMString innerText;
              [TreatNullAs=NullString, DeliverCustomElementCallbacks, SetterRaisesException] attribute DOMString outerHTML;
              [TreatNullAs=NullString, SetterRaisesException] attribute DOMString outerText;
@@ -49,7 +48,7 @@
     [RaisesException] void insertAdjacentText([Default=Undefined] optional DOMString where,
                             [Default=Undefined] optional DOMString text);
 
-    readonly attribute HTMLCollection children;
+    [EnabledAtRuntime=imeAPI] InputMethodContext getInputContext();
 
              [TreatNullAs=NullString, SetterRaisesException] attribute DOMString contentEditable;
     readonly attribute boolean isContentEditable;
diff --git a/core/html/HTMLEmbedElement.idl b/core/html/HTMLEmbedElement.idl
index b702089..d479449 100644
--- a/core/html/HTMLEmbedElement.idl
+++ b/core/html/HTMLEmbedElement.idl
@@ -21,10 +21,9 @@
 [
     CustomNamedGetter,
     CustomNamedSetter,
-    CustomCall,
+    CustomLegacyCall,
     CustomIndexedGetter,
-    CustomIndexedSetter,
-    SkipVTableValidation
+    CustomIndexedSetter
 ] interface HTMLEmbedElement : HTMLElement {
 [Reflect] attribute DOMString align;
 [Reflect] attribute DOMString height;
diff --git a/core/html/HTMLFormControlsCollection.idl b/core/html/HTMLFormControlsCollection.idl
index e590abf..a236e3f 100644
--- a/core/html/HTMLFormControlsCollection.idl
+++ b/core/html/HTMLFormControlsCollection.idl
@@ -19,9 +19,10 @@
  */
 
 [
-    CustomNamedGetter,
-    GenerateIsReachable=ImplOwnerNodeRoot,
-    DependentLifetime,
+    GenerateIsReachable=ownerNode,
+    DependentLifetime
 ] interface HTMLFormControlsCollection : HTMLCollection {
+    [ImplementedAs=item] getter Node([Default=Undefined] optional unsigned long index);
     [Custom] Node namedItem([Default=Undefined] optional DOMString name);
+    [ImplementedAs=namedGetter] getter (RadioNodeList or Node)(DOMString name);
 };
diff --git a/core/html/HTMLFormElement.idl b/core/html/HTMLFormElement.idl
index fdb1468..7ae2104 100644
--- a/core/html/HTMLFormElement.idl
+++ b/core/html/HTMLFormElement.idl
@@ -18,10 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    CustomIndexedGetter,
-    CustomNamedGetter
-] interface HTMLFormElement : HTMLElement {
+interface HTMLFormElement : HTMLElement {
     [Reflect=accept_charset] attribute DOMString acceptCharset;
     [Reflect, URL] attribute DOMString action;
     [Reflect] attribute DOMString autocomplete;
@@ -34,6 +31,8 @@
 
     readonly attribute HTMLCollection elements;
     readonly attribute long length;
+    [ImplementedAs=item] getter Node(unsigned long index);
+    [ImplementedAs=anonymousNamedGetter, OverrideBuiltins] getter (NodeList or Node)(DOMString name);
 
     [ImplementedAs=submitFromJavaScript] void submit();
     void reset();
diff --git a/core/html/HTMLFrameSetElement.idl b/core/html/HTMLFrameSetElement.idl
index 348251c..a928298 100644
--- a/core/html/HTMLFrameSetElement.idl
+++ b/core/html/HTMLFrameSetElement.idl
@@ -18,9 +18,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    CustomNamedGetter
-] interface HTMLFrameSetElement : HTMLElement {
+interface HTMLFrameSetElement : HTMLElement {
+    [ImplementedAs=anonymousNamedGetter, OverrideBuiltins] getter DOMWindow (DOMString name);
     [Reflect] attribute DOMString cols;
     [Reflect] attribute DOMString rows;
 
diff --git a/core/html/HTMLImageElement.idl b/core/html/HTMLImageElement.idl
index 3287fd6..360b2b5 100644
--- a/core/html/HTMLImageElement.idl
+++ b/core/html/HTMLImageElement.idl
@@ -19,7 +19,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface HTMLImageElement : HTMLElement {
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString align;
diff --git a/core/html/HTMLInputElement.idl b/core/html/HTMLInputElement.idl
index 2a4184c..00e4a1e 100644
--- a/core/html/HTMLInputElement.idl
+++ b/core/html/HTMLInputElement.idl
@@ -20,7 +20,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface HTMLInputElement : HTMLElement {
     [Reflect] attribute DOMString accept;
     [Reflect] attribute DOMString alt;
@@ -39,7 +38,7 @@
     [Reflect] attribute DOMString formTarget;
     attribute unsigned long height;
     attribute boolean indeterminate;
-    [Conditional=DATALIST_ELEMENT] readonly attribute HTMLElement list;
+    [EnabledAtRuntime=DataListElement] readonly attribute HTMLElement list;
     [Reflect] attribute DOMString max;
     [SetterRaisesException] attribute long maxLength;
     [Reflect] attribute DOMString min;
@@ -72,9 +71,9 @@
     readonly attribute NodeList labels;
 
     void select();
-    [Custom] attribute long selectionStart;
-    [Custom] attribute long selectionEnd;
-    [Custom] attribute DOMString selectionDirection;
+    [RaisesException, ImplementedAs=selectionStartForBinding] attribute long selectionStart;
+    [RaisesException, ImplementedAs=selectionEndForBinding] attribute long selectionEnd;
+    [RaisesException, ImplementedAs=selectionDirectionForBinding] attribute DOMString selectionDirection;
 
     [RaisesException] void setRangeText(DOMString replacement);
     [RaisesException] void setRangeText(DOMString replacement,
@@ -82,9 +81,10 @@
                         unsigned long end,
                         [Default=NullString] optional DOMString selectionMode);
 
-    [Custom] void setSelectionRange([Default=Undefined] optional long start,
-                                    [Default=Undefined] optional long end,
-                                    optional DOMString direction);
+    [RaisesException, ImplementedAs=setSelectionRangeForBinding]
+    void setSelectionRange([Default=Undefined] optional long start,
+                           [Default=Undefined] optional long end,
+                           optional DOMString direction);
 
     // Non-standard attributes
     [Reflect] attribute DOMString align;
diff --git a/core/html/HTMLLinkElement.idl b/core/html/HTMLLinkElement.idl
index 35f1e31..e12ff3d 100644
--- a/core/html/HTMLLinkElement.idl
+++ b/core/html/HTMLLinkElement.idl
@@ -27,7 +27,7 @@
     [Reflect] attribute DOMString media;
     [Reflect] attribute DOMString rel;
     [Reflect] attribute DOMString rev;
-    [Custom] attribute DOMSettableTokenList sizes;
+    [CustomSetter] attribute DOMSettableTokenList sizes;
     [Reflect] attribute DOMString target;
     [Reflect] attribute DOMString type;
 
diff --git a/core/html/HTMLMediaElement.idl b/core/html/HTMLMediaElement.idl
index 0dbe3ed..214b391 100644
--- a/core/html/HTMLMediaElement.idl
+++ b/core/html/HTMLMediaElement.idl
@@ -20,10 +20,11 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject
 ] interface HTMLMediaElement : HTMLElement {
 
@@ -43,13 +44,7 @@
 
 readonly attribute TimeRanges buffered;
 void load();
-#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
     DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem);
-#elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
-    DOMString canPlayType([Default=Undefined] optional DOMString type, [Default=Undefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] optional DOMString keySystem);
-#else
-DOMString canPlayType([Default=Undefined] optional DOMString type);
-#endif
 
 // ready state
 const unsigned short HAVE_NOTHING = 0;
@@ -92,28 +87,22 @@
 readonly attribute unsigned long webkitAudioDecodedByteCount;
 readonly attribute unsigned long webkitVideoDecodedByteCount;
 
-#if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
+// 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);
+
+[EnabledAtRuntime=legacyEncryptedMedia] attribute EventListener onwebkitkeyadded;
+[EnabledAtRuntime=legacyEncryptedMedia] attribute EventListener onwebkitkeyerror;
+[EnabledAtRuntime=legacyEncryptedMedia] attribute EventListener onwebkitkeymessage;
+[EnabledAtRuntime=legacyEncryptedMedia] attribute EventListener onwebkitneedkey;
 
 #if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
-[EnabledAtRuntime=encryptedMedia, RaisesException, DeprecateAs=PrefixedMediaGenerateKeyRequest] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData);
-[EnabledAtRuntime=encryptedMedia, RaisesException, DeprecateAs=PrefixedMediaAddKey] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId);
-#else
-[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, optional Uint8Array initData);
-[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, optional Uint8Array initData, [Default=NullString] optional DOMString sessionId);
-#endif
-[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Default=NullString] optional DOMString sessionId);
-
-    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyadded;
-    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyerror;
-    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeymessage;
-#endif
-    [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitneedkey;
-#if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
-    [EnabledAtRuntime=encryptedMedia] attribute MediaKeys mediaKeys;
+[EnabledAtRuntime=encryptedMedia] attribute MediaKeys mediaKeys;
 #endif
 
-[EnabledAtRuntime=webkitVideoTrack, RaisesException] TextTrack addTextTrack(DOMString kind, optional DOMString label, optional DOMString language);
-[EnabledAtRuntime=webkitVideoTrack] readonly attribute TextTrackList textTracks;
+[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;
diff --git a/core/html/HTMLObjectElement.idl b/core/html/HTMLObjectElement.idl
index 6082baa..a3847f3 100644
--- a/core/html/HTMLObjectElement.idl
+++ b/core/html/HTMLObjectElement.idl
@@ -23,7 +23,7 @@
     CustomNamedSetter,
     CustomIndexedGetter,
     CustomIndexedSetter,
-    CustomCall
+    CustomLegacyCall
 ] interface HTMLObjectElement : HTMLElement {
     readonly attribute HTMLFormElement form;
     [Reflect] attribute DOMString code;
diff --git a/core/html/HTMLOptionsCollection.idl b/core/html/HTMLOptionsCollection.idl
index f5ee73d..84ae0f4 100644
--- a/core/html/HTMLOptionsCollection.idl
+++ b/core/html/HTMLOptionsCollection.idl
@@ -20,13 +20,13 @@
 
 [
     CustomIndexedSetter,
-    CustomNamedGetter,
-    GenerateIsReachable=ImplOwnerNodeRoot,
-    CustomIndexedGetter,
-    DependentLifetime,
+    GenerateIsReachable=ownerNode,
+    DependentLifetime
 ] interface HTMLOptionsCollection : HTMLCollection {
     attribute long selectedIndex;
     [CustomSetter, SetterRaisesException] attribute unsigned long length;
+    [ImplementedAs=item] getter Node(unsigned long index);
+    [ImplementedAs=anonymousNamedGetter] getter (NodeList or Node)(DOMString name);
 
     [Custom] Node namedItem([Default=Undefined] optional DOMString name);
 
diff --git a/core/html/HTMLSelectElement.idl b/core/html/HTMLSelectElement.idl
index 5fd7bb5..858402b 100644
--- a/core/html/HTMLSelectElement.idl
+++ b/core/html/HTMLSelectElement.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomIndexedSetter,
-    SkipVTableValidation
+    CustomIndexedSetter
 ] interface HTMLSelectElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
     [Reflect] attribute boolean disabled;
diff --git a/core/html/HTMLSourceElement.idl b/core/html/HTMLSourceElement.idl
index 67e69f7..763a084 100644
--- a/core/html/HTMLSourceElement.idl
+++ b/core/html/HTMLSourceElement.idl
@@ -23,7 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-interface HTMLSourceElement : HTMLElement {
+[
+    NoInterfaceObject
+] interface HTMLSourceElement : HTMLElement {
 [Reflect, URL] attribute DOMString src;
     attribute DOMString type;
     attribute DOMString media;
diff --git a/core/html/HTMLSpanElement.idl b/core/html/HTMLSpanElement.idl
index 49eb843..e4f5013 100644
--- a/core/html/HTMLSpanElement.idl
+++ b/core/html/HTMLSpanElement.idl
@@ -25,7 +25,6 @@
 
 // http://www.whatwg.org/specs/web-apps/current-work/#htmlspanelement
 [
-    SkipVTableValidation
 ] interface HTMLSpanElement : HTMLElement {
 };
 
diff --git a/core/html/HTMLTemplateElement.idl b/core/html/HTMLTemplateElement.idl
index 8e91f1c..46c6696 100644
--- a/core/html/HTMLTemplateElement.idl
+++ b/core/html/HTMLTemplateElement.idl
@@ -29,6 +29,6 @@
  */
 
 interface HTMLTemplateElement : HTMLElement {
-    [CacheAttributeForGC] readonly attribute DocumentFragment content;
+    [KeepAttributeAliveForGC] readonly attribute DocumentFragment content;
 };
 
diff --git a/core/html/HTMLTrackElement.idl b/core/html/HTMLTrackElement.idl
index f0d21f6..d27ae46 100644
--- a/core/html/HTMLTrackElement.idl
+++ b/core/html/HTMLTrackElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack
+    EnabledAtRuntime=videoTrack
 ] interface HTMLTrackElement : HTMLElement {
     attribute DOMString kind;
     [Reflect, URL] attribute DOMString src;
diff --git a/core/html/HTMLUnknownElement.idl b/core/html/HTMLUnknownElement.idl
index 7d7bbc3..0149113 100644
--- a/core/html/HTMLUnknownElement.idl
+++ b/core/html/HTMLUnknownElement.idl
@@ -27,7 +27,6 @@
  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 [
-    SkipVTableValidation
 ] interface HTMLUnknownElement : HTMLElement {
 };
 
diff --git a/core/html/HTMLVideoElement.idl b/core/html/HTMLVideoElement.idl
index 5b0cf38..94a0c27 100644
--- a/core/html/HTMLVideoElement.idl
+++ b/core/html/HTMLVideoElement.idl
@@ -23,7 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-interface HTMLVideoElement : HTMLMediaElement {
+[
+    NoInterfaceObject
+] interface HTMLVideoElement : HTMLMediaElement {
     [Reflect] attribute unsigned long width;
     [Reflect] attribute unsigned long height;
     readonly attribute unsigned long videoWidth;
diff --git a/core/html/ImageData.idl b/core/html/ImageData.idl
index 180eb78..ca7d61c 100644
--- a/core/html/ImageData.idl
+++ b/core/html/ImageData.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    CustomToV8,
-    ImplementationLacksVTable
+    CustomToV8
 ] interface ImageData {
     readonly attribute long width;
     readonly attribute long height;
diff --git a/core/html/MediaController.idl b/core/html/MediaController.idl
index 675cc4d..cedb4c3 100644
--- a/core/html/MediaController.idl
+++ b/core/html/MediaController.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Constructor,
     CallWith=ScriptExecutionContext,
     EventTarget
diff --git a/core/html/MediaError.idl b/core/html/MediaError.idl
index cbc4eb2..0e12164 100644
--- a/core/html/MediaError.idl
+++ b/core/html/MediaError.idl
@@ -24,14 +24,12 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] 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;
-#if (defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA) || (defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2)
       const unsigned short MEDIA_ERR_ENCRYPTED = 5;
-#endif
       readonly attribute unsigned short code;
 };
diff --git a/core/html/MediaKeyError.idl b/core/html/MediaKeyError.idl
index 597bfea..03188d0 100644
--- a/core/html/MediaKeyError.idl
+++ b/core/html/MediaKeyError.idl
@@ -24,9 +24,7 @@
  */
 
 [
-    Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2,
-    EnabledAtRuntime=encryptedMedia, 
-    ImplementationLacksVTable
+    EnabledAtRuntime=encryptedMediaAnyVersion
 ] interface MediaKeyError {
     const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
     const unsigned short MEDIA_KEYERR_CLIENT = 2;
@@ -35,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] readonly attribute unsigned long systemCode;
+    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] readonly attribute unsigned long systemCode;
 };
diff --git a/core/html/MediaKeyEvent.idl b/core/html/MediaKeyEvent.idl
index 546a93b..8a5adc3 100644
--- a/core/html/MediaKeyEvent.idl
+++ b/core/html/MediaKeyEvent.idl
@@ -24,9 +24,8 @@
  */
 
 [
-    Conditional=ENCRYPTED_MEDIA,
-    EnabledAtRuntime=encryptedMedia,
-    ConstructorTemplate=Event 
+    EnabledAtRuntime=legacyEncryptedMedia,
+    ConstructorTemplate=Event
 ] interface MediaKeyEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString keySystem;
     [InitializedByEventConstructor] readonly attribute DOMString sessionId;
diff --git a/core/html/RadioNodeList.idl b/core/html/RadioNodeList.idl
index d3132f0..498c7a7 100644
--- a/core/html/RadioNodeList.idl
+++ b/core/html/RadioNodeList.idl
@@ -24,6 +24,8 @@
  */
 
 [
+    NoInterfaceObject
 ] interface RadioNodeList : NodeList {
     attribute DOMString value;
+    [ImplementedAs=item] getter Node([IsIndex,Default=Undefined] optional unsigned long index);
 };
diff --git a/core/html/TextMetrics.idl b/core/html/TextMetrics.idl
index 7677784..5f217b8 100644
--- a/core/html/TextMetrics.idl
+++ b/core/html/TextMetrics.idl
@@ -23,7 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 [
-    ImplementationLacksVTable,
 ] interface TextMetrics {
     readonly attribute float width;
 };
diff --git a/core/html/TimeRanges.idl b/core/html/TimeRanges.idl
index 3847b7a..eba7735 100644
--- a/core/html/TimeRanges.idl
+++ b/core/html/TimeRanges.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface TimeRanges {
     readonly attribute unsigned long length;
     [RaisesException] double start(unsigned long index);
diff --git a/core/html/DOMURL.idl b/core/html/URL.idl
similarity index 92%
rename from core/html/DOMURL.idl
rename to core/html/URL.idl
index c9fdd0a..96e7060 100644
--- a/core/html/DOMURL.idl
+++ b/core/html/URL.idl
@@ -26,10 +26,9 @@
 
 [
     Constructor,
-    InterfaceName=URL,
-    ImplementationLacksVTable
-] interface DOMURL {
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
+    ImplementedAs=DOMURL
+] interface URL {
+    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(WebKitMediaSource? source);
     [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
     [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
     [CallWith=ScriptExecutionContext] static void revokeObjectURL(DOMString url);
diff --git a/core/html/ValidityState.idl b/core/html/ValidityState.idl
index 963c830..582baf9 100644
--- a/core/html/ValidityState.idl
+++ b/core/html/ValidityState.idl
@@ -21,7 +21,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface ValidityState {
     readonly attribute boolean         valueMissing;
     readonly attribute boolean         typeMismatch;
diff --git a/core/html/canvas/ArrayBuffer.idl b/core/html/canvas/ArrayBuffer.idl
index b56950f..5aa02b3 100644
--- a/core/html/canvas/ArrayBuffer.idl
+++ b/core/html/canvas/ArrayBuffer.idl
@@ -24,9 +24,7 @@
  */
 
 [
-    CustomConstructor(unsigned long length),
-    ImplementationNamespace=WTF,
-    ImplementationLacksVTable
+    CustomConstructor(unsigned long length)
 ] interface ArrayBuffer {
     readonly attribute unsigned long byteLength;
     ArrayBuffer slice(long begin, optional long end);
diff --git a/core/html/canvas/ArrayBufferView.idl b/core/html/canvas/ArrayBufferView.idl
index 1ed4f9f..9626c46 100644
--- a/core/html/canvas/ArrayBufferView.idl
+++ b/core/html/canvas/ArrayBufferView.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    CustomToV8,
-    ImplementationNamespace=WTF
+    CustomToV8
 ] interface ArrayBufferView {
     readonly attribute ArrayBuffer buffer;
     readonly attribute unsigned long byteOffset;
diff --git a/core/html/canvas/Canvas2DContextAttributes.idl b/core/html/canvas/Canvas2DContextAttributes.idl
index f266a57..d6178d4 100644
--- a/core/html/canvas/Canvas2DContextAttributes.idl
+++ b/core/html/canvas/Canvas2DContextAttributes.idl
@@ -24,6 +24,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[EnabledAtRuntime=experimentalCanvasFeatures] interface Canvas2DContextAttributes {
+[
+    NoInterfaceObject,
+    EnabledAtRuntime=experimentalCanvasFeatures
+] interface Canvas2DContextAttributes {
     attribute boolean alpha;
 };
diff --git a/core/html/canvas/CanvasGradient.idl b/core/html/canvas/CanvasGradient.idl
index 6ecd51b..0e07d5e 100644
--- a/core/html/canvas/CanvasGradient.idl
+++ b/core/html/canvas/CanvasGradient.idl
@@ -23,7 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 [
-    ImplementationLacksVTable
 ] interface CanvasGradient {
 
     [RaisesException] void addColorStop([Default=Undefined] optional float offset, 
diff --git a/core/html/canvas/CanvasPattern.idl b/core/html/canvas/CanvasPattern.idl
index 4ded936..68003c7 100644
--- a/core/html/canvas/CanvasPattern.idl
+++ b/core/html/canvas/CanvasPattern.idl
@@ -23,7 +23,6 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 [
-    ImplementationLacksVTable
 ] interface CanvasPattern {
 };
 
diff --git a/core/html/canvas/CanvasRenderingContext.idl b/core/html/canvas/CanvasRenderingContext.idl
index 819ae77..56363a2 100644
--- a/core/html/canvas/CanvasRenderingContext.idl
+++ b/core/html/canvas/CanvasRenderingContext.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     CustomToV8
 ] interface CanvasRenderingContext {
     readonly attribute HTMLCanvasElement canvas;
diff --git a/core/html/canvas/CanvasRenderingContext2D.idl b/core/html/canvas/CanvasRenderingContext2D.idl
index 98df7fa..7e3d07f 100644
--- a/core/html/canvas/CanvasRenderingContext2D.idl
+++ b/core/html/canvas/CanvasRenderingContext2D.idl
@@ -30,37 +30,17 @@
     void save();
     void restore();
 
-    void scale([Default=Undefined] optional float sx,
-               [Default=Undefined] optional float sy);
-    void rotate([Default=Undefined] optional float angle);
-    void translate([Default=Undefined] optional float tx,
-                   [Default=Undefined] optional float ty);
-    void transform([Default=Undefined] optional float m11,
-                   [Default=Undefined] optional float m12,
-                   [Default=Undefined] optional float m21,
-                   [Default=Undefined] optional float m22,
-                   [Default=Undefined] optional float dx,
-                   [Default=Undefined] optional float dy);
-    void setTransform([Default=Undefined] optional float m11,
-                      [Default=Undefined] optional float m12,
-                      [Default=Undefined] optional float m21,
-                      [Default=Undefined] optional float m22,
-                      [Default=Undefined] optional float dx,
-                      [Default=Undefined] optional float dy);
+    void scale(float sx, float sy);
+    void rotate(float angle);
+    void translate(float tx, float ty);
+    void transform(float m11, float m12, float m21, float m22, float dx, float dy);
+    void setTransform(float m11, float m12, float m21, float m22, float dx, float dy);
 
     attribute float globalAlpha;
     [TreatNullAs=NullString] attribute DOMString globalCompositeOperation;
 
-    [RaisesException] CanvasGradient createLinearGradient([Default=Undefined] optional float x0,
-                                        [Default=Undefined] optional float y0,
-                                        [Default=Undefined] optional float x1,
-                                        [Default=Undefined] optional float y1);
-    [RaisesException] CanvasGradient createRadialGradient([Default=Undefined] optional float x0,
-                                        [Default=Undefined] optional float y0,
-                                        [Default=Undefined] optional float r0,
-                                        [Default=Undefined] optional float x1,
-                                        [Default=Undefined] optional float y1,
-                                        [Default=Undefined] optional float r1);
+    [RaisesException] CanvasGradient createLinearGradient(float x0, float y0, float x1, float y1);
+    [RaisesException] CanvasGradient createRadialGradient(float x0, float y0, float r0, float x1, float y1, float r1);
 
     attribute float lineWidth;
     [TreatNullAs=NullString] attribute DOMString lineCap;
@@ -80,76 +60,45 @@
     // [Custom] attribute Array webkitLineDash;
     // attribute float webkitLineDashOffset;
 
-    void clearRect([Default=Undefined] optional float x,
-                   [Default=Undefined] optional float y,
-                   [Default=Undefined] optional float width,
-                   [Default=Undefined] optional float height);
-    void fillRect([Default=Undefined] optional float x,
-                  [Default=Undefined] optional float y,
-                  [Default=Undefined] optional float width,
-                  [Default=Undefined] optional float height);
+    void clearRect(float x, float y, float width, float height);
+    void fillRect(float x, float y, float width, float height);
 
     void beginPath();
 
-    attribute DOMPath currentPath;
+    attribute Path currentPath;
 
     // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
     void closePath();
-    void moveTo([Default=Undefined] optional float x,
-                [Default=Undefined] optional float y);
-    void lineTo([Default=Undefined] optional float x,
-                [Default=Undefined] optional float y);
-    void quadraticCurveTo([Default=Undefined] optional float cpx,
-                          [Default=Undefined] optional float cpy,
-                          [Default=Undefined] optional float x,
-                          [Default=Undefined] optional float y);
-    void bezierCurveTo([Default=Undefined] optional float cp1x,
-                       [Default=Undefined] optional float cp1y,
-                       [Default=Undefined] optional float cp2x,
-                       [Default=Undefined] optional float cp2y,
-                       [Default=Undefined] optional float x,
-                       [Default=Undefined] optional float y);
-    [RaisesException] void arcTo([Default=Undefined] optional float x1,
-               [Default=Undefined] optional float y1,
-               [Default=Undefined] optional float x2,
-               [Default=Undefined] optional float y2,
-               [Default=Undefined] optional float radius);
-    void rect([Default=Undefined] optional float x,
-              [Default=Undefined] optional float y,
-              [Default=Undefined] optional float width,
-              [Default=Undefined] optional float height);
-    [RaisesException] void arc([Default=Undefined] optional float x,
-             [Default=Undefined] optional float y,
-             [Default=Undefined] optional float radius,
-             [Default=Undefined] optional float startAngle,
-             [Default=Undefined] optional float endAngle,
-             [Default=Undefined] optional boolean anticlockwise);
+    void moveTo(float x, float y);
+    void lineTo(float x, float y);
+    void quadraticCurveTo(float cpx, float cpy, float x, float y);
+    void bezierCurveTo(float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
+    [RaisesException] void arcTo(float x1, float y1, float x2, float y2, float radius);
+    void rect(float x, float y, float width, float height);
+    [RaisesException] void arc(float x, float y, float radius, float startAngle, float endAngle, [Default=Undefined] optional boolean anticlockwise);
 
     void fill(optional CanvasWindingRule winding);
     void stroke();
     void clip(optional CanvasWindingRule winding);
-    boolean isPointInPath([Default=Undefined] optional float x,
-                          [Default=Undefined] optional float y,
-                          optional CanvasWindingRule winding);
-    boolean isPointInStroke([Default=Undefined] optional float x,
-                            [Default=Undefined] optional float y);
+    boolean isPointInPath(float x, float y, optional CanvasWindingRule winding);
+    boolean isPointInStroke(float x, float y);
 
     // text
     attribute DOMString font;
     attribute DOMString textAlign;
     attribute DOMString textBaseline;
 
-    TextMetrics measureText([Default=Undefined] optional DOMString text);
+    TextMetrics measureText(DOMString text);
 
     // other
 
-    void setAlpha([Default=Undefined] optional float alpha);
-    void setCompositeOperation([Default=Undefined] optional DOMString compositeOperation);
+    void setAlpha(float alpha);
+    void setCompositeOperation(DOMString compositeOperation);
 
-    void setLineWidth([Default=Undefined] optional float width);
-    void setLineCap([Default=Undefined] optional DOMString cap);
-    void setLineJoin([Default=Undefined] optional DOMString join);
-    void setMiterLimit([Default=Undefined] optional float limit);
+    void setLineWidth(float width);
+    void setLineCap(DOMString cap);
+    void setLineJoin(DOMString join);
+    void setMiterLimit(float limit);
 
     void clearShadow();
 
@@ -166,11 +115,7 @@
     void setFillColor(float r, float g, float b, float a);
     void setFillColor(float c, float m, float y, float k, float a);
 
-    void strokeRect([Default=Undefined] optional float x,
-                    [Default=Undefined] optional float y,
-                    [Default=Undefined] optional float width,
-                    [Default=Undefined] optional float height,
-                    optional float lineWidth);
+    void strokeRect(float x, float y, float width, float height);
 
     [RaisesException] void drawImage(HTMLImageElement? image, float x, float y);
     [RaisesException] void drawImage(HTMLImageElement? image, float x, float y, float width, float height);
@@ -207,11 +152,9 @@
     [Custom] attribute custom fillStyle;
 
     // pixel manipulation
-    [RaisesException] ImageData getImageData([Default=Undefined] optional float sx, [Default=Undefined] optional float sy,
-                           [Default=Undefined] optional float sw, [Default=Undefined] optional float sh);
+    [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh);
 
-    [RaisesException] ImageData webkitGetImageDataHD([Default=Undefined] optional float sx, [Default=Undefined] optional float sy,
-                                   [Default=Undefined] optional float sw, [Default=Undefined] optional float sh);
+    [RaisesException] ImageData webkitGetImageDataHD(float sx, float sy, float sw, float sh);
 
     readonly attribute float webkitBackingStorePixelRatio;
 
diff --git a/core/html/canvas/EXTDrawBuffers.idl b/core/html/canvas/EXTDrawBuffers.idl
index f348e15..e48a70b 100644
--- a/core/html/canvas/EXTDrawBuffers.idl
+++ b/core/html/canvas/EXTDrawBuffers.idl
@@ -26,6 +26,7 @@
 typedef unsigned long GLenum;
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface EXTDrawBuffers {
diff --git a/core/html/canvas/EXTTextureFilterAnisotropic.idl b/core/html/canvas/EXTTextureFilterAnisotropic.idl
index d454a9b..46bd9dd 100644
--- a/core/html/canvas/EXTTextureFilterAnisotropic.idl
+++ b/core/html/canvas/EXTTextureFilterAnisotropic.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface EXTTextureFilterAnisotropic {
diff --git a/core/html/canvas/Float32Array.idl b/core/html/canvas/Float32Array.idl
index 306b7e3..4b872c5 100644
--- a/core/html/canvas/Float32Array.idl
+++ b/core/html/canvas/Float32Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=float,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Float32Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 4;
 
diff --git a/core/html/canvas/Float64Array.idl b/core/html/canvas/Float64Array.idl
index 51870fa..5e67f41 100644
--- a/core/html/canvas/Float64Array.idl
+++ b/core/html/canvas/Float64Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=double,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Float64Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 8;
 
diff --git a/core/html/canvas/Int16Array.idl b/core/html/canvas/Int16Array.idl
index ffa5682..f7fa0cb 100644
--- a/core/html/canvas/Int16Array.idl
+++ b/core/html/canvas/Int16Array.idl
@@ -26,9 +26,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=short,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Int16Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 2;
 
diff --git a/core/html/canvas/Int32Array.idl b/core/html/canvas/Int32Array.idl
index c46242b..b0a42b2 100644
--- a/core/html/canvas/Int32Array.idl
+++ b/core/html/canvas/Int32Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=int,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Int32Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 4;
 
diff --git a/core/html/canvas/Int8Array.idl b/core/html/canvas/Int8Array.idl
index 5cb46ab..299db9b 100644
--- a/core/html/canvas/Int8Array.idl
+++ b/core/html/canvas/Int8Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=signed char,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Int8Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 1;
 
diff --git a/core/html/canvas/OESElementIndexUint.idl b/core/html/canvas/OESElementIndexUint.idl
index 6e76baa..0eb77f8 100644
--- a/core/html/canvas/OESElementIndexUint.idl
+++ b/core/html/canvas/OESElementIndexUint.idl
@@ -24,6 +24,7 @@
  */
 
 [
-    Conditional=WEBGL,
+    NoInterfaceObject,
+    Conditional=WEBGL
 ] interface OESElementIndexUint {
 };
diff --git a/core/html/canvas/OESStandardDerivatives.idl b/core/html/canvas/OESStandardDerivatives.idl
index 6dbfd5d..6ac0e43 100644
--- a/core/html/canvas/OESStandardDerivatives.idl
+++ b/core/html/canvas/OESStandardDerivatives.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface OESStandardDerivatives {
diff --git a/core/html/canvas/OESTextureFloat.idl b/core/html/canvas/OESTextureFloat.idl
index e58a7a3..b926f73 100644
--- a/core/html/canvas/OESTextureFloat.idl
+++ b/core/html/canvas/OESTextureFloat.idl
@@ -24,6 +24,7 @@
  */
 
 [
-    Conditional=WEBGL,
+    NoInterfaceObject,
+    Conditional=WEBGL
 ] interface OESTextureFloat {
 };
diff --git a/core/page/BarInfo.idl b/core/html/canvas/OESTextureFloatLinear.idl
similarity index 77%
copy from core/page/BarInfo.idl
copy to core/html/canvas/OESTextureFloatLinear.idl
index 41a6f5a..fc65a9f 100644
--- a/core/page/BarInfo.idl
+++ b/core/html/canvas/OESTextureFloatLinear.idl
@@ -1,18 +1,15 @@
 /*
- * Copyright (C) 2007 Apple Inc.  All rights reserved.
+ * 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:
  *
  * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer. 
+ *     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. 
+ *     documentation and/or other materials provided with the distribution.
  *
  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@@ -27,7 +24,7 @@
  */
 
 [
-] interface BarInfo {
-    readonly attribute boolean visible;
+    NoInterfaceObject,
+    Conditional=WEBGL
+] interface OESTextureFloatLinear {
 };
-
diff --git a/core/html/canvas/OESTextureHalfFloat.idl b/core/html/canvas/OESTextureHalfFloat.idl
index d95898c..597ecf8 100644
--- a/core/html/canvas/OESTextureHalfFloat.idl
+++ b/core/html/canvas/OESTextureHalfFloat.idl
@@ -26,6 +26,7 @@
 typedef unsigned long GLenum;
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface OESTextureHalfFloat {
diff --git a/core/page/BarInfo.idl b/core/html/canvas/OESTextureHalfFloatLinear.idl
similarity index 77%
copy from core/page/BarInfo.idl
copy to core/html/canvas/OESTextureHalfFloatLinear.idl
index 41a6f5a..44ee4b5 100644
--- a/core/page/BarInfo.idl
+++ b/core/html/canvas/OESTextureHalfFloatLinear.idl
@@ -1,18 +1,15 @@
 /*
- * Copyright (C) 2007 Apple Inc.  All rights reserved.
+ * 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:
  *
  * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer. 
+ *     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. 
+ *     documentation and/or other materials provided with the distribution.
  *
  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@@ -27,7 +24,7 @@
  */
 
 [
-] interface BarInfo {
-    readonly attribute boolean visible;
+    NoInterfaceObject,
+    Conditional=WEBGL
+] interface OESTextureHalfFloatLinear {
 };
-
diff --git a/core/html/canvas/OESVertexArrayObject.idl b/core/html/canvas/OESVertexArrayObject.idl
index 5de854f..9fcf9ab 100644
--- a/core/html/canvas/OESVertexArrayObject.idl
+++ b/core/html/canvas/OESVertexArrayObject.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL, 
     DoNotCheckConstants
 ] interface OESVertexArrayObject {
diff --git a/core/html/canvas/DOMPath.idl b/core/html/canvas/Path.idl
similarity index 97%
rename from core/html/canvas/DOMPath.idl
rename to core/html/canvas/Path.idl
index 9a68c72..14ed146 100644
--- a/core/html/canvas/DOMPath.idl
+++ b/core/html/canvas/Path.idl
@@ -29,12 +29,12 @@
 [
     EnabledAtRuntime=canvasPath,
     Constructor,
-    Constructor(DOMPath path),
+    Constructor(Path path),
 #if defined(ENABLE_SVG) && ENABLE_SVG
     Constructor(DOMString text),
 #endif
-    InterfaceName=Path
-] interface DOMPath {
+    ImplementedAs=DOMPath
+] interface Path {
 
     // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
     void closePath();
diff --git a/core/html/canvas/Uint16Array.idl b/core/html/canvas/Uint16Array.idl
index 4268ef6..555fe86 100644
--- a/core/html/canvas/Uint16Array.idl
+++ b/core/html/canvas/Uint16Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=unsigned short,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Uint16Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 2;
 
diff --git a/core/html/canvas/Uint32Array.idl b/core/html/canvas/Uint32Array.idl
index 76936df..069a8d9 100644
--- a/core/html/canvas/Uint32Array.idl
+++ b/core/html/canvas/Uint32Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=unsigned int,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Uint32Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 4;
 
diff --git a/core/html/canvas/Uint8Array.idl b/core/html/canvas/Uint8Array.idl
index b6e3917..d2f80a3 100644
--- a/core/html/canvas/Uint8Array.idl
+++ b/core/html/canvas/Uint8Array.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=unsigned char,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Uint8Array : ArrayBufferView {
     const unsigned long BYTES_PER_ELEMENT = 1;
 
diff --git a/core/html/canvas/Uint8ClampedArray.idl b/core/html/canvas/Uint8ClampedArray.idl
index cd15b26..2d9273e 100644
--- a/core/html/canvas/Uint8ClampedArray.idl
+++ b/core/html/canvas/Uint8ClampedArray.idl
@@ -27,9 +27,7 @@
 [
     ConstructorTemplate=TypedArray,
     CustomToV8,
-    DoNotCheckConstants,
-    TypedArray=unsigned char,
-    ImplementationNamespace=WTF
+    DoNotCheckConstants
 ] interface Uint8ClampedArray : Uint8Array {
     const unsigned long BYTES_PER_ELEMENT = 1;
 
diff --git a/core/html/canvas/WebGLActiveInfo.idl b/core/html/canvas/WebGLActiveInfo.idl
index 32ff970..5baf934 100644
--- a/core/html/canvas/WebGLActiveInfo.idl
+++ b/core/html/canvas/WebGLActiveInfo.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=WEBGL,
-    ImplementationLacksVTable
+    Conditional=WEBGL
 ] interface WebGLActiveInfo {
     readonly attribute long size;
     readonly attribute unsigned long type;
diff --git a/core/html/canvas/WebGLBuffer.idl b/core/html/canvas/WebGLBuffer.idl
index f43cd63..564c543 100644
--- a/core/html/canvas/WebGLBuffer.idl
+++ b/core/html/canvas/WebGLBuffer.idl
@@ -24,6 +24,6 @@
  */
 
 [
-    Conditional=WEBGL,
+    Conditional=WEBGL
 ] interface WebGLBuffer {
 };
diff --git a/core/html/canvas/WebGLCompressedTextureATC.idl b/core/html/canvas/WebGLCompressedTextureATC.idl
index 10db90e..b94f2c5 100644
--- a/core/html/canvas/WebGLCompressedTextureATC.idl
+++ b/core/html/canvas/WebGLCompressedTextureATC.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLCompressedTextureATC {
diff --git a/core/html/canvas/WebGLCompressedTexturePVRTC.idl b/core/html/canvas/WebGLCompressedTexturePVRTC.idl
index 36e73dc..20e24a1 100644
--- a/core/html/canvas/WebGLCompressedTexturePVRTC.idl
+++ b/core/html/canvas/WebGLCompressedTexturePVRTC.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLCompressedTexturePVRTC {
diff --git a/core/html/canvas/WebGLCompressedTextureS3TC.idl b/core/html/canvas/WebGLCompressedTextureS3TC.idl
index 4e96637..d60f29f 100644
--- a/core/html/canvas/WebGLCompressedTextureS3TC.idl
+++ b/core/html/canvas/WebGLCompressedTextureS3TC.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLCompressedTextureS3TC {
diff --git a/core/html/canvas/WebGLContextAttributes.idl b/core/html/canvas/WebGLContextAttributes.idl
index df45175..c29355b 100644
--- a/core/html/canvas/WebGLContextAttributes.idl
+++ b/core/html/canvas/WebGLContextAttributes.idl
@@ -25,7 +25,8 @@
  */
 
 [
-    Conditional=WEBGL,
+    NoInterfaceObject,
+    Conditional=WEBGL
 ] interface WebGLContextAttributes {
     attribute boolean alpha;
     attribute boolean depth;
diff --git a/core/html/canvas/WebGLDebugRendererInfo.idl b/core/html/canvas/WebGLDebugRendererInfo.idl
index bd37ddb..8846e4e 100644
--- a/core/html/canvas/WebGLDebugRendererInfo.idl
+++ b/core/html/canvas/WebGLDebugRendererInfo.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLDebugRendererInfo {
diff --git a/core/html/canvas/WebGLDebugShaders.idl b/core/html/canvas/WebGLDebugShaders.idl
index 59e0cdd..b269ca2 100644
--- a/core/html/canvas/WebGLDebugShaders.idl
+++ b/core/html/canvas/WebGLDebugShaders.idl
@@ -24,7 +24,8 @@
  */
 
 [
-    Conditional=WEBGL,
+    NoInterfaceObject,
+    Conditional=WEBGL
 ] interface WebGLDebugShaders {
     [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString getTranslatedShaderSource(WebGLShader shader);
 };
diff --git a/core/html/canvas/WebGLDepthTexture.idl b/core/html/canvas/WebGLDepthTexture.idl
index 84f3acd..9740cfe 100644
--- a/core/html/canvas/WebGLDepthTexture.idl
+++ b/core/html/canvas/WebGLDepthTexture.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL,
     DoNotCheckConstants
 ] interface WebGLDepthTexture {
diff --git a/core/html/canvas/WebGLLoseContext.idl b/core/html/canvas/WebGLLoseContext.idl
index ee07a4f..310f84d 100644
--- a/core/html/canvas/WebGLLoseContext.idl
+++ b/core/html/canvas/WebGLLoseContext.idl
@@ -24,7 +24,8 @@
  */
 
 [
-    Conditional=WEBGL,
+    NoInterfaceObject,
+    Conditional=WEBGL
 ] interface WebGLLoseContext {
     [StrictTypeChecking] void loseContext();
     [StrictTypeChecking] void restoreContext();
diff --git a/core/html/canvas/WebGLShaderPrecisionFormat.idl b/core/html/canvas/WebGLShaderPrecisionFormat.idl
index b31a58d..1b34f65 100644
--- a/core/html/canvas/WebGLShaderPrecisionFormat.idl
+++ b/core/html/canvas/WebGLShaderPrecisionFormat.idl
@@ -25,8 +25,7 @@
  */
 
 [
-    Conditional=WEBGL,
-    ImplementationLacksVTable
+    Conditional=WEBGL
 ] interface WebGLShaderPrecisionFormat {
     readonly attribute long rangeMin;
     readonly attribute long rangeMax;
diff --git a/core/html/canvas/WebGLVertexArrayObjectOES.idl b/core/html/canvas/WebGLVertexArrayObjectOES.idl
index 1e78ddd..ce9f18d 100644
--- a/core/html/canvas/WebGLVertexArrayObjectOES.idl
+++ b/core/html/canvas/WebGLVertexArrayObjectOES.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBGL
 ] interface WebGLVertexArrayObjectOES {
 };
diff --git a/modules/inputmethod/Composition.idl b/core/html/ime/Composition.idl
similarity index 97%
rename from modules/inputmethod/Composition.idl
rename to core/html/ime/Composition.idl
index 155d74b..43ead5c 100644
--- a/modules/inputmethod/Composition.idl
+++ b/core/html/ime/Composition.idl
@@ -30,7 +30,7 @@
 
 // http://www.w3.org/TR/ime-api/
 [
-  ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Composition {
     readonly attribute Node text;
     readonly attribute Range caret;
diff --git a/modules/inputmethod/InputMethodContext.idl b/core/html/ime/InputMethodContext.idl
similarity index 98%
rename from modules/inputmethod/InputMethodContext.idl
rename to core/html/ime/InputMethodContext.idl
index 0a6a23a..b86a1cd 100644
--- a/modules/inputmethod/InputMethodContext.idl
+++ b/core/html/ime/InputMethodContext.idl
@@ -30,7 +30,6 @@
 
 // http://www.w3.org/TR/ime-api/
 [
-    ImplementationLacksVTable
 ] interface InputMethodContext {
     readonly attribute Composition composition;
     attribute boolean enabled;
diff --git a/core/html/shadow/HTMLContentElement.idl b/core/html/shadow/HTMLContentElement.idl
index e5c20d8..77095c2 100644
--- a/core/html/shadow/HTMLContentElement.idl
+++ b/core/html/shadow/HTMLContentElement.idl
@@ -25,7 +25,6 @@
  */
 
 [
-    SkipVTableValidation
 ] interface HTMLContentElement : HTMLElement {
     [Reflect] attribute DOMString select;
     attribute boolean resetStyleInheritance;
diff --git a/core/html/track/TextTrack.idl b/core/html/track/TextTrack.idl
index a2ad6d1..00a44a8 100644
--- a/core/html/track/TextTrack.idl
+++ b/core/html/track/TextTrack.idl
@@ -20,13 +20,12 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack,
-    EventTarget,
-    SkipVTableValidation
+    EnabledAtRuntime=videoTrack,
+    EventTarget
 ] interface TextTrack {
     readonly attribute DOMString kind;
     readonly attribute DOMString label;
@@ -48,11 +47,11 @@
 #endif
 
     // EventTarget interface
-    void addEventListener(DOMString type, 
-                          EventListener listener, 
+    void addEventListener(DOMString type,
+                          EventListener listener,
                           optional boolean useCapture);
-    void removeEventListener(DOMString type, 
-                             EventListener listener, 
+    void removeEventListener(DOMString type,
+                             EventListener listener,
                              optional boolean useCapture);
     [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/core/html/track/TextTrackCue.idl b/core/html/track/TextTrackCue.idl
index ea2ca4c..88725a4 100644
--- a/core/html/track/TextTrackCue.idl
+++ b/core/html/track/TextTrackCue.idl
@@ -20,15 +20,14 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=videoTrack,
     Constructor(double startTime, double endTime, DOMString text),
     CallWith=ScriptExecutionContext,
-    EventTarget,
-    ImplementationLacksVTable
+    EventTarget
 ] interface TextTrackCue {
     readonly attribute TextTrack track;
 
@@ -51,11 +50,11 @@
     attribute EventListener onexit;
 
     // EventTarget interface
-    void addEventListener(DOMString type, 
-                          EventListener listener, 
+    void addEventListener(DOMString type,
+                          EventListener listener,
                           optional boolean useCapture);
-    void removeEventListener(DOMString type, 
-                             EventListener listener, 
+    void removeEventListener(DOMString type,
+                             EventListener listener,
                              optional boolean useCapture);
     [RaisesException] boolean dispatchEvent(Event evt);
 
diff --git a/core/html/track/TextTrackCueList.idl b/core/html/track/TextTrackCueList.idl
index a77ede9..155d419 100644
--- a/core/html/track/TextTrackCueList.idl
+++ b/core/html/track/TextTrackCueList.idl
@@ -20,12 +20,11 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack,
-    ImplementationLacksVTable
+    EnabledAtRuntime=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 7fcbacd..905efc3 100644
--- a/core/html/track/TextTrackList.idl
+++ b/core/html/track/TextTrackList.idl
@@ -20,13 +20,13 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=videoTrack,
     EventTarget,
-    GenerateIsReachable=ImplOwnerRoot
+    GenerateIsReachable=owner
 ] interface TextTrackList {
     readonly attribute unsigned long length;
     getter TextTrack item(unsigned long index);
diff --git a/core/html/track/TextTrackRegion.idl b/core/html/track/TextTrackRegion.idl
index 2e80ca3..236d903 100644
--- a/core/html/track/TextTrackRegion.idl
+++ b/core/html/track/TextTrackRegion.idl
@@ -20,12 +20,12 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
     Conditional=WEBVTT_REGIONS,
-    EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=videoTrack,
     Constructor()
 ] interface TextTrackRegion {
     readonly attribute TextTrack track;
diff --git a/core/html/track/TextTrackRegionList.idl b/core/html/track/TextTrackRegionList.idl
index c6274cb..ad5611f 100644
--- a/core/html/track/TextTrackRegionList.idl
+++ b/core/html/track/TextTrackRegionList.idl
@@ -20,13 +20,13 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEBVTT_REGIONS,
-    EnabledAtRuntime=webkitVideoTrack,
-    ImplementationLacksVTable
+    EnabledAtRuntime=videoTrack
 ] interface TextTrackRegionList {
     readonly attribute unsigned long length;
     getter TextTrackRegion item(unsigned long index);
diff --git a/core/html/track/TrackEvent.idl b/core/html/track/TrackEvent.idl
index 1ebb29a..0b1a0e9 100644
--- a/core/html/track/TrackEvent.idl
+++ b/core/html/track/TrackEvent.idl
@@ -20,11 +20,11 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=videoTrack,
     ConstructorTemplate=Event
 ] interface TrackEvent : Event {
     [InitializedByEventConstructor, CustomGetter] readonly attribute object track;
diff --git a/core/inspector/InjectedScriptHost.idl b/core/inspector/InjectedScriptHost.idl
index b285d67..4d9f484 100644
--- a/core/inspector/InjectedScriptHost.idl
+++ b/core/inspector/InjectedScriptHost.idl
@@ -31,7 +31,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface InjectedScriptHost {
     void clearConsoleMessages();
 
diff --git a/core/inspector/InspectorFrontendHost.idl b/core/inspector/InspectorFrontendHost.idl
index 2ebcf0a..d3ca499 100644
--- a/core/inspector/InspectorFrontendHost.idl
+++ b/core/inspector/InspectorFrontendHost.idl
@@ -31,7 +31,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface InspectorFrontendHost {
     void closeWindow();
     void bringToFront();
diff --git a/core/inspector/JavaScriptCallFrame.idl b/core/inspector/JavaScriptCallFrame.idl
index ebd87d4..86ae41d 100644
--- a/core/inspector/JavaScriptCallFrame.idl
+++ b/core/inspector/JavaScriptCallFrame.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    DoNotCheckConstants,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    DoNotCheckConstants
 ] interface JavaScriptCallFrame {
 
     // Scope type
diff --git a/core/inspector/ScriptProfile.idl b/core/inspector/ScriptProfile.idl
deleted file mode 100644
index 8569aae..0000000
--- a/core/inspector/ScriptProfile.idl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2010 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.
- */
-
-[
-] interface ScriptProfile {
-    readonly attribute DOMString title;
-    readonly attribute unsigned long uid;
-    readonly attribute ScriptProfileNode head;
-    readonly attribute double idleTime;
-};
-
diff --git a/core/inspector/ScriptProfileNode.idl b/core/inspector/ScriptProfileNode.idl
deleted file mode 100644
index de7bc62..0000000
--- a/core/inspector/ScriptProfileNode.idl
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2010 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.
- */
-
-[
-] interface ScriptProfileNode {
-    readonly attribute DOMString functionName;
-    readonly attribute DOMString url;
-    readonly attribute unsigned long lineNumber;
-    readonly attribute double totalTime;
-    readonly attribute double selfTime;
-    readonly attribute unsigned long numberOfCalls;
-    sequence<ScriptProfileNode> children();
-    readonly attribute boolean visible;
-    readonly attribute unsigned long callUID;
-};
-
diff --git a/core/loader/appcache/DOMApplicationCache.idl b/core/loader/appcache/DOMApplicationCache.idl
index ac54056..c58f5e3 100644
--- a/core/loader/appcache/DOMApplicationCache.idl
+++ b/core/loader/appcache/DOMApplicationCache.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     EventTarget,
     DoNotCheckConstants
 ] interface DOMApplicationCache {
diff --git a/core/page/BarInfo.idl b/core/page/BarProp.idl
similarity index 98%
rename from core/page/BarInfo.idl
rename to core/page/BarProp.idl
index 41a6f5a..8f91d38 100644
--- a/core/page/BarInfo.idl
+++ b/core/page/BarProp.idl
@@ -26,8 +26,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-] interface BarInfo {
+interface BarProp {
     readonly attribute boolean visible;
 };
 
diff --git a/core/page/Console.idl b/core/page/Console.idl
index a826d59..e536e49 100644
--- a/core/page/Console.idl
+++ b/core/page/Console.idl
@@ -27,6 +27,7 @@
  */
 
 [
+    NoInterfaceObject
 ] interface Console {
 
     [CallWith=ScriptArguments|ScriptState] void debug();
@@ -37,17 +38,13 @@
     [CallWith=ScriptArguments|ScriptState] void dir();
     [CallWith=ScriptArguments|ScriptState] void dirxml();
     [CallWith=ScriptArguments|ScriptState] void table();
-    [Custom, CallWith=ScriptArguments|ScriptState] void trace();
-    [Custom, CallWith=ScriptArguments|ScriptState, ImplementedAs=assertCondition] void assert(boolean condition);
+    [CallWith=ScriptArguments|ScriptState] void trace();
+    [CallWith=ScriptArguments|ScriptState, ImplementedAs=assertCondition] void assert([Default=Undefined] optional boolean condition);
     [CallWith=ScriptArguments|ScriptState] void count();
     [CallWith=ScriptArguments] void markTimeline();
 
-    // As per spec: http://www.w3.org/TR/WebIDL/#idl-sequence
-    // "Sequences must not be used as the type of an attribute, constant or exception field."
-    // FIXME: this will lead to BUG console.profiles !== console.profiles as profile will always returns new array.
-    readonly attribute ScriptProfile[] profiles;
-    [Custom] void profile(DOMString title);
-    [Custom] void profileEnd(DOMString title);
+    [CallWith=ScriptState] void profile([Default=NullString] optional DOMString title);
+    [CallWith=ScriptState] void profileEnd([Default=NullString] optional DOMString title);
 
     void time([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
     [CallWith=ScriptState] void timeEnd([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
diff --git a/core/page/Crypto.idl b/core/page/Crypto.idl
index 9e632ef..0cabce2 100644
--- a/core/page/Crypto.idl
+++ b/core/page/Crypto.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Crypto {
     [Custom, RaisesException] ArrayBufferView getRandomValues(ArrayBufferView array);
 };
diff --git a/core/page/DOMPoint.idl b/core/page/DOMPoint.idl
index f131917..b5fb534 100644
--- a/core/page/DOMPoint.idl
+++ b/core/page/DOMPoint.idl
@@ -26,8 +26,7 @@
 [
     CustomConstructor,
     CustomConstructor(float x, float y),
-    InterfaceName=WebKitPoint,
-    ImplementationLacksVTable
+    InterfaceName=WebKitPoint
 ] interface DOMPoint {
     attribute float x;
     attribute float y;
diff --git a/core/page/DOMWindow.idl b/core/page/DOMWindow.idl
index f68dd94..c256b05 100644
--- a/core/page/DOMWindow.idl
+++ b/core/page/DOMWindow.idl
@@ -30,25 +30,24 @@
     CustomToV8,
     CustomNamedGetter,
     DoNotGenerateWrap,
-    CustomIndexedGetter,
     InterfaceName=Window
 ] interface DOMWindow {
     // DOM Level 0
     [Replaceable] readonly attribute Screen screen;
-    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute History history;
-    [Replaceable] readonly attribute BarInfo locationbar;
-    [Replaceable] readonly attribute BarInfo menubar;
-    [Replaceable] readonly attribute BarInfo personalbar;
-    [Replaceable] readonly attribute BarInfo scrollbars;
-    [Replaceable] readonly attribute BarInfo statusbar;
-    [Replaceable] readonly attribute BarInfo toolbar;
+    [Replaceable] readonly attribute History history;
+    [Replaceable] readonly attribute BarProp locationbar;
+    [Replaceable] readonly attribute BarProp menubar;
+    [Replaceable] readonly attribute BarProp personalbar;
+    [Replaceable] readonly attribute BarProp scrollbars;
+    [Replaceable] readonly attribute BarProp statusbar;
+    [Replaceable] readonly attribute BarProp toolbar;
     [Replaceable, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute Navigator navigator;
     [Replaceable] readonly attribute Navigator clientInformation;
     readonly attribute Crypto crypto;
-    [DoNotCheckSecurity, CustomSetter, Unforgeable] attribute Location location;
+    [DoNotCheckSecurity, CustomSetter, Unforgeable, Replaceable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] readonly attribute Location location;
     [MeasureAs=WindowEvent, NotEnumerable, Replaceable, CustomGetter, CustomSetter] readonly attribute Event event;
 
-    DOMSelection getSelection();
+    Selection getSelection();
 
     [CheckSecurityForNode] readonly attribute Element frameElement;
 
@@ -182,7 +181,7 @@
     [RaisesException] DOMString atob([TreatNullAs=NullString,Default=Undefined] optional DOMString string);
     [RaisesException] DOMString btoa([TreatNullAs=NullString,Default=Undefined] optional DOMString string);
 
-    [Replaceable] attribute DOMWindowCSS CSS;
+    [Replaceable] readonly attribute CSS CSS;
 
     // Events
     attribute EventListener onabort;
@@ -283,471 +282,58 @@
                                       optional boolean useCapture);
     [RaisesException] boolean dispatchEvent(Event evt);
 
-    [Custom] void captureEvents(/*in long eventFlags*/);
-    [Custom] void releaseEvents(/*in long eventFlags*/);
-
-    // Global constructors
-    attribute StyleSheetConstructor StyleSheet;
-    attribute CSSStyleSheetConstructor CSSStyleSheet;
-
-    attribute CSSValueConstructor CSSValue;
-    attribute CSSPrimitiveValueConstructor CSSPrimitiveValue;
-    attribute CSSValueListConstructor CSSValueList;
-    attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
-
-    attribute WebKitCSSFilterRuleConstructor WebKitCSSFilterRule;
-    attribute WebKitCSSMixFunctionValueConstructor WebKitCSSMixFunctionValue;
-
-    attribute WebKitCSSFilterValueConstructor WebKitCSSFilterValue;
-
-#if defined(ENABLE_CSS_DEVICE_ADAPTATION) && ENABLE_CSS_DEVICE_ADAPTATION
-    attribute WebKitCSSViewportRuleConstructor WebKitCSSViewportRule;
-#endif
-
-    attribute CSSRuleConstructor CSSRule;
-    attribute CSSCharsetRuleConstructor CSSCharsetRule;
-    attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
-    attribute CSSHostRuleConstructor CSSHostRule;
-    attribute CSSImportRuleConstructor CSSImportRule;
-    attribute CSSMediaRuleConstructor CSSMediaRule;
-    attribute CSSPageRuleConstructor CSSPageRule;
-    attribute CSSStyleRuleConstructor CSSStyleRule;
-
-    attribute CSSStyleDeclarationConstructor CSSStyleDeclaration;
-    attribute MediaListConstructor MediaList;
-    attribute CounterConstructor Counter;
-    attribute CSSRuleListConstructor CSSRuleList;
-    attribute RectConstructor Rect;
-    attribute RGBColorConstructor RGBColor;
-    attribute StyleSheetListConstructor StyleSheetList;
-
-    // FIXME: Implement the commented-out global constructors for interfaces listed in DOM Level 3 Core specification.
-    attribute DOMCoreExceptionConstructor DOMException;
-    attribute DOMStringListConstructor DOMStringList;
-//        attribute NameListConstructor NameList;
-//        attribute DOMImplementationListConstructor DOMImplementationList;
-//        attribute DOMImplementationSourceConstructor DOMImplementationSource;
-    attribute DOMImplementationConstructor DOMImplementation;
-    attribute DOMSettableTokenListConstructor DOMSettableTokenList;
-    attribute DOMTokenListConstructor DOMTokenList;
-    attribute DocumentFragmentConstructor DocumentFragment;
-    attribute DocumentConstructor Document;
-    attribute NodeConstructor Node;
-    attribute NodeListConstructor NodeList;
-    attribute NamedNodeMapConstructor NamedNodeMap;
-    attribute CharacterDataConstructor CharacterData;
-    attribute AttrConstructor Attr;
-    attribute ElementConstructor Element;
-    attribute TextConstructor Text;
-    attribute CommentConstructor Comment;
-//        attribute TypeInfoConstructor TypeInfo;
-//        attribute UserDataHandlerConstructor UserDataHandler;
-//        attribute DOMErrorConstructor DOMError;
-//        attribute DOMErrorHandlerConstructor DOMErrorHandler
-//        attribute DOMLocatorConstructor DOMLocator;
-//        attribute DOMConfigurationConstructor DOMConfiguration;
-    attribute CDATASectionConstructor CDATASection;
-    attribute DocumentTypeConstructor DocumentType;
-    attribute NotationConstructor Notation;
-    attribute EntityConstructor Entity;
-    attribute EntityReferenceConstructor EntityReference;
-    [EnabledAtRuntime=canvasPath] attribute DOMPathConstructor Path;
-    attribute ProcessingInstructionConstructor ProcessingInstruction;
-    attribute ShadowRootConstructor WebKitShadowRoot;
-    attribute HTMLContentElementConstructor HTMLContentElement;
-    attribute HTMLShadowElementConstructor HTMLShadowElement;
-
-    attribute DOMSelectionConstructor Selection;
-    attribute DOMWindowConstructor Window;
-
-    attribute HTMLDocumentConstructor HTMLDocument;
-    attribute HTMLElementConstructor HTMLElement;
-    attribute HTMLAnchorElementConstructor HTMLAnchorElement;
-    attribute HTMLAppletElementConstructor HTMLAppletElement;
-    attribute HTMLAreaElementConstructor HTMLAreaElement;
-    attribute HTMLBRElementConstructor HTMLBRElement;
-    attribute HTMLBaseElementConstructor HTMLBaseElement;
-    attribute HTMLBodyElementConstructor HTMLBodyElement;
-    attribute HTMLButtonElementConstructor HTMLButtonElement;
-    attribute HTMLCanvasElementConstructor HTMLCanvasElement;
-    attribute HTMLDListElementConstructor HTMLDListElement;
-    [Conditional=DATALIST_ELEMENT] attribute HTMLDataListElementConstructor HTMLDataListElement;
-    [EnabledPerContext=dialogElement] attribute HTMLDialogElementConstructor HTMLDialogElement;
-    attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
-    attribute HTMLDivElementConstructor HTMLDivElement;
-    attribute HTMLEmbedElementConstructor HTMLEmbedElement;
-    attribute HTMLFieldSetElementConstructor HTMLFieldSetElement;
-    attribute HTMLFontElementConstructor HTMLFontElement;
-    attribute HTMLFormElementConstructor HTMLFormElement;
-    attribute HTMLFrameElementConstructor HTMLFrameElement;
-    attribute HTMLFrameSetElementConstructor HTMLFrameSetElement;
-    attribute HTMLHRElementConstructor HTMLHRElement;
-    attribute HTMLHeadElementConstructor HTMLHeadElement;
-    attribute HTMLHeadingElementConstructor HTMLHeadingElement;
-    attribute HTMLHtmlElementConstructor HTMLHtmlElement;
-    attribute HTMLIFrameElementConstructor HTMLIFrameElement;
-    attribute HTMLImageElementConstructor HTMLImageElement;
-    attribute HTMLInputElementConstructor HTMLInputElement;
-    attribute HTMLKeygenElementConstructor HTMLKeygenElement;
-    attribute HTMLLIElementConstructor HTMLLIElement;
-    attribute HTMLLabelElementConstructor HTMLLabelElement;
-    attribute HTMLLegendElementConstructor HTMLLegendElement;
-    attribute HTMLLinkElementConstructor HTMLLinkElement;
-    attribute HTMLMapElementConstructor HTMLMapElement;
-    attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
-    attribute HTMLMenuElementConstructor HTMLMenuElement;
-    attribute HTMLMetaElementConstructor HTMLMetaElement;
-    attribute HTMLMeterElementConstructor HTMLMeterElement;
-    attribute HTMLModElementConstructor HTMLModElement;
-    attribute HTMLOListElementConstructor HTMLOListElement;
-    attribute HTMLObjectElementConstructor HTMLObjectElement;
-    attribute HTMLOptGroupElementConstructor HTMLOptGroupElement;
-    attribute HTMLOptionElementConstructor HTMLOptionElement;
-    attribute HTMLOutputElementConstructor HTMLOutputElement;
-    attribute HTMLParagraphElementConstructor HTMLParagraphElement;
-    attribute HTMLParamElementConstructor HTMLParamElement;
-    attribute HTMLPreElementConstructor HTMLPreElement;
-    attribute HTMLProgressElementConstructor HTMLProgressElement;
-    attribute HTMLQuoteElementConstructor HTMLQuoteElement;
-    attribute HTMLScriptElementConstructor HTMLScriptElement;
-    attribute HTMLSelectElementConstructor HTMLSelectElement;
-    attribute HTMLSpanElementConstructor HTMLSpanElement;
-    attribute HTMLStyleElementConstructor HTMLStyleElement;
-    attribute HTMLTableCaptionElementConstructor HTMLTableCaptionElement;
-    attribute HTMLTableCellElementConstructor HTMLTableCellElement;
-    attribute HTMLTableColElementConstructor HTMLTableColElement;
-    attribute HTMLTableElementConstructor HTMLTableElement;
-    attribute HTMLTableRowElementConstructor HTMLTableRowElement;
-    attribute HTMLTableSectionElementConstructor HTMLTableSectionElement;
-    attribute HTMLTemplateElementConstructor HTMLTemplateElement;
-    attribute HTMLTextAreaElementConstructor HTMLTextAreaElement;
-    attribute HTMLTitleElementConstructor HTMLTitleElement;
-    attribute HTMLUListElementConstructor HTMLUListElement;
-
-    attribute HTMLCollectionConstructor HTMLCollection;
-    attribute HTMLAllCollectionConstructor HTMLAllCollection;
-    attribute HTMLFormControlsCollectionConstructor HTMLFormControlsCollection;
-    attribute HTMLOptionsCollectionConstructor HTMLOptionsCollection;
-    attribute HTMLUnknownElementConstructor HTMLUnknownElement;
-
+    // Additional constructors.
+    attribute TransitionEventConstructor WebKitTransitionEvent;
     [CustomConstructor] attribute HTMLImageElementConstructorConstructor Image; // Usable with new operator
-    attribute HTMLOptionElementConstructorConstructor Option; // Usable with new operator
+    // Mozilla has a separate XMLDocument object for XML documents.
+    // We just use Document for this.
+    attribute DocumentConstructor XMLDocument;
+    attribute URLConstructor webkitURL; // FIXME: deprecate this.
+    attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
+    attribute IDBCursorConstructor webkitIDBCursor;
+    attribute IDBDatabaseConstructor webkitIDBDatabase;
+    attribute IDBFactoryConstructor webkitIDBFactory;
+    attribute IDBIndexConstructor webkitIDBIndex;
+    attribute IDBKeyRangeConstructor webkitIDBKeyRange;
+    attribute IDBObjectStoreConstructor webkitIDBObjectStore;
+    attribute IDBRequestConstructor webkitIDBRequest;
+    attribute IDBTransactionConstructor webkitIDBTransaction;
 
-    [Conditional=ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyEventConstructor MediaKeyEvent;
-    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeysConstructor MediaKeys;
-    [Conditional=ENCRYPTED_MEDIA_V2|ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyErrorConstructor MediaKeyError;
-    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyMessageEventConstructor MediaKeyMessageEvent;
-    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyNeededEventConstructor MediaKeyNeededEvent;
-
-    [EnabledAtRuntime=webkitVideoTrack] attribute HTMLTrackElementConstructor HTMLTrackElement;
-    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackConstructor TextTrack;
-    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueConstructor TextTrackCue; // Usable with the new operator
-    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueListConstructor TextTrackCueList;
-    [EnabledAtRuntime=webkitVideoTrack] attribute TextTrackListConstructor TextTrackList;
-    [Conditional=WEBVTT_REGIONS, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackRegionConstructor TextTrackRegion; // Usable with the new operator
-    [EnabledAtRuntime=webkitVideoTrack] attribute TrackEventConstructor TrackEvent;
-
-    [EnabledAtRuntime=media] attribute HTMLAudioElementConstructorConstructor Audio; // Usable with the new operator
-    [EnabledAtRuntime=media] attribute HTMLAudioElementConstructor HTMLAudioElement;
+    // Constructors enabled at runtime but whose interface does not have EnabledAtRuntime
+    // extended attribute.
+    // FIXME: Remove these.
     [EnabledAtRuntime=media] attribute HTMLMediaElementConstructor HTMLMediaElement;
     [EnabledAtRuntime=media] attribute HTMLVideoElementConstructor HTMLVideoElement;
     [EnabledAtRuntime=media] attribute MediaErrorConstructor MediaError;
     [EnabledAtRuntime=media] attribute TimeRangesConstructor TimeRanges;
     [EnabledAtRuntime=media] attribute HTMLSourceElementConstructor HTMLSourceElement;
     [EnabledAtRuntime=media] attribute MediaControllerConstructor MediaController;
-
-    attribute CanvasPatternConstructor CanvasPattern;
-    attribute CanvasGradientConstructor CanvasGradient;
-    attribute CanvasRenderingContext2DConstructor CanvasRenderingContext2D;
-
-    attribute ImageDataConstructor ImageData;
-    attribute TextMetricsConstructor TextMetrics;
-
-    [Conditional=WEBGL] attribute WebGLActiveInfoConstructor WebGLActiveInfo;
-    [Conditional=WEBGL] attribute WebGLBufferConstructor WebGLBuffer;
-    [Conditional=WEBGL] attribute WebGLFramebufferConstructor WebGLFramebuffer;
-    [Conditional=WEBGL] attribute WebGLProgramConstructor WebGLProgram;
-    [Conditional=WEBGL] attribute WebGLRenderbufferConstructor WebGLRenderbuffer;
-    [Conditional=WEBGL] attribute WebGLRenderingContextConstructor WebGLRenderingContext;
-    [Conditional=WEBGL] attribute WebGLShaderConstructor WebGLShader;
-    [Conditional=WEBGL] attribute WebGLShaderPrecisionFormatConstructor WebGLShaderPrecisionFormat;
-    [Conditional=WEBGL] attribute WebGLTextureConstructor WebGLTexture;
-    [Conditional=WEBGL] attribute WebGLUniformLocationConstructor WebGLUniformLocation;
-
-    attribute DOMStringMapConstructor DOMStringMap;
-
-    attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
-    attribute ArrayBufferViewConstructor ArrayBufferView;
-    attribute Int8ArrayConstructor Int8Array; // Usable with new operator
-    attribute Uint8ArrayConstructor Uint8Array; // Usable with new operator
-    attribute Uint8ClampedArrayConstructor Uint8ClampedArray; // Usable with new operator
-    attribute Int16ArrayConstructor Int16Array; // Usable with new operator
-    attribute Uint16ArrayConstructor Uint16Array; // Usable with new operator
-    attribute Int32ArrayConstructor Int32Array; // Usable with new operator
-    attribute Uint32ArrayConstructor Uint32Array; // Usable with new operator
-    attribute Float32ArrayConstructor Float32Array; // Usable with new operator
-    attribute Float64ArrayConstructor Float64Array; // Usable with new operator
-    attribute DataViewConstructor DataView; // Usable with new operator
-
-    // Event Constructors
-    attribute EventConstructor Event;
-    attribute BeforeLoadEventConstructor BeforeLoadEvent;
-    attribute CompositionEventConstructor CompositionEvent;
-    attribute CustomEventConstructor CustomEvent;
-    attribute ErrorEventConstructor ErrorEvent;
-    attribute FocusEventConstructor FocusEvent;
-    attribute HashChangeEventConstructor HashChangeEvent;
-    attribute KeyboardEventConstructor KeyboardEvent;
-    attribute MessageEventConstructor MessageEvent;
-    attribute MouseEventConstructor MouseEvent;
-    attribute MutationEventConstructor MutationEvent;
-    attribute OverflowEventConstructor OverflowEvent;
-    attribute PopStateEventConstructor PopStateEvent;
-    attribute PageTransitionEventConstructor PageTransitionEvent;
-    attribute ProgressEventConstructor ProgressEvent;
-    attribute TextEventConstructor TextEvent;
-    attribute TransitionEventConstructor TransitionEvent;
-    attribute UIEventConstructor UIEvent;
-    attribute AnimationEventConstructor WebKitAnimationEvent;
-    attribute TransitionEventConstructor WebKitTransitionEvent;
-    attribute WheelEventConstructor WheelEvent;
-    attribute XMLHttpRequestProgressEventConstructor XMLHttpRequestProgressEvent;
     [EnabledAtRuntime=deviceMotion] attribute DeviceMotionEventConstructor DeviceMotionEvent;
-    [EnabledAtRuntime=deviceOrientation] attribute DeviceOrientationEventConstructor DeviceOrientationEvent;
     [EnabledAtRuntime=touch] attribute TouchConstructor Touch;
     [EnabledAtRuntime=touch] attribute TouchEventConstructor TouchEvent;
     [EnabledAtRuntime=touch] attribute TouchListConstructor TouchList;
-    attribute StorageEventConstructor StorageEvent;
-    [Conditional=INPUT_SPEECH] attribute SpeechInputEventConstructor SpeechInputEvent;
-    [Conditional=WEBGL] attribute WebGLContextEventConstructor WebGLContextEvent;
-    [EnabledAtRuntime=requestAutocomplete] attribute AutocompleteErrorEventConstructor AutocompleteErrorEvent;
+    [EnabledAtRuntime=webMIDI] attribute MIDIConnectionEventConstructor MIDIConnectionEvent;
+    [EnabledAtRuntime=webMIDI] attribute MIDIMessageEventConstructor MIDIMessageEvent;
+    [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=experimentalContentSecurityPolicyFeatures] attribute SecurityPolicyViolationEventConstructor SecurityPolicyViolationEvent;
-
-    attribute EventExceptionConstructor EventException;
-
-    attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
-    attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
-    [EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
-
-    attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
-
-    attribute DOMPointConstructor WebKitPoint; // Usable with new the operator
-
-    attribute ClipboardConstructor Clipboard;
-
-    attribute WorkerConstructor Worker; // Usable with the new operator
     [EnabledAtRuntime] attribute SharedWorkerConstructor SharedWorker; // Usable with the new operator
+    [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;
 
-    attribute FileConstructor File;
-    attribute FileListConstructor FileList;
-    attribute BlobConstructor Blob;
-
-    attribute NodeFilterConstructor NodeFilter;
-    attribute RangeConstructor Range;
-
-    attribute EventSourceConstructor EventSource; // Usable with new the operator
-
-    // Mozilla has a separate XMLDocument object for XML documents.
-    // We just use Document for this.
-    attribute DocumentConstructor XMLDocument;
-    attribute DOMParserConstructor DOMParser;
-    attribute XMLSerializerConstructor XMLSerializer;
-    attribute XMLHttpRequestConstructor XMLHttpRequest; // Usable with the new operator
-    attribute XMLHttpRequestUploadConstructor XMLHttpRequestUpload;
-    attribute XSLTProcessorConstructor XSLTProcessor; // Usable with the new operator
-
-    attribute MessagePortConstructor MessagePort;
-    attribute MessageChannelConstructor MessageChannel; // Usable with the new operator
-
-    attribute DOMPluginConstructor Plugin;
-    attribute DOMPluginArrayConstructor PluginArray;
-
-    attribute DOMMimeTypeConstructor MimeType;
-    attribute DOMMimeTypeArrayConstructor MimeTypeArray;
-
-    attribute ClientRectConstructor ClientRect;
-    attribute ClientRectListConstructor ClientRectList;
-
-    attribute StorageConstructor Storage;
-
-    attribute XPathEvaluatorConstructor XPathEvaluator;
-    attribute XPathResultConstructor XPathResult;
-    attribute XPathExceptionConstructor XPathException;
-
-    [Conditional=SVG] attribute SVGZoomEventConstructor SVGZoomEvent;
-
-#if defined(ENABLE_SVG) && ENABLE_SVG
-    // Expose all implemented SVG 1.1 interfaces, excluding the SVG MI interfaces:
-    // SVGAnimatedPathData, SVGAnimatedPoints, SVGExternalResourcesRequired,
-    // SVGFilterPrimitiveStandardAttributes, SVGFitToViewBox, SVGLangSpace, SVGLocatable
-    // SVGTests, SVGTransformable, SVGURIReference, SVGZoomAndPan
-    attribute SVGAElementConstructor SVGAElement;
-    attribute SVGAngleConstructor SVGAngle;
-    attribute SVGAnimatedAngleConstructor SVGAnimatedAngle;
-    attribute SVGAnimatedBooleanConstructor SVGAnimatedBoolean;
-    attribute SVGAnimatedEnumerationConstructor SVGAnimatedEnumeration;
-    attribute SVGAnimatedIntegerConstructor SVGAnimatedInteger;
-    attribute SVGAnimatedLengthConstructor SVGAnimatedLength;
-    attribute SVGAnimatedLengthListConstructor SVGAnimatedLengthList;
-    attribute SVGAnimatedNumberConstructor SVGAnimatedNumber;
-    attribute SVGAnimatedNumberListConstructor SVGAnimatedNumberList;
-    attribute SVGAnimatedPreserveAspectRatioConstructor SVGAnimatedPreserveAspectRatio;
-    attribute SVGAnimatedRectConstructor SVGAnimatedRect;
-    attribute SVGAnimatedStringConstructor SVGAnimatedString;
-    attribute SVGAnimatedTransformListConstructor SVGAnimatedTransformList;
-    attribute SVGCircleElementConstructor SVGCircleElement;
-    attribute SVGClipPathElementConstructor SVGClipPathElement;
-    attribute SVGColorConstructor SVGColor;
-    attribute SVGCursorElementConstructor SVGCursorElement;
-//      attribute SVGCSSRuleConstructor SVGCSSRule;
-    attribute SVGDefsElementConstructor SVGDefsElement;
-    attribute SVGDescElementConstructor SVGDescElement;
-    attribute SVGDocumentConstructor SVGDocument;
-    attribute SVGElementConstructor SVGElement;
-    attribute SVGElementInstanceConstructor SVGElementInstance;
-    attribute SVGElementInstanceListConstructor SVGElementInstanceList;
-    attribute SVGEllipseElementConstructor SVGEllipseElement;
-    attribute SVGForeignObjectElementConstructor SVGForeignObjectElement;
-    attribute SVGExceptionConstructor SVGException;
-    attribute SVGGElementConstructor SVGGElement;
-    attribute SVGGradientElementConstructor SVGGradientElement;
-    attribute SVGImageElementConstructor SVGImageElement;
-    attribute SVGLengthConstructor SVGLength;
-    attribute SVGLengthListConstructor SVGLengthList;
-    attribute SVGLinearGradientElementConstructor SVGLinearGradientElement;
-    attribute SVGLineElementConstructor SVGLineElement;
-    attribute SVGMarkerElementConstructor SVGMarkerElement;
-    attribute SVGMaskElementConstructor SVGMaskElement;
-    attribute SVGMatrixConstructor SVGMatrix;
-    attribute SVGMetadataElementConstructor SVGMetadataElement;
-    attribute SVGNumberConstructor SVGNumber;
-    attribute SVGNumberListConstructor SVGNumberList;
-    attribute SVGPaintConstructor SVGPaint;
-    attribute SVGPathElementConstructor SVGPathElement;
-    attribute SVGPathSegConstructor SVGPathSeg;
-    attribute SVGPathSegArcAbsConstructor SVGPathSegArcAbs;
-    attribute SVGPathSegArcRelConstructor SVGPathSegArcRel;
-    attribute SVGPathSegClosePathConstructor SVGPathSegClosePath;
-    attribute SVGPathSegCurvetoCubicAbsConstructor SVGPathSegCurvetoCubicAbs;
-    attribute SVGPathSegCurvetoCubicRelConstructor SVGPathSegCurvetoCubicRel;
-    attribute SVGPathSegCurvetoCubicSmoothAbsConstructor SVGPathSegCurvetoCubicSmoothAbs;
-    attribute SVGPathSegCurvetoCubicSmoothRelConstructor SVGPathSegCurvetoCubicSmoothRel;
-    attribute SVGPathSegCurvetoQuadraticAbsConstructor SVGPathSegCurvetoQuadraticAbs;
-    attribute SVGPathSegCurvetoQuadraticRelConstructor SVGPathSegCurvetoQuadraticRel;
-    attribute SVGPathSegCurvetoQuadraticSmoothAbsConstructor SVGPathSegCurvetoQuadraticSmoothAbs;
-    attribute SVGPathSegCurvetoQuadraticSmoothRelConstructor SVGPathSegCurvetoQuadraticSmoothRel;
-    attribute SVGPathSegLinetoAbsConstructor SVGPathSegLinetoAbs;
-    attribute SVGPathSegLinetoHorizontalAbsConstructor SVGPathSegLinetoHorizontalAbs;
-    attribute SVGPathSegLinetoHorizontalRelConstructor SVGPathSegLinetoHorizontalRel;
-    attribute SVGPathSegLinetoRelConstructor SVGPathSegLinetoRel;
-    attribute SVGPathSegLinetoVerticalAbsConstructor SVGPathSegLinetoVerticalAbs;
-    attribute SVGPathSegLinetoVerticalRelConstructor SVGPathSegLinetoVerticalRel;
-    attribute SVGPathSegListConstructor SVGPathSegList;
-    attribute SVGPathSegMovetoAbsConstructor SVGPathSegMovetoAbs;
-    attribute SVGPathSegMovetoRelConstructor SVGPathSegMovetoRel;
-    attribute SVGPatternElementConstructor SVGPatternElement;
-    attribute SVGPointConstructor SVGPoint;
-    attribute SVGPointListConstructor SVGPointList;
-    attribute SVGPolygonElementConstructor SVGPolygonElement;
-    attribute SVGPolylineElementConstructor SVGPolylineElement;
-    attribute SVGPreserveAspectRatioConstructor SVGPreserveAspectRatio;
-    attribute SVGRadialGradientElementConstructor SVGRadialGradientElement;
-    attribute SVGRectConstructor SVGRect;
-    attribute SVGRectElementConstructor SVGRectElement;
-    attribute SVGRenderingIntentConstructor SVGRenderingIntent;
-    attribute SVGScriptElementConstructor SVGScriptElement;
-    attribute SVGStopElementConstructor SVGStopElement;
-    attribute SVGStringListConstructor SVGStringList;
-    attribute SVGStyleElementConstructor SVGStyleElement;
-    attribute SVGSVGElementConstructor SVGSVGElement;
-    attribute SVGSwitchElementConstructor SVGSwitchElement;
-    attribute SVGSymbolElementConstructor SVGSymbolElement;
-    attribute SVGTextContentElementConstructor SVGTextContentElement;
-    attribute SVGTextElementConstructor SVGTextElement;
-    attribute SVGTextPathElementConstructor SVGTextPathElement;
-    attribute SVGTextPositioningElementConstructor SVGTextPositioningElement;
-    attribute SVGTitleElementConstructor SVGTitleElement;
-    attribute SVGTransformConstructor SVGTransform;
-    attribute SVGTransformListConstructor SVGTransformList;
-    attribute SVGTRefElementConstructor SVGTRefElement;
-    attribute SVGTSpanElementConstructor SVGTSpanElement;
-    attribute SVGUnitTypesConstructor SVGUnitTypes;
-    attribute SVGUseElementConstructor SVGUseElement;
-    attribute SVGViewElementConstructor SVGViewElement;
-    attribute SVGViewSpecConstructor SVGViewSpec;
-    attribute SVGZoomAndPanConstructor SVGZoomAndPan;
-
-    attribute SVGAnimateColorElementConstructor SVGAnimateColorElement;
-    attribute SVGAnimateElementConstructor SVGAnimateElement;
-    attribute SVGAnimateMotionElementConstructor SVGAnimateMotionElement;
-    attribute SVGAnimateTransformElementConstructor SVGAnimateTransformElement;
-    attribute SVGMPathElementConstructor SVGMPathElement;
-    attribute SVGSetElementConstructor SVGSetElement;
-
-#if defined(ENABLE_SVG_FONTS) && ENABLE_SVG_FONTS
-    attribute SVGAltGlyphDefElementConstructor SVGAltGlyphDefElement;
-    attribute SVGAltGlyphElementConstructor SVGAltGlyphElement;
-    attribute SVGAltGlyphItemElementConstructor SVGAltGlyphItemElement;
-//      attribute SVGDefinitionSrcElementConstructor SVGDefinitionSrcElement;
-    attribute SVGFontElementConstructor SVGFontElement;
-    attribute SVGFontFaceElementConstructor SVGFontFaceElement;
-    attribute SVGFontFaceFormatElementConstructor SVGFontFaceFormatElement;
-    attribute SVGFontFaceNameElementConstructor SVGFontFaceNameElement;
-    attribute SVGFontFaceSrcElementConstructor SVGFontFaceSrcElement;
-    attribute SVGFontFaceUriElementConstructor SVGFontFaceUriElement;
-    attribute SVGGlyphElementConstructor SVGGlyphElement;
-    attribute SVGGlyphRefElementConstructor SVGGlyphRefElement;
-    attribute SVGHKernElementConstructor SVGHKernElement;
-    attribute SVGMissingGlyphElementConstructor SVGMissingGlyphElement;
-    attribute SVGVKernElementConstructor SVGVKernElement;
-#endif
-
-    attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
-    attribute SVGFEBlendElementConstructor SVGFEBlendElement;
-    attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
-    attribute SVGFEComponentTransferElementConstructor SVGFEComponentTransferElement;
-    attribute SVGFECompositeElementConstructor SVGFECompositeElement;
-    attribute SVGFEConvolveMatrixElementConstructor SVGFEConvolveMatrixElement;
-    attribute SVGFEDiffuseLightingElementConstructor SVGFEDiffuseLightingElement;
-    attribute SVGFEDisplacementMapElementConstructor SVGFEDisplacementMapElement;
-    attribute SVGFEDistantLightElementConstructor SVGFEDistantLightElement;
-    attribute SVGFEDropShadowElementConstructor SVGFEDropShadowElement;
-    attribute SVGFEFloodElementConstructor SVGFEFloodElement;
-    attribute SVGFEFuncAElementConstructor SVGFEFuncAElement;
-    attribute SVGFEFuncBElementConstructor SVGFEFuncBElement;
-    attribute SVGFEFuncGElementConstructor SVGFEFuncGElement;
-    attribute SVGFEFuncRElementConstructor SVGFEFuncRElement;
-    attribute SVGFEGaussianBlurElementConstructor SVGFEGaussianBlurElement;
-    attribute SVGFEImageElementConstructor SVGFEImageElement;
-    attribute SVGFEMergeElementConstructor SVGFEMergeElement;
-    attribute SVGFEMergeNodeElementConstructor SVGFEMergeNodeElement;
-    attribute SVGFEMorphologyElementConstructor SVGFEMorphologyElement;
-    attribute SVGFEOffsetElementConstructor SVGFEOffsetElement;
-    attribute SVGFEPointLightElementConstructor SVGFEPointLightElement;
-    attribute SVGFESpecularLightingElementConstructor SVGFESpecularLightingElement;
-    attribute SVGFESpotLightElementConstructor SVGFESpotLightElement;
-    attribute SVGFETileElementConstructor SVGFETileElement;
-    attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
-    attribute SVGFilterElementConstructor SVGFilterElement;
-#endif
-
-    attribute DOMFormDataConstructor FormData;
-
-    attribute FileErrorConstructor FileError;
-    attribute FileReaderConstructor FileReader;
-
-    attribute DOMURLConstructor URL;
-    attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
-
-    attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
-    attribute MutationObserverConstructor MutationObserver;
-    attribute MutationRecordConstructor MutationRecord;
-
-    [EnabledAtRuntime=mediaSource] attribute MediaSourceConstructor WebKitMediaSource;
-    [EnabledAtRuntime=mediaSource] attribute SourceBufferConstructor WebKitSourceBuffer;
-    [EnabledAtRuntime=mediaSource] attribute SourceBufferListConstructor WebKitSourceBufferList;
+    // Constructors whose name does not match the interface name.
+    // FIXME: Remove these once [ImplementedAs] is used and once constructor names match interface names.
+    attribute ShadowRootConstructor WebKitShadowRoot;
+    [Conditional=WEB_AUDIO] attribute PannerNodeConstructor webkitAudioPannerNode;
 
     // window.toString() requires special handling in V8
     [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString toString();
+
+    [ImplementedAs=anonymousIndexedGetter] getter DOMWindow(unsigned long index);
 };
 
diff --git a/core/page/DOMWindowPagePopup.idl b/core/page/DOMWindowPagePopup.idl
index b942747..2ce0bec 100644
--- a/core/page/DOMWindowPagePopup.idl
+++ b/core/page/DOMWindowPagePopup.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    Conditional=PAGE_POPUP,
+    EnabledAtRuntime=pagePopup
 ] partial interface DOMWindow {
     [EnabledPerContext=pagePopup] readonly attribute PagePopupController pagePopupController;
 };
diff --git a/core/page/History.idl b/core/page/History.idl
index 92d889a..40e6648 100644
--- a/core/page/History.idl
+++ b/core/page/History.idl
@@ -23,18 +23,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    CheckSecurity,
-    CustomNamedSetter,
-    CustomDeleteProperty,
-    CustomEnumerateProperty,
-] interface History {
+interface History {
     readonly attribute unsigned long length;
     [CachedAttribute, Custom] readonly attribute SerializedScriptValue state;
 
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void back();
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void forward();
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void go([Default=Undefined] optional long distance);
+    [CallWith=ScriptExecutionContext] void back();
+    [CallWith=ScriptExecutionContext] void forward();
+    [CallWith=ScriptExecutionContext] 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);
diff --git a/core/page/Location.idl b/core/page/Location.idl
index 9bcae96..96b211a 100644
--- a/core/page/Location.idl
+++ b/core/page/Location.idl
@@ -27,31 +27,28 @@
  */
 
 [
-    CheckSecurity,
-    CustomNamedSetter,
-    CustomDeleteProperty,
-    CustomEnumerateProperty,
+    CheckSecurity
 ] interface Location {
-    [DoNotCheckSecurityOnSetter, CustomSetter, Unforgeable] attribute DOMString href;
+    [SetterCallWith=ActiveWindow|FirstWindow, DoNotCheckSecurityOnSetter, Unforgeable] attribute DOMString href;
 
-    [Custom, Unforgeable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void assign([Default=Undefined] optional DOMString url);
-    [Custom, Unforgeable, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void replace([Default=Undefined] optional DOMString url);
-    [Custom, Unforgeable] void reload();
+    [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, DoNotCheckSecurity, Unforgeable, ReadOnly] void reload();
 
     // URI decomposition attributes
-    [CustomSetter] attribute DOMString protocol;
-    [CustomSetter] attribute DOMString host;
-    [CustomSetter] attribute DOMString hostname;
-    [CustomSetter] attribute DOMString port;
-    [CustomSetter] attribute DOMString pathname;
-    [CustomSetter] attribute DOMString search;
-    [CustomSetter] attribute DOMString hash;
+    [SetterCallWith=ActiveWindow|FirstWindow, SetterRaisesException] attribute DOMString protocol;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString host;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString hostname;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString port;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString pathname;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString search;
+    [SetterCallWith=ActiveWindow|FirstWindow] attribute DOMString hash;
 
     readonly attribute DOMString origin;
 
     readonly attribute DOMStringList ancestorOrigins;
 
-    [NotEnumerable, Custom, Unforgeable, ReadOnly, ImplementedAs=toStringFunction] DOMString toString();
+    [NotEnumerable, Unforgeable, ReadOnly, ImplementedAs=href] DOMString toString();
     [NotEnumerable, Custom, Unforgeable, ReadOnly] any valueOf();
 };
 
diff --git a/core/page/MemoryInfo.idl b/core/page/MemoryInfo.idl
index d3d331b..30ac718 100644
--- a/core/page/MemoryInfo.idl
+++ b/core/page/MemoryInfo.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface MemoryInfo {
 
     readonly attribute unsigned long totalJSHeapSize;
diff --git a/core/page/Navigator.idl b/core/page/Navigator.idl
index cd723a1..0c3e09d 100644
--- a/core/page/Navigator.idl
+++ b/core/page/Navigator.idl
@@ -17,16 +17,15 @@
     Boston, MA 02110-1301, USA.
 */
 
-[
-] interface Navigator {
+interface Navigator {
     readonly attribute DOMString appCodeName;
     readonly attribute DOMString appName;
     readonly attribute DOMString appVersion;
     readonly attribute DOMString language;
     readonly attribute DOMString userAgent;
     readonly attribute DOMString platform;
-    readonly attribute DOMPluginArray plugins;
-    readonly attribute DOMMimeTypeArray mimeTypes;
+    readonly attribute PluginArray plugins;
+    readonly attribute MimeTypeArray mimeTypes;
     readonly attribute DOMString product;
     readonly attribute DOMString productSub;
     readonly attribute DOMString vendor;
diff --git a/core/page/PagePopupController.idl b/core/page/PagePopupController.idl
index eb67bc8..c7f545f 100644
--- a/core/page/PagePopupController.idl
+++ b/core/page/PagePopupController.idl
@@ -29,8 +29,8 @@
  */
 
 [
-    Conditional=PAGE_POPUP,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    EnabledAtRuntime=pagePopup
 ] interface PagePopupController {
     void setValueAndClosePopup(long numberValue, DOMString stringValue);
     void setValue(DOMString value);
diff --git a/core/page/Performance.idl b/core/page/Performance.idl
index cb9d805..87a5b06 100644
--- a/core/page/Performance.idl
+++ b/core/page/Performance.idl
@@ -31,7 +31,7 @@
 
 // See: http://dev.w3.org/2006/webapi/WebTiming/
 [
-    EventTarget,
+    EventTarget
 ] interface Performance {
     readonly attribute PerformanceNavigation navigation;
     readonly attribute PerformanceTiming timing;
diff --git a/core/page/PerformanceEntry.idl b/core/page/PerformanceEntry.idl
index 94638f8..6199cce 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
 [
-    CustomToV8,
+    CustomToV8
 ] interface PerformanceEntry {
     readonly attribute DOMString name;
     readonly attribute DOMString entryType;
diff --git a/core/page/PerformanceNavigation.idl b/core/page/PerformanceNavigation.idl
index c48ef41..cde7a72 100644
--- a/core/page/PerformanceNavigation.idl
+++ b/core/page/PerformanceNavigation.idl
@@ -29,8 +29,7 @@
  */
 
 // See: http://www.w3.org/TR/navigation-timing/
-[
-] interface PerformanceNavigation {
+interface PerformanceNavigation {
     const unsigned short TYPE_NAVIGATE = 0;
     const unsigned short TYPE_RELOAD = 1;
     const unsigned short TYPE_BACK_FORWARD = 2;
diff --git a/core/page/PerformanceTiming.idl b/core/page/PerformanceTiming.idl
index 874dead..160e5cc 100644
--- a/core/page/PerformanceTiming.idl
+++ b/core/page/PerformanceTiming.idl
@@ -29,8 +29,7 @@
  */
 
 // See: http://dev.w3.org/2006/webapi/WebTiming/
-[
-] interface PerformanceTiming {
+interface PerformanceTiming {
     readonly attribute unsigned long long navigationStart;
     readonly attribute unsigned long long unloadEventStart;
     readonly attribute unsigned long long unloadEventEnd;
diff --git a/core/page/Screen.idl b/core/page/Screen.idl
index 69f5dc1..e3df7b0 100644
--- a/core/page/Screen.idl
+++ b/core/page/Screen.idl
@@ -27,8 +27,7 @@
  */
 
 
-[
-] interface Screen {
+interface Screen {
     readonly attribute unsigned long height;
     readonly attribute unsigned long width;
     readonly attribute unsigned long colorDepth;
diff --git a/core/page/DOMSecurityPolicy.idl b/core/page/SecurityPolicy.idl
similarity index 96%
rename from core/page/DOMSecurityPolicy.idl
rename to core/page/SecurityPolicy.idl
index a765698..f5651da 100644
--- a/core/page/DOMSecurityPolicy.idl
+++ b/core/page/SecurityPolicy.idl
@@ -23,8 +23,8 @@
  */
 
 [
-    InterfaceName=SecurityPolicy
-] interface DOMSecurityPolicy {
+    ImplementedAs=DOMSecurityPolicy
+] interface SecurityPolicy {
     readonly attribute boolean allowsEval;
     readonly attribute boolean allowsInlineScript;
     readonly attribute boolean allowsInlineStyle;
diff --git a/core/page/DOMSelection.idl b/core/page/Selection.idl
similarity index 98%
rename from core/page/DOMSelection.idl
rename to core/page/Selection.idl
index f5a6828..1c93773 100644
--- a/core/page/DOMSelection.idl
+++ b/core/page/Selection.idl
@@ -30,8 +30,8 @@
 // This is based off of Mozilla's Selection interface
 // https://developer.mozilla.org/En/DOM/Selection
 [
-    InterfaceName=Selection
-] interface DOMSelection {
+    ImplementedAs=DOMSelection
+] interface Selection {
     readonly attribute Node anchorNode;
     readonly attribute long anchorOffset;
     readonly attribute Node focusNode;
diff --git a/core/page/SpeechInputEvent.idl b/core/page/SpeechInputEvent.idl
index be82107..4fe740b 100644
--- a/core/page/SpeechInputEvent.idl
+++ b/core/page/SpeechInputEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=INPUT_SPEECH,
+    Conditional=INPUT_SPEECH
 ] interface SpeechInputEvent : Event {
     readonly attribute SpeechInputResultList results;
 };
diff --git a/core/page/SpeechInputResult.idl b/core/page/SpeechInputResult.idl
index 2f09cb0..bc2d409 100644
--- a/core/page/SpeechInputResult.idl
+++ b/core/page/SpeechInputResult.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    Conditional=INPUT_SPEECH,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    Conditional=INPUT_SPEECH
 ] interface SpeechInputResult {
     readonly attribute DOMString utterance;
     readonly attribute float confidence;
diff --git a/core/page/SpeechInputResultList.idl b/core/page/SpeechInputResultList.idl
index 0e2bf56..0976ec3 100644
--- a/core/page/SpeechInputResultList.idl
+++ b/core/page/SpeechInputResultList.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    Conditional=INPUT_SPEECH,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    Conditional=INPUT_SPEECH
 ] interface SpeechInputResultList {
     readonly attribute unsigned long length;
     getter SpeechInputResult item([IsIndex] unsigned long index);
diff --git a/core/page/WorkerNavigator.idl b/core/page/WorkerNavigator.idl
index 353aadd..5304e83 100644
--- a/core/page/WorkerNavigator.idl
+++ b/core/page/WorkerNavigator.idl
@@ -27,6 +27,7 @@
  */
 
 [
+    NoInterfaceObject
 ] interface WorkerNavigator {
     readonly attribute DOMString appName;
     readonly attribute DOMString appVersion;
diff --git a/core/plugins/DOMMimeType.idl b/core/plugins/MimeType.idl
similarity index 91%
rename from core/plugins/DOMMimeType.idl
rename to core/plugins/MimeType.idl
index 0e3bd43..7af6fc1 100644
--- a/core/plugins/DOMMimeType.idl
+++ b/core/plugins/MimeType.idl
@@ -19,11 +19,11 @@
 */
 
 [
-    InterfaceName=MimeType
-] interface DOMMimeType {
+    ImplementedAs=DOMMimeType
+] interface MimeType {
     readonly attribute DOMString type;
     readonly attribute DOMString suffixes;
     readonly attribute DOMString description;
-    readonly attribute DOMPlugin enabledPlugin;
+    readonly attribute Plugin enabledPlugin;
 };
 
diff --git a/core/plugins/DOMMimeTypeArray.idl b/core/plugins/MimeTypeArray.idl
similarity index 81%
rename from core/plugins/DOMMimeTypeArray.idl
rename to core/plugins/MimeTypeArray.idl
index fd5fe9e..435e22f 100644
--- a/core/plugins/DOMMimeTypeArray.idl
+++ b/core/plugins/MimeTypeArray.idl
@@ -19,10 +19,10 @@
 */
 
 [
-    InterfaceName=MimeTypeArray
-] interface DOMMimeTypeArray {
+    ImplementedAs=DOMMimeTypeArray
+] interface MimeTypeArray {
     readonly attribute unsigned long length;
-    getter DOMMimeType item([Default=Undefined] optional unsigned long index);
-    getter DOMMimeType namedItem([Default=Undefined] optional DOMString name);
+    getter MimeType item([Default=Undefined] optional unsigned long index);
+    getter MimeType namedItem([Default=Undefined] optional DOMString name);
 };
 
diff --git a/core/plugins/DOMPlugin.idl b/core/plugins/Plugin.idl
similarity index 84%
rename from core/plugins/DOMPlugin.idl
rename to core/plugins/Plugin.idl
index 08e4a84..095dc49 100644
--- a/core/plugins/DOMPlugin.idl
+++ b/core/plugins/Plugin.idl
@@ -19,13 +19,13 @@
 */
 
 [
-    InterfaceName=Plugin
-] interface DOMPlugin {
+    ImplementedAs=DOMPlugin
+] interface Plugin {
     readonly attribute DOMString name;
     readonly attribute DOMString filename;
     readonly attribute DOMString description;
     readonly attribute unsigned long length;
-    getter DOMMimeType item([Default=Undefined] optional unsigned long index);
-    getter DOMMimeType namedItem([Default=Undefined] optional DOMString name);
+    getter MimeType item([Default=Undefined] optional unsigned long index);
+    getter MimeType namedItem([Default=Undefined] optional DOMString name);
 };
 
diff --git a/core/plugins/DOMPluginArray.idl b/core/plugins/PluginArray.idl
similarity index 82%
rename from core/plugins/DOMPluginArray.idl
rename to core/plugins/PluginArray.idl
index 52430aa..04e18c4 100644
--- a/core/plugins/DOMPluginArray.idl
+++ b/core/plugins/PluginArray.idl
@@ -19,11 +19,11 @@
 */
 
 [
-    InterfaceName=PluginArray
-] interface DOMPluginArray {
+    ImplementedAs=DOMPluginArray
+] interface PluginArray {
     readonly attribute unsigned long length;
-    getter DOMPlugin item([Default=Undefined] optional unsigned long index);
-    getter DOMPlugin namedItem([Default=Undefined] optional DOMString name);
+    getter Plugin item([Default=Undefined] optional unsigned long index);
+    getter Plugin namedItem([Default=Undefined] optional DOMString name);
     void refresh([Default=Undefined] optional boolean reload);
 };
 
diff --git a/core/scripts/in_file.py b/core/scripts/in_file.py
index fa71064..39a016b 100644
--- a/core/scripts/in_file.py
+++ b/core/scripts/in_file.py
@@ -44,7 +44,7 @@
 # Bare arguments (no '=') are treated as names with value True.
 # The first field will always be labeled 'name'.
 #
-# InFile.load_from_path('file.in', {'arg': None, 'arg2': []})
+# InFile.load_from_files(['file.in'], {'arg': None, 'arg2': []})
 #
 # Parsing produces an array of dictionaries:
 # [ { 'name' : 'name1', 'arg' :' value', arg2=['value2', 'value3'] }
@@ -53,16 +53,20 @@
     return line.startswith("//") or line.startswith("#")
 
 class InFile(object):
-    def __init__(self, lines, defaults, default_parameters):
+    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_path(self, path, defaults, default_parameters):
-        with open(os.path.abspath(path)) as in_file:
-            return InFile(in_file.readlines(), defaults, default_parameters)
+    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")
@@ -107,6 +111,9 @@
                 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:
diff --git a/core/scripts/in_generator.py b/core/scripts/in_generator.py
index 47b85f5..6cffaa9 100644
--- a/core/scripts/in_generator.py
+++ b/core/scripts/in_generator.py
@@ -27,27 +27,46 @@
 # 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
+import template_expander
 
 
 class Writer(object):
     # Subclasses should override.
     class_name = None
     defaults = None
+    valid_values = None
     default_parameters = None
 
-    def __init__(self, in_file_path):
-        self.in_file = InFile.load_from_path(in_file_path, self.defaults, self.default_parameters)
+    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
 
     # Subclasses should override.
     def generate_header(self):
-        raise NotImplementedError
+        return ''
+
+    # Subclasses should override.
+    def generate_interfaces_header(self):
+        return ''
+
+    # Subclasses should override.
+    def generate_headers_header(self):
+        return ''
 
     # Subclasses should override.
     def generate_implementation(self):
-        raise NotImplementedError
+        return ''
+
+    # Subclasses should override.
+    def generate_idl(self):
+        return ''
 
     def wrap_with_condition(self, string, condition):
         if not condition:
@@ -69,33 +88,72 @@
         with open(file_path, "w") as file_to_write:
             file_to_write.write(contents)
 
-    def write_header(self, output_dir):
-        contents = self.generate_header()
+    def _write_file(self, output_dir, generator, file_name):
+        contents = generator()
+        if type(contents) is dict:
+            contents = template_expander.apply_template(file_name + ".tmpl", contents)
         if not contents:
             return
-        path = os.path.join(output_dir, self.class_name + ".h")
+        path = os.path.join(output_dir, file_name)
         self._forcibly_create_text_file_at_path_with_contents(path, contents)
 
+    def write_header(self, output_dir):
+        self._write_file(output_dir, self.generate_header, self.class_name + '.h')
+
+    def write_headers_header(self, output_dir):
+        self._write_file(output_dir, self.generate_headers_header, self.class_name + 'Headers.h')
+
+    def write_interfaces_header(self, output_dir):
+        self._write_file(output_dir, self.generate_interfaces_header, self.class_name + 'Interfaces.h')
+
     def write_implmentation(self, output_dir):
-        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)
+        self._write_file(output_dir, self.generate_implementation, self.class_name + '.cpp')
+
+    def write_idl(self, output_dir):
+        self._write_file(output_dir, self.generate_idl, self.class_name + '.idl')
 
 
 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_FILE [OUTPUT_DIRECTORY]" % script_name
+            print "USAGE: %i INPUT_FILES" % script_name
             exit(1)
-        output_dir = args[1] if len(args) > 1 else os.getcwd()
 
-        writer = self._writer_class(args[0])
-        writer.write_header(output_dir)
-        writer.write_implmentation(output_dir)
+        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_header(options.output_dir)
+        writer.write_headers_header(options.output_dir)
+        writer.write_interfaces_header(options.output_dir)
+        writer.write_implmentation(options.output_dir)
+        writer.write_idl(options.output_dir)
diff --git a/core/scripts/make_css_property_names.py b/core/scripts/make_css_property_names.py
new file mode 100755
index 0000000..1c5756d
--- /dev/null
+++ b/core/scripts/make_css_property_names.py
@@ -0,0 +1,220 @@
+#!/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 <string.h>
+#include "wtf/HashFunctions.h"
+#include "wtf/HashTraits.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);
+
+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 {
+const char* const propertyNameStrings[numCSSProperties] = {
+%(property_name_strings)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 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 propertyNameStrings[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 = propertyNameStrings[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);
+}
+
+} // namespace WebCore
+"""
+
+
+class CSSPropertiesWriter(in_generator.Writer):
+    class_name = "CSSPropertyNames"
+    defaults = {
+        'alias_for': None,
+        'condition': None,
+    }
+
+    def __init__(self, file_paths, enabled_conditions):
+        in_generator.Writer.__init__(self, file_paths, enabled_conditions)
+
+        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)
+        self._first_property_id = 1001  # Historical, unclear why.
+        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
+
+    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 generate_implementation(self):
+        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",' % property, self._properties)),
+            'property_to_enum_map': '\n'.join(map(lambda property: '%(name)s, %(enum_name)s' % property, self._properties + self._aliases)),
+        }
+        # 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(CSSPropertiesWriter).main(sys.argv)
diff --git a/core/scripts/make_css_value_keywords.py b/core/scripts/make_css_value_keywords.py
new file mode 100755
index 0000000..5cbd038
--- /dev/null
+++ b/core/scripts/make_css_value_keywords.py
@@ -0,0 +1,131 @@
+#!/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 <string.h>
+
+namespace WebCore {
+
+enum CSSValueID {
+    CSSValueInvalid = 0,
+%(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);
+
+} // 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 {
+const char* const valueList[] = {
+"",
+%(value_keyword_strings)s
+0
+};
+
+%%}
+%%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 word-array-name value_word_list
+%%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 valueList[id];
+}
+
+} // namespace WebCore
+"""
+
+
+class CSSValueKeywordsWriter(in_generator.Writer):
+    class_name = "CSSValueKeywords"
+    defaults = {
+        'condition': None,
+    }
+
+    def __init__(self, file_paths, enabled_conditions):
+        in_generator.Writer.__init__(self, file_paths, enabled_conditions)
+
+        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
+
+    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 generate_header(self):
+        return HEADER_TEMPLATE % {
+            'license': license.license_for_generated_cpp(),
+            'class_name': self.class_name,
+            'value_keyword_enums': "\n".join(map(self._enum_declaration, self._value_keywords)),
+            'value_keywords_count': len(self._value_keywords),
+            'max_value_keyword_length': reduce(max, map(len, map(lambda property: property['name'], self._value_keywords))),
+        }
+
+    def generate_implementation(self):
+        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",' % property, self._value_keywords)),
+            'value_keyword_to_enum_map': '\n'.join(map(lambda property: '%(name)s, %(enum_name)s' % property, self._value_keywords)),
+        }
+        # 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_dom_exceptions.py b/core/scripts/make_dom_exceptions.py
new file mode 100755
index 0000000..e945262
--- /dev/null
+++ b/core/scripts/make_dom_exceptions.py
@@ -0,0 +1,161 @@
+#!/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
+import license
+
+
+HEADER_TEMPLATE = """%(license)s
+
+#ifndef %(class_name)s_h
+#define %(class_name)s_h
+
+namespace WebCore {
+
+typedef int ExceptionCode;
+
+enum ExceptionType {
+%(exception_types)s
+};
+
+struct ExceptionCodeDescription {
+    explicit ExceptionCodeDescription(ExceptionCode);
+
+    // |typeName| has spaces and is suitable for use in exception
+    // description strings; maximum length is 10 characters.
+    const char* typeName;
+
+    // |name| is the exception name, also intended for use in exception
+    // description strings; 0 if name not known; maximum length is 27
+    // characters.
+    const char* name;
+
+    // |description| is the exception description, intended for use in
+    // exception strings. It is a more readable explanation of error.
+    const char* description;
+
+    // |code| is the numeric value of the exception within a particular type.
+    int code;
+
+    ExceptionType type;
+};
+
+} // namespace WebCore
+
+#endif // %(class_name)s_h
+"""
+
+
+IMPLEMENTATION_TEMPLATE = """%(license)s
+
+#include "config.h"
+#include "%(class_name)s.h"
+
+#include "ExceptionCode.h"
+
+%(includes)s
+
+#include "modules/indexeddb/IDBDatabaseException.h"
+
+namespace WebCore {
+
+ExceptionCodeDescription::ExceptionCodeDescription(ExceptionCode ec)
+{
+    ASSERT(ec);
+
+%(description_initalizations)s
+
+    // FIXME: This special case for IDB is undesirable. It is the first usage
+    // of "new style" DOMExceptions where there is no IDL type, but there are
+    // API-specific exception names and/or messages. Consider refactoring back
+    // into the code generator when a common pattern emerges.
+    if (IDBDatabaseException::initializeDescription(ec, this))
+        return;
+
+    if (DOMCoreException::initializeDescription(ec, this))
+        return;
+
+    ASSERT_NOT_REACHED();
+}
+
+} // namespace WebCore
+"""
+
+
+class ExceptionCodeDescriptionWriter(name_macros.Writer):
+    defaults = {
+        'interfaceName': None,
+        'conditional': None,
+    }
+    default_parameters = {
+        'namespace': '',
+    }
+
+    def _exceptions(self):
+        return self.in_file.name_dictionaries
+
+    def _exception_type(self, exception):
+        name = os.path.basename(exception['name'])
+        return self.wrap_with_condition('    ' + name + 'Type,', exception['conditional'])
+
+    def generate_header(self):
+        return HEADER_TEMPLATE % {
+            'license': license.license_for_generated_cpp(),
+            'class_name': self.class_name,
+            'exception_types': '\n'.join(map(self._exception_type, self._exceptions())),
+        }
+
+    def _include(self, exception):
+        include = '#include "' + exception['name'] + '.h"'
+        return self.wrap_with_condition(include, exception['conditional'])
+
+    def _description_initalization(self, exception):
+        name = os.path.basename(exception['name'])
+        if name == 'DOMCoreException':
+            return ''  # DOMCoreException needs to be last because it's a catch-all.
+        description_initalization = """    if (%(name)s::initializeDescription(ec, this))
+        return;""" % {'name': name}
+        return self.wrap_with_condition(description_initalization, exception['conditional'])
+
+    def generate_implementation(self):
+        return IMPLEMENTATION_TEMPLATE % {
+            'license': license.license_for_generated_cpp(),
+            'class_name': self.class_name,
+            'includes': '\n'.join(map(self._include, self._exceptions())),
+            'description_initalizations': '\n'.join(map(self._description_initalization, self._exceptions())),
+        }
+
+
+if __name__ == "__main__":
+    name_macros.Maker(ExceptionCodeDescriptionWriter).main(sys.argv)
diff --git a/core/scripts/make_event_factory.py b/core/scripts/make_event_factory.py
index c5a5f0b..5a6653c 100644
--- a/core/scripts/make_event_factory.py
+++ b/core/scripts/make_event_factory.py
@@ -32,20 +32,20 @@
 import shutil
 
 from in_file import InFile
-import in_generator
+import name_macros
 import license
 
 
 IMPLEMENTATION_TEMPLATE = """%(license)s
 #include "config.h"
-#include "%(namespace)sFactory.h"
+#include "%(class_name)sFactory.h"
 
-#include "%(namespace)sHeaders.h"
+#include "%(class_name)sHeaders.h"
 #include "RuntimeEnabledFeatures.h"
 
 namespace WebCore {
 
-PassRefPtr<%(namespace)s> %(namespace)sFactory::create(const String& type)
+PassRefPtr<%(class_name)s> %(class_name)sFactory::create(const String& type)
 {
 %(factory_implementation)s
     return 0;
@@ -55,7 +55,7 @@
 """
 
 
-class EventFactoryWriter(in_generator.Writer):
+class EventFactoryWriter(name_macros.Writer):
     defaults = {
         'interfaceName' : None,
         'conditional' : None,
@@ -64,10 +64,6 @@
     default_parameters = {
         'namespace': '',
     }
-    class_name = 'EventFactory'
-
-    def _namespace(self):
-        return self.in_file.parameters['namespace']
 
     def _events(self):
         return self.in_file.name_dictionaries
@@ -86,16 +82,13 @@
         }
         return self.wrap_with_condition(implementation, event['conditional'])
 
-    def generate_header(self):
-        pass
-
     def generate_implementation(self):
         return IMPLEMENTATION_TEMPLATE % {
-            'namespace': self._namespace().strip('"'),
+            'class_name': self.class_name,
             '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)
+    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
new file mode 100755
index 0000000..dc33323
--- /dev/null
+++ b/core/scripts/make_internal_runtime_flags.py
@@ -0,0 +1,58 @@
+#!/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
+
+
+# We want exactly the same parsing as RuntimeFeatureWriter
+# but generate different files.
+class InternalRuntimeFlagsWriter(make_runtime_features.RuntimeFeatureWriter):
+    class_name = "InternalRuntimeFlags"
+
+    def generate_idl(self):
+        return {
+            'features': self._features,
+        }
+
+    def generate_header(self):
+        return {
+            'features': self._features,
+            'feature_sets': self._feature_sets(),
+        }
+
+    def generate_implementation(self):
+        return None
+
+
+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
index 13e1f9b..d0f9b96 100755
--- a/core/scripts/make_runtime_features.py
+++ b/core/scripts/make_runtime_features.py
@@ -32,56 +32,27 @@
 
 from in_file import InFile
 import in_generator
-import license
 
 
-HEADER_TEMPLATE = """%(license)s
-#ifndef %(class_name)s_h
-#define %(class_name)s_h
-
-namespace WebCore {
-
-// A class that stores static enablers for all experimental features.
-
-class %(class_name)s {
-public:
-%(method_declarations)s
-private:
-    %(class_name)s() { }
-
-%(storage_declarations)s
-};
-
-} // namespace WebCore
-
-#endif // %(class_name)s_h
-"""
-
-IMPLEMENTATION_TEMPLATE = """%(license)s
-#include "config.h"
-#include "%(class_name)s.h"
-
-namespace WebCore {
-
-%(storage_definitions)s
-
-} // namespace WebCore
-"""
-
 class RuntimeFeatureWriter(in_generator.Writer):
-    class_name = "RuntimeEnabledFeatures"
+    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' : [],
-        'default': 'false',
         'custom': False,
+        'status': None,
     }
 
-    def __init__(self, in_file_path):
-        super(RuntimeFeatureWriter, self).__init__(in_file_path)
-        self._all_features = self.in_file.name_dictionaries
+    def __init__(self, in_file_path, enabled_conditions):
+        super(RuntimeFeatureWriter, self).__init__(in_file_path, enabled_conditions)
+        self._features = self.in_file.name_dictionaries
         # Make sure the resulting dictionaries have all the keys we expect.
-        for feature in self._all_features:
+        for feature in self._features:
             feature['first_lowered_name'] = self._lower_first(feature['name'])
             # Most features just check their isFooEnabled bool
             # but some depend on more than one bool.
@@ -89,49 +60,30 @@
             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._all_features)
+        self._non_custom_features = filter(lambda feature: not feature['custom'], self._features)
 
     def _lower_first(self, string):
         lowered = string[0].lower() + string[1:]
         lowered = lowered.replace("cSS", "css")
         lowered = lowered.replace("iME", "ime")
+        lowered = lowered.replace("hTML", "html")
         return lowered
 
-    def _method_declaration(self, feature):
-        if feature['custom']:
-            return "    static bool %(first_lowered_name)sEnabled();\n" % feature
-        unconditional = """    static void set%(name)sEnabled(bool isEnabled) { is%(name)sEnabled = isEnabled; }
-    static bool %(first_lowered_name)sEnabled() { return %(enabled_condition)s; }
-"""
-        conditional = "#if ENABLE(%(condition)s)\n" + unconditional + """#else
-    static void set%(name)sEnabled(bool) { }
-    static bool %(first_lowered_name)sEnabled() { return false; }
-#endif
-"""
-        template = conditional if feature['condition'] else unconditional
-        return template % feature
-
-    def _storage_declarations(self, feature):
-        declaration = "    static bool is%(name)sEnabled;" % feature
-        return self.wrap_with_condition(declaration, feature['condition'])
+    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']
 
     def generate_header(self):
-        return HEADER_TEMPLATE % {
-            'class_name' : self.class_name,
-            'license' : license.license_for_generated_cpp(),
-            'method_declarations' : "\n".join(map(self._method_declaration, self._all_features)),
-            'storage_declarations' : "\n".join(map(self._storage_declarations, self._non_custom_features)),
+        return {
+            'features': self._features,
+            'feature_sets': self._feature_sets(),
         }
 
-    def _storage_definition(self, feature):
-        definition = "bool RuntimeEnabledFeatures::is%(name)sEnabled = %(default)s;" % feature
-        return self.wrap_with_condition(definition, feature['condition'])
-
     def generate_implementation(self):
-        return IMPLEMENTATION_TEMPLATE % {
-            'class_name' : self.class_name,
-            'license' : license.license_for_generated_cpp(),
-            'storage_definitions' : "\n".join(map(self._storage_definition, self._non_custom_features)),
+        return {
+            'features': self._features,
+            'feature_sets': self._feature_sets(),
         }
 
 
diff --git a/core/scripts/make_style_builder.py b/core/scripts/make_style_builder.py
new file mode 100755
index 0000000..88c358f
--- /dev/null
+++ b/core/scripts/make_style_builder.py
@@ -0,0 +1,97 @@
+#!/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
+
+
+class StyleBuilderWriter(in_generator.Writer):
+    class_name = 'StyleBuilder'
+
+    valid_values = {
+        'apply_type': ['default', 'length'],
+        'use_none': [True, False],
+        'use_intrinsic': [True, False],
+        'use_auto': [True, False],
+    }
+    defaults = {
+        'condition': None,
+        'apply_type': 'default',
+        'name_for_methods': None,
+# These depend on property name by default
+        'type_name': None,
+        'getter': None,
+        'setter': None,
+        'initial': None,
+# For the length apply type
+        'use_none': False,
+        'use_intrinsic': False,
+        'use_auto': False,
+    }
+
+    def __init__(self, in_files, enabled_conditions):
+        super(StyleBuilderWriter, self).__init__(in_files, enabled_conditions)
+        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", "")
+            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)
+
+# 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:]
+
+    def generate_implementation(self):
+        return {
+            "properties": self._properties,
+        }
+
+
+if __name__ == "__main__":
+    in_generator.Maker(StyleBuilderWriter).main(sys.argv)
diff --git a/core/scripts/name_macros.py b/core/scripts/name_macros.py
new file mode 100644
index 0000000..d7928c3
--- /dev/null
+++ b/core/scripts/name_macros.py
@@ -0,0 +1,159 @@
+# 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()
+
+
+def _name_for_entry(entry):
+    if entry['interfaceName']:
+        return entry['interfaceName']
+    return os.path.basename(entry['name'])
+
+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()
+
+    def _sort_entries_by_conditional(self):
+        unconditional_names = set()
+        for entry in self.in_file.name_dictionaries:
+            conditional = entry['conditional']
+            if not conditional:
+                name = _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 = _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 _headers_header_include(self, entry):
+        path = entry['name']
+        name = _name_for_entry(entry)
+        if entry['interfaceName']:
+            path = entry['interfaceName']  # FIXME: This seems wrong
+        include = '#include "%(path)s.h"\n#include "V8%(name)s.h"' % {
+            'path': path,
+            'name': name,
+        }
+        return self.wrap_with_condition(include, entry['conditional'])
+
+    def generate_headers_header(self):
+        return HEADER_TEMPLATE % {
+            'license': license.license_for_generated_cpp(),
+            'class_name': self.class_name,
+            'includes': '\n'.join(map(self._headers_header_include, 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': _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': _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/template_expander.py b/core/scripts/template_expander.py
new file mode 100644
index 0000000..60a272c
--- /dev/null
+++ b/core/scripts/template_expander.py
@@ -0,0 +1,43 @@
+# 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
+sys.path.append(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]))
+    template = jinja_env.get_template(basename)
+    return template.render(params)
diff --git a/core/scripts/templates/InternalRuntimeFlags.idl.tmpl b/core/scripts/templates/InternalRuntimeFlags.idl.tmpl
new file mode 100644
index 0000000..c73ce7a
--- /dev/null
+++ b/core/scripts/templates/InternalRuntimeFlags.idl.tmpl
@@ -0,0 +1,15 @@
+{% 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/storage/Storage.idl b/core/storage/Storage.idl
index ce94506..d84944d 100644
--- a/core/storage/Storage.idl
+++ b/core/storage/Storage.idl
@@ -24,13 +24,13 @@
  */
 
 [
-    CustomNamedGetter,
     CustomDeleteProperty,
     CustomEnumerateProperty,
-    CustomIndexedGetter,
     CustomIndexedSetter,
-    CustomNamedSetter,
+    CustomNamedSetter
 ] interface Storage {
+    [RaisesException, ImplementedAs=anonymousIndexedGetter] getter DOMString(unsigned long index);
+    [RaisesException, ImplementedAs=anonymousNamedGetter] getter DOMString(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);
diff --git a/core/svg/ElementTimeControl.idl b/core/svg/ElementTimeControl.idl
index 5307596..cad80aa 100644
--- a/core/svg/ElementTimeControl.idl
+++ b/core/svg/ElementTimeControl.idl
@@ -25,7 +25,7 @@
  */
  
 [
-    Conditional=SVG,
+    Conditional=SVG
     
 ] interface ElementTimeControl { 
     void beginElement();
diff --git a/core/svg/SVGAltGlyphElement.idl b/core/svg/SVGAltGlyphElement.idl
index 2e1f4c5..8d8b1f4 100644
--- a/core/svg/SVGAltGlyphElement.idl
+++ b/core/svg/SVGAltGlyphElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&SVG_FONTS,
+    Conditional=SVG&SVG_FONTS
 ] interface SVGAltGlyphElement : SVGTextPositioningElement, SVGURIReference {
     [SetterRaisesException] attribute DOMString glyphRef;
     [SetterRaisesException] attribute DOMString format;
diff --git a/core/svg/SVGAnimatedAngle.idl b/core/svg/SVGAnimatedAngle.idl
index 40dac7f..3e96104 100644
--- a/core/svg/SVGAnimatedAngle.idl
+++ b/core/svg/SVGAnimatedAngle.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedAngle {
     readonly attribute SVGAngle baseVal;
     readonly attribute SVGAngle animVal;
diff --git a/core/svg/SVGAnimatedBoolean.idl b/core/svg/SVGAnimatedBoolean.idl
index c00f475..7ad6bb1 100644
--- a/core/svg/SVGAnimatedBoolean.idl
+++ b/core/svg/SVGAnimatedBoolean.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedBoolean {
     [StrictTypeChecking, SetterRaisesException] attribute boolean baseVal;
     readonly attribute boolean animVal;
diff --git a/core/svg/SVGAnimatedEnumeration.idl b/core/svg/SVGAnimatedEnumeration.idl
index 21f85ba..de96682 100644
--- a/core/svg/SVGAnimatedEnumeration.idl
+++ b/core/svg/SVGAnimatedEnumeration.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedEnumeration {
     [StrictTypeChecking, SetterRaisesException] attribute unsigned short baseVal;
     readonly attribute unsigned short animVal;
diff --git a/core/svg/SVGAnimatedInteger.idl b/core/svg/SVGAnimatedInteger.idl
index d827c4e..5d6b15e 100644
--- a/core/svg/SVGAnimatedInteger.idl
+++ b/core/svg/SVGAnimatedInteger.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedInteger {
     [StrictTypeChecking, SetterRaisesException] attribute long baseVal;
     readonly attribute long animVal;
diff --git a/core/svg/SVGAnimatedLength.idl b/core/svg/SVGAnimatedLength.idl
index 7abba37..241aaad 100644
--- a/core/svg/SVGAnimatedLength.idl
+++ b/core/svg/SVGAnimatedLength.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedLength {
     readonly attribute SVGLength baseVal;
     readonly attribute SVGLength animVal;
diff --git a/core/svg/SVGAnimatedLengthList.idl b/core/svg/SVGAnimatedLengthList.idl
index cfb3c91..934748a 100644
--- a/core/svg/SVGAnimatedLengthList.idl
+++ b/core/svg/SVGAnimatedLengthList.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedLengthList {
     readonly attribute SVGLengthList baseVal;
     readonly attribute SVGLengthList animVal;
diff --git a/core/svg/SVGAnimatedNumber.idl b/core/svg/SVGAnimatedNumber.idl
index 4c5e1f9..2fa7eba 100644
--- a/core/svg/SVGAnimatedNumber.idl
+++ b/core/svg/SVGAnimatedNumber.idl
@@ -25,8 +25,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedNumber {
     [StrictTypeChecking, SetterRaisesException] attribute float baseVal;
     readonly attribute float animVal;
diff --git a/core/svg/SVGAnimatedNumberList.idl b/core/svg/SVGAnimatedNumberList.idl
index f7cbfb7..b912780 100644
--- a/core/svg/SVGAnimatedNumberList.idl
+++ b/core/svg/SVGAnimatedNumberList.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedNumberList {
     readonly attribute SVGNumberList baseVal;
     readonly attribute SVGNumberList animVal;
diff --git a/core/svg/SVGAnimatedPreserveAspectRatio.idl b/core/svg/SVGAnimatedPreserveAspectRatio.idl
index f6b89dd..a84c02d 100644
--- a/core/svg/SVGAnimatedPreserveAspectRatio.idl
+++ b/core/svg/SVGAnimatedPreserveAspectRatio.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedPreserveAspectRatio {
     readonly attribute SVGPreserveAspectRatio baseVal;
     readonly attribute SVGPreserveAspectRatio animVal;
diff --git a/core/svg/SVGAnimatedRect.idl b/core/svg/SVGAnimatedRect.idl
index 6be752e..99e9a62 100644
--- a/core/svg/SVGAnimatedRect.idl
+++ b/core/svg/SVGAnimatedRect.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedRect {
     readonly attribute SVGRect baseVal;
     readonly attribute SVGRect animVal;
diff --git a/core/svg/SVGAnimatedString.idl b/core/svg/SVGAnimatedString.idl
index 62a8dbe..a331bea 100644
--- a/core/svg/SVGAnimatedString.idl
+++ b/core/svg/SVGAnimatedString.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedString {
     [SetterRaisesException] attribute DOMString baseVal;
     readonly attribute DOMString animVal;
diff --git a/core/svg/SVGAnimatedTransformList.idl b/core/svg/SVGAnimatedTransformList.idl
index 0f2f46f..4ce7240 100644
--- a/core/svg/SVGAnimatedTransformList.idl
+++ b/core/svg/SVGAnimatedTransformList.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGAnimatedTransformList {
     readonly attribute SVGTransformList baseVal;
     readonly attribute SVGTransformList animVal;
diff --git a/core/svg/SVGAnimationElement.idl b/core/svg/SVGAnimationElement.idl
index 2f0b912..0507764 100644
--- a/core/svg/SVGAnimationElement.idl
+++ b/core/svg/SVGAnimationElement.idl
@@ -24,7 +24,8 @@
  */
 
 [
-    Conditional=SVG,
+    NoInterfaceObject,
+    Conditional=SVG
 ] interface SVGAnimationElement : SVGElement,
                                                   SVGTests,
                                                   SVGExternalResourcesRequired,
@@ -33,6 +34,6 @@
 
     float getStartTime();
     float getCurrentTime();
-    [RaisesException] float getSimpleDuration();
+    float getSimpleDuration();
 };
 
diff --git a/core/svg/SVGColor.idl b/core/svg/SVGColor.idl
index 31dcd4b..21c669e 100644
--- a/core/svg/SVGColor.idl
+++ b/core/svg/SVGColor.idl
@@ -20,8 +20,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGColor : CSSValue {
     const unsigned short SVG_COLORTYPE_UNKNOWN = 0;
     const unsigned short SVG_COLORTYPE_RGBCOLOR = 1;
diff --git a/core/svg/SVGElement.idl b/core/svg/SVGElement.idl
index 73d0077..96a82e0 100644
--- a/core/svg/SVGElement.idl
+++ b/core/svg/SVGElement.idl
@@ -25,7 +25,7 @@
     CustomToV8
 ] interface SVGElement : Element {
     [Reflect] attribute DOMString id;
-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlbase;
+    [TreatNullAs=NullString] attribute DOMString xmlbase;
     readonly attribute SVGSVGElement ownerSVGElement;
     readonly attribute SVGElement viewportElement;
 };
diff --git a/core/svg/SVGException.idl b/core/svg/SVGException.idl
index d9872df..ef26a64 100644
--- a/core/svg/SVGException.idl
+++ b/core/svg/SVGException.idl
@@ -20,8 +20,7 @@
 
 [
     Conditional=SVG,
-    DoNotCheckConstants,
-    ImplementationLacksVTable
+    DoNotCheckConstants
 ] exception SVGException {
 
     readonly attribute unsigned short   code;
diff --git a/core/svg/SVGExternalResourcesRequired.idl b/core/svg/SVGExternalResourcesRequired.idl
index 854b268..d7b4d27 100644
--- a/core/svg/SVGExternalResourcesRequired.idl
+++ b/core/svg/SVGExternalResourcesRequired.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGExternalResourcesRequired { 
     readonly attribute SVGAnimatedBoolean externalResourcesRequired;
 };
diff --git a/core/svg/SVGFilterPrimitiveStandardAttributes.idl b/core/svg/SVGFilterPrimitiveStandardAttributes.idl
index 3bfa06a..3bc71e4 100644
--- a/core/svg/SVGFilterPrimitiveStandardAttributes.idl
+++ b/core/svg/SVGFilterPrimitiveStandardAttributes.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    Conditional=SVG,
+    Conditional=SVG
 ] interface SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedLength x;
     readonly attribute SVGAnimatedLength y;
diff --git a/core/svg/SVGFitToViewBox.idl b/core/svg/SVGFitToViewBox.idl
index ccd61c5..625a9d4 100644
--- a/core/svg/SVGFitToViewBox.idl
+++ b/core/svg/SVGFitToViewBox.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGFitToViewBox {
     readonly attribute SVGAnimatedRect                viewBox;
     readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
diff --git a/core/svg/SVGLangSpace.idl b/core/svg/SVGLangSpace.idl
index c5152cc..1b59627 100644
--- a/core/svg/SVGLangSpace.idl
+++ b/core/svg/SVGLangSpace.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGLangSpace {
              attribute DOMString xmllang;
              attribute DOMString xmlspace;
diff --git a/core/svg/SVGLocatable.idl b/core/svg/SVGLocatable.idl
index 7a71bd5..1e8f3fe 100644
--- a/core/svg/SVGLocatable.idl
+++ b/core/svg/SVGLocatable.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGLocatable {
     readonly attribute SVGElement nearestViewportElement;
     readonly attribute SVGElement farthestViewportElement;
diff --git a/core/svg/SVGPaint.idl b/core/svg/SVGPaint.idl
index 8680088..b1cd658 100644
--- a/core/svg/SVGPaint.idl
+++ b/core/svg/SVGPaint.idl
@@ -24,8 +24,7 @@
  */
 
 [
-    Conditional=SVG,
-    ImplementationLacksVTable
+    Conditional=SVG
 ] interface SVGPaint : SVGColor {
     const unsigned short SVG_PAINTTYPE_UNKNOWN = 0;
     const unsigned short SVG_PAINTTYPE_RGBCOLOR = 1;
diff --git a/core/svg/SVGPathSeg.idl b/core/svg/SVGPathSeg.idl
index cda62ad..a0691bb 100644
--- a/core/svg/SVGPathSeg.idl
+++ b/core/svg/SVGPathSeg.idl
@@ -26,9 +26,8 @@
 
 [
     Conditional=SVG,
-    CustomToV8,
+    CustomToV8
     
-    ImplementationLacksVTable
 ] interface SVGPathSeg {
     // Path Segment Types
     const unsigned short PATHSEG_UNKNOWN = 0;
diff --git a/core/svg/SVGRenderingIntent.idl b/core/svg/SVGRenderingIntent.idl
index 9383422..832dd48 100644
--- a/core/svg/SVGRenderingIntent.idl
+++ b/core/svg/SVGRenderingIntent.idl
@@ -25,8 +25,7 @@
 
 [
     Conditional=SVG,
-    DoNotGenerateToV8,
-    ImplementationLacksVTable
+    DoNotGenerateToV8
 ] interface SVGRenderingIntent {
     // Rendering Intent Types
     const unsigned short RENDERING_INTENT_UNKNOWN               = 0;
diff --git a/core/svg/SVGStyleElement.idl b/core/svg/SVGStyleElement.idl
index 6005b2e..858c2c4 100644
--- a/core/svg/SVGStyleElement.idl
+++ b/core/svg/SVGStyleElement.idl
@@ -26,11 +26,10 @@
 
 [
     Conditional=SVG
-] interface SVGStyleElement : SVGElement,
-                                              SVGLangSpace {
-             attribute boolean disabled;
-             [SetterRaisesException] attribute DOMString type;
-             [SetterRaisesException] attribute DOMString media;
-             [SetterRaisesException] attribute DOMString title;
+] interface SVGStyleElement : SVGElement, SVGLangSpace {
+    attribute boolean disabled;
+    attribute DOMString type;
+    attribute DOMString media;
+    attribute DOMString title;
 };
 
diff --git a/core/svg/SVGStyledElement.idl b/core/svg/SVGStyledElement.idl
index 44e61c8..f7f9490 100644
--- a/core/svg/SVGStyledElement.idl
+++ b/core/svg/SVGStyledElement.idl
@@ -26,6 +26,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=SVG
 ] interface SVGStyledElement : SVGElement {
     readonly attribute SVGAnimatedString className;
diff --git a/core/svg/SVGTests.idl b/core/svg/SVGTests.idl
index 3941d6a..3081a64 100644
--- a/core/svg/SVGTests.idl
+++ b/core/svg/SVGTests.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGTests {
     readonly attribute SVGStringList requiredFeatures;
     readonly attribute SVGStringList requiredExtensions;
diff --git a/core/svg/SVGTransformable.idl b/core/svg/SVGTransformable.idl
index e4ab3ce..828fea8 100644
--- a/core/svg/SVGTransformable.idl
+++ b/core/svg/SVGTransformable.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    Conditional=SVG,
+    Conditional=SVG
     
 ] interface SVGTransformable : SVGLocatable {
     readonly attribute SVGAnimatedTransformList transform;
diff --git a/core/svg/SVGURIReference.idl b/core/svg/SVGURIReference.idl
index 7ed40e8..a3f1b55 100644
--- a/core/svg/SVGURIReference.idl
+++ b/core/svg/SVGURIReference.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
+    DoNotGenerateToV8
 ] interface SVGURIReference {
     readonly attribute SVGAnimatedString href;
 };
diff --git a/core/svg/SVGUnitTypes.idl b/core/svg/SVGUnitTypes.idl
index b872b3e..b0021d3 100644
--- a/core/svg/SVGUnitTypes.idl
+++ b/core/svg/SVGUnitTypes.idl
@@ -25,8 +25,7 @@
 
 [
     Conditional=SVG,
-    DoNotGenerateToV8,
-    ImplementationLacksVTable
+    DoNotGenerateToV8
 ] interface SVGUnitTypes {
     // Unit Types
     const unsigned short SVG_UNIT_TYPE_UNKNOWN           = 0;
diff --git a/core/svg/SVGZoomAndPan.idl b/core/svg/SVGZoomAndPan.idl
index 738a916..728f40a 100644
--- a/core/svg/SVGZoomAndPan.idl
+++ b/core/svg/SVGZoomAndPan.idl
@@ -27,8 +27,7 @@
 [
     Conditional=SVG,
     
-    DoNotGenerateToV8,
-    ImplementationLacksVTable
+    DoNotGenerateToV8
 ] interface SVGZoomAndPan {
     const unsigned short SVG_ZOOMANDPAN_UNKNOWN = 0;
     const unsigned short SVG_ZOOMANDPAN_DISABLE = 1;
diff --git a/core/testing/InternalSettings.idl b/core/testing/InternalSettings.idl
index 30c0d91..ed5ad0e 100644
--- a/core/testing/InternalSettings.idl
+++ b/core/testing/InternalSettings.idl
@@ -39,7 +39,6 @@
     [RaisesException] void setTextAutosizingEnabled(boolean enabled);
     [RaisesException] void setTextAutosizingWindowSizeOverride(long width, long height);
     [RaisesException] void setTextAutosizingFontScaleFactor(float fontScaleFactor);
-    [RaisesException] void setResolutionOverride(long dotsPerCSSInchHorizontally, long dotsPerCSSInchVertically);
     [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
     [RaisesException] void setEditingBehavior(DOMString behavior);
 
@@ -60,6 +59,7 @@
     void setCSSExclusionsEnabled(boolean enabled);
     void setDialogElementEnabled(boolean enabled);
     void setExperimentalShadowDOMEnabled(boolean enabled);
+    void setExperimentalWebSocketEnabled(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 3be4238..23557da 100644
--- a/core/testing/Internals.idl
+++ b/core/testing/Internals.idl
@@ -38,7 +38,6 @@
     [RaisesException] CSSStyleDeclaration computedStyleIncludingVisitedInfo(Node node);
 
     [RaisesException] ShadowRoot ensureShadowRoot(Element host);
-    [RaisesException] ShadowRoot createShadowRoot(Element host);
     [RaisesException] ShadowRoot shadowRoot(Element host);
     [RaisesException] ShadowRoot youngestShadowRoot(Element host);
     [RaisesException] ShadowRoot oldestShadowRoot(Element host);
@@ -61,16 +60,11 @@
     [RaisesException] boolean hasSelectorForAttributeInShadow(Element host, DOMString attributeName);
     [RaisesException] boolean hasSelectorForPseudoClassInShadow(Element host, DOMString pseudoClass);
 
-    // CSS Animation testing.
+    // CSS Animation and Transition testing.
     unsigned long numberOfActiveAnimations();
     [RaisesException] void suspendAnimations(Document document);
     [RaisesException] void resumeAnimations(Document document);
-    [RaisesException] boolean pauseAnimationAtTimeOnElement(DOMString animationName, double pauseTime, Element element);
-    [RaisesException] boolean pauseAnimationAtTimeOnPseudoElement(DOMString animationName, double pauseTime, Element element, DOMString pseudoId);
-
-    // CSS Transition testing.
-    [RaisesException] boolean pauseTransitionAtTimeOnElement(DOMString propertyName, double pauseTime, Element element);
-    [RaisesException] boolean pauseTransitionAtTimeOnPseudoElement(DOMString property, double pauseTime, Element element, DOMString pseudoId);
+    [RaisesException] void pauseAnimations(double pauseTime);
 
     [RaisesException] Node nextSiblingByWalker(Node node);
     [RaisesException] Node firstChildByWalker(Node node);
@@ -87,9 +81,7 @@
     [RaisesException] DOMString[] formControlStateOfPreviousHistoryItem();
     [RaisesException] void setFormControlStateOfPreviousHistoryItem(sequence<DOMString> values);
     [RaisesException] void setEnableMockPagePopup(boolean enabled);
-#if defined(ENABLE_PAGE_POPUP) && ENABLE_PAGE_POPUP
     readonly attribute PagePopupController pagePopupController;
-#endif
 
     [RaisesException] ClientRect absoluteCaretBounds();
 
@@ -154,7 +146,6 @@
 
     [RaisesException] boolean hasSpellingMarker(Document document, long from, long length);
     [RaisesException] boolean hasGrammarMarker(Document document, long from, long length);
-    [RaisesException] boolean hasAutocorrectedMarker(Document document, long from, long length);
     [RaisesException] void setContinuousSpellCheckingEnabled(boolean enabled);
 
     [RaisesException] boolean isOverwriteModeEnabled(Document document);
@@ -165,6 +156,7 @@
     [RaisesException] boolean isPageBoxVisible(Document document, long pageNumber);
 
     readonly attribute InternalSettings settings;
+    readonly attribute InternalRuntimeFlags runtimeFlags;
     readonly attribute unsigned long workerThreadCount;
 
     // Flags for layerTreeAsText.
@@ -210,6 +202,7 @@
     [RaisesException] DOMString pageProperty(DOMString propertyName, long pageNumber);
     [RaisesException] DOMString pageSizeAndMarginsInPixels(long pageIndex, long width, long height, long marginTop, long marginRight, long marginBottom, long marginLeft);
 
+    [RaisesException] void setDeviceScaleFactor(float scaleFactor);
     [RaisesException] void setPageScaleFactor(float scaleFactor, long x, long y);
 
     [RaisesException] void setIsCursorVisible(Document document, boolean isVisible);
@@ -246,7 +239,7 @@
 
     [Conditional=ENCRYPTED_MEDIA_V2] void initializeMockCDM();
 
-    [Conditional=SPEECH_SYNTHESIS] void enableMockSpeechSynthesizer();
+    void enableMockSpeechSynthesizer();
 
     [RaisesException] DOMString getImageSourceURL(Element element);
 
diff --git a/core/testing/MallocStatistics.idl b/core/testing/MallocStatistics.idl
index bf78b4c..dd3459b 100644
--- a/core/testing/MallocStatistics.idl
+++ b/core/testing/MallocStatistics.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface MallocStatistics {
     readonly attribute unsigned long reservedVMBytes;
     readonly attribute unsigned long committedVMBytes;
diff --git a/core/testing/TypeConversions.idl b/core/testing/TypeConversions.idl
index e96c215..b3996ab 100644
--- a/core/testing/TypeConversions.idl
+++ b/core/testing/TypeConversions.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface TypeConversions {
     attribute long testLong;
     [EnforceRange] attribute long testEnforceRangeLong;
diff --git a/core/workers/AbstractWorker.idl b/core/workers/AbstractWorker.idl
index cd06688..4a0da0d 100644
--- a/core/workers/AbstractWorker.idl
+++ b/core/workers/AbstractWorker.idl
@@ -30,6 +30,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     EventTarget
 ] interface AbstractWorker {
diff --git a/core/workers/DedicatedWorkerContext.idl b/core/workers/DedicatedWorkerContext.idl
index d204859..3f4f45c 100644
--- a/core/workers/DedicatedWorkerContext.idl
+++ b/core/workers/DedicatedWorkerContext.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface DedicatedWorkerContext : WorkerContext {
+[
+    NoInterfaceObject
+] interface DedicatedWorkerContext : WorkerContext {
     [Custom, RaisesException] void postMessage(any message, optional Array messagePorts);
     attribute EventListener onmessage;
 };
diff --git a/core/workers/SharedWorker.idl b/core/workers/SharedWorker.idl
index c69690f..d6cae73 100644
--- a/core/workers/SharedWorker.idl
+++ b/core/workers/SharedWorker.idl
@@ -30,6 +30,7 @@
  */
 
 [
+    NoInterfaceObject,
     Constructor(DOMString scriptURL, [Default=NullString] optional DOMString name),
     CallWith=ScriptExecutionContext,
     RaisesException
diff --git a/core/workers/SharedWorkerContext.idl b/core/workers/SharedWorkerContext.idl
index 4f0d991..52fc0a2 100644
--- a/core/workers/SharedWorkerContext.idl
+++ b/core/workers/SharedWorkerContext.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SharedWorkerContext : WorkerContext {
+[
+    NoInterfaceObject
+] interface SharedWorkerContext : WorkerContext {
     readonly attribute DOMString name;
              attribute EventListener onconnect;
 };
diff --git a/core/workers/WorkerContext.idl b/core/workers/WorkerContext.idl
index ef788ac..188b285 100644
--- a/core/workers/WorkerContext.idl
+++ b/core/workers/WorkerContext.idl
@@ -25,6 +25,7 @@
  */
 
 [
+    NoInterfaceObject,
     EventTarget,
     CustomToV8,
     DoNotGenerateWrap
@@ -68,8 +69,8 @@
     attribute FileReaderConstructor FileReader;
     attribute FileReaderSyncConstructor FileReaderSync;
 
-    attribute DOMURLConstructor URL;
-    attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
+    attribute URLConstructor URL;
+    attribute URLConstructor webkitURL; // FIXME: deprecate this.
 
     attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
     attribute Int8ArrayConstructor Int8Array; // Usable with new operator
diff --git a/core/workers/WorkerLocation.idl b/core/workers/WorkerLocation.idl
index ac581e3..eac41a3 100644
--- a/core/workers/WorkerLocation.idl
+++ b/core/workers/WorkerLocation.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface WorkerLocation {
     readonly attribute DOMString href;
     readonly attribute DOMString protocol;
diff --git a/core/xml/DOMParser.idl b/core/xml/DOMParser.idl
index c602a59..ca9ee11 100644
--- a/core/xml/DOMParser.idl
+++ b/core/xml/DOMParser.idl
@@ -18,8 +18,7 @@
  */
 
 [
-    Constructor,
-    ImplementationLacksVTable
+    Constructor
 ] interface DOMParser {
     Document parseFromString([Default=Undefined] optional DOMString str, 
                              [Default=Undefined] optional DOMString contentType);
diff --git a/core/xml/XMLSerializer.idl b/core/xml/XMLSerializer.idl
index 5e174e1..88a9171 100644
--- a/core/xml/XMLSerializer.idl
+++ b/core/xml/XMLSerializer.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    Constructor,
-    ImplementationLacksVTable
+    Constructor
 ] interface XMLSerializer {
     [RaisesException] DOMString serializeToString([Default=Undefined] optional Node node);
 };
diff --git a/core/xml/XPathEvaluator.idl b/core/xml/XPathEvaluator.idl
index 457663f..59b45fc 100644
--- a/core/xml/XPathEvaluator.idl
+++ b/core/xml/XPathEvaluator.idl
@@ -18,8 +18,7 @@
  */
 
 [
-    Constructor,
-    ImplementationLacksVTable
+    Constructor
 ] interface XPathEvaluator {
     [RaisesException] XPathExpression createExpression([Default=Undefined] optional DOMString expression,
                                      [Default=Undefined] optional XPathNSResolver resolver);
diff --git a/core/xml/XPathException.idl b/core/xml/XPathException.idl
index 6e63839..2f4ef9f 100644
--- a/core/xml/XPathException.idl
+++ b/core/xml/XPathException.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    DoNotCheckConstants,
-    ImplementationLacksVTable
+    DoNotCheckConstants
 ] exception XPathException {
 
     readonly attribute unsigned short   code;
diff --git a/core/xml/XPathExpression.idl b/core/xml/XPathExpression.idl
index 0ba88c5..3a3b1b2 100644
--- a/core/xml/XPathExpression.idl
+++ b/core/xml/XPathExpression.idl
@@ -18,7 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 [
-     ImplementationLacksVTable
+    NoInterfaceObject
 ] interface XPathExpression {
      [RaisesException] XPathResult evaluate([Default=Undefined] optional Node contextNode, 
                                         [Default=Undefined] optional unsigned short type, 
diff --git a/core/xml/XPathNSResolver.idl b/core/xml/XPathNSResolver.idl
index f746891..3210792 100644
--- a/core/xml/XPathNSResolver.idl
+++ b/core/xml/XPathNSResolver.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    
-    SkipVTableValidation
+    NoInterfaceObject
 ] interface XPathNSResolver {
     [TreatReturnedNullStringAs=Null] DOMString lookupNamespaceURI([Default=Undefined] optional DOMString prefix);
 };
diff --git a/core/xml/XPathResult.idl b/core/xml/XPathResult.idl
index 0e21736..99f62af 100644
--- a/core/xml/XPathResult.idl
+++ b/core/xml/XPathResult.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface XPathResult {
     const unsigned short ANY_TYPE                       = 0;
     const unsigned short NUMBER_TYPE                    = 1;
diff --git a/core/xml/XSLTProcessor.idl b/core/xml/XSLTProcessor.idl
index 3dc316d..5cef21e 100644
--- a/core/xml/XSLTProcessor.idl
+++ b/core/xml/XSLTProcessor.idl
@@ -32,9 +32,9 @@
 
 [
     Constructor,
-    ImplementationLacksVTable
+    MeasureAs=XSLTProcessor
 ] interface XSLTProcessor {
-    
+
     void importStylesheet([Default=Undefined] optional Node stylesheet);
     DocumentFragment transformToFragment([Default=Undefined] optional Node source, [Default=Undefined] optional Document docVal);
     Document transformToDocument([Default=Undefined] optional Node source);
diff --git a/modules/README b/modules/README
index 3929bfb..8d6d9a3 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: 1246
+Current revision: 1266
diff --git a/modules/battery/BatteryManager.idl b/modules/battery/BatteryManager.idl
index b8d2b99..c6fb69e 100644
--- a/modules/battery/BatteryManager.idl
+++ b/modules/battery/BatteryManager.idl
@@ -19,6 +19,7 @@
 
 // http://dev.w3.org/2009/dap/system-info/battery-status.html
 [
+    NoInterfaceObject,
     Conditional=BATTERY_STATUS,
     ActiveDOMObject,
     EventTarget
diff --git a/modules/battery/NavigatorBattery.idl b/modules/battery/NavigatorBattery.idl
index 7c02503..d58c82a 100644
--- a/modules/battery/NavigatorBattery.idl
+++ b/modules/battery/NavigatorBattery.idl
@@ -18,7 +18,7 @@
  */
 
 [
-    Conditional=BATTERY_STATUS,
+    Conditional=BATTERY_STATUS
 ] partial interface Navigator {
     readonly attribute BatteryManager webkitBattery;
 };
diff --git a/modules/device_orientation/DeviceAcceleration.idl b/modules/device_orientation/DeviceAcceleration.idl
index ad74f17..c4ff4a6 100644
--- a/modules/device_orientation/DeviceAcceleration.idl
+++ b/modules/device_orientation/DeviceAcceleration.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DeviceAcceleration {
     readonly attribute double? x;
     readonly attribute double? y;
diff --git a/modules/device_orientation/DeviceMotionEvent.idl b/modules/device_orientation/DeviceMotionEvent.idl
index 3e6a6ca..8d8cc79 100644
--- a/modules/device_orientation/DeviceMotionEvent.idl
+++ b/modules/device_orientation/DeviceMotionEvent.idl
@@ -23,7 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-interface DeviceMotionEvent : Event {
+[
+    NoInterfaceObject
+] interface DeviceMotionEvent : Event {
     readonly attribute DeviceAcceleration acceleration;
     readonly attribute DeviceAcceleration accelerationIncludingGravity;
     readonly attribute DeviceRotationRate rotationRate;
diff --git a/modules/device_orientation/DeviceRotationRate.idl b/modules/device_orientation/DeviceRotationRate.idl
index d599c97..2d7600a 100644
--- a/modules/device_orientation/DeviceRotationRate.idl
+++ b/modules/device_orientation/DeviceRotationRate.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DeviceRotationRate {
     readonly attribute double? alpha;
     readonly attribute double? beta;
diff --git a/modules/encryptedmedia/MediaKeySession.idl b/modules/encryptedmedia/MediaKeySession.idl
index ba4d1cb..57b809e 100644
--- a/modules/encryptedmedia/MediaKeySession.idl
+++ b/modules/encryptedmedia/MediaKeySession.idl
@@ -26,7 +26,7 @@
 [
     Conditional=ENCRYPTED_MEDIA_V2,
     EnabledAtRuntime=encryptedMedia,
-    EventTarget,
+    EventTarget
 ] interface MediaKeySession {
     // error state
     readonly attribute MediaKeyError error;
diff --git a/modules/filesystem/DOMFileSystem.idl b/modules/filesystem/DOMFileSystem.idl
index e6ab12f..6e8ab7f 100644
--- a/modules/filesystem/DOMFileSystem.idl
+++ b/modules/filesystem/DOMFileSystem.idl
@@ -30,6 +30,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject
 ] interface DOMFileSystem {
     readonly attribute DOMString name;
diff --git a/modules/filesystem/DOMFileSystemSync.idl b/modules/filesystem/DOMFileSystemSync.idl
index 6583484..5e67ada 100644
--- a/modules/filesystem/DOMFileSystemSync.idl
+++ b/modules/filesystem/DOMFileSystemSync.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface DOMFileSystemSync {
+[
+    NoInterfaceObject
+] interface DOMFileSystemSync {
     readonly attribute DOMString name;
     readonly attribute DirectoryEntrySync root;
 };
diff --git a/modules/filesystem/DirectoryEntry.idl b/modules/filesystem/DirectoryEntry.idl
index f77a4e9..3e51b11 100644
--- a/modules/filesystem/DirectoryEntry.idl
+++ b/modules/filesystem/DirectoryEntry.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface DirectoryEntry : Entry {
+[
+    NoInterfaceObject
+] interface DirectoryEntry : Entry {
     DirectoryReader createReader();
     void getFile([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, optional Dictionary options, optional EntryCallback successCallback, optional ErrorCallback errorCallback);
     void getDirectory([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, optional Dictionary options, optional EntryCallback successCallback, optional ErrorCallback errorCallback);
diff --git a/modules/filesystem/DirectoryEntrySync.idl b/modules/filesystem/DirectoryEntrySync.idl
index 2301dfc..b1c93b9 100644
--- a/modules/filesystem/DirectoryEntrySync.idl
+++ b/modules/filesystem/DirectoryEntrySync.idl
@@ -28,8 +28,10 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface DirectoryEntrySync : EntrySync {
-    [RaisesException] DirectoryReaderSync createReader();
+[
+    NoInterfaceObject
+] interface DirectoryEntrySync : EntrySync {
+    DirectoryReaderSync createReader();
     [RaisesException] FileEntrySync getFile([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, Dictionary flags);
     [RaisesException] DirectoryEntrySync getDirectory([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, Dictionary flags);
     [RaisesException] void removeRecursively();
diff --git a/modules/filesystem/DirectoryReader.idl b/modules/filesystem/DirectoryReader.idl
index b93aa62..7660917 100644
--- a/modules/filesystem/DirectoryReader.idl
+++ b/modules/filesystem/DirectoryReader.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DirectoryReader {
     void readEntries(EntriesCallback successCallback, optional ErrorCallback errorCallback);
 };
diff --git a/modules/filesystem/DirectoryReaderSync.idl b/modules/filesystem/DirectoryReaderSync.idl
index bc2a9bd..9821f43 100644
--- a/modules/filesystem/DirectoryReaderSync.idl
+++ b/modules/filesystem/DirectoryReaderSync.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface DirectoryReaderSync {
     [RaisesException] EntryArraySync readEntries();
 };
diff --git a/modules/filesystem/Entry.idl b/modules/filesystem/Entry.idl
index ba90dfe..198d3e6 100644
--- a/modules/filesystem/Entry.idl
+++ b/modules/filesystem/Entry.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     CustomToV8
 ] interface Entry {
     readonly attribute boolean isFile;
diff --git a/modules/filesystem/EntryArray.idl b/modules/filesystem/EntryArray.idl
index 6d75100..2e637f4 100644
--- a/modules/filesystem/EntryArray.idl
+++ b/modules/filesystem/EntryArray.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface EntryArray {
     readonly attribute unsigned long length;
     getter Entry item([IsIndex] unsigned long index);
diff --git a/modules/filesystem/EntryArraySync.idl b/modules/filesystem/EntryArraySync.idl
index 52651e4..e456446 100644
--- a/modules/filesystem/EntryArraySync.idl
+++ b/modules/filesystem/EntryArraySync.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface EntryArraySync {
     readonly attribute unsigned long length;
     getter EntrySync item([IsIndex] unsigned long index);
diff --git a/modules/filesystem/EntrySync.idl b/modules/filesystem/EntrySync.idl
index 08021da..c71f2c7 100644
--- a/modules/filesystem/EntrySync.idl
+++ b/modules/filesystem/EntrySync.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     CustomToV8
 ] interface EntrySync {
     readonly attribute boolean isFile;
diff --git a/modules/filesystem/FileEntry.idl b/modules/filesystem/FileEntry.idl
index 63bff0a..818b759 100644
--- a/modules/filesystem/FileEntry.idl
+++ b/modules/filesystem/FileEntry.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface FileEntry : Entry {
+[
+    NoInterfaceObject
+] interface FileEntry : Entry {
     void createWriter(FileWriterCallback successCallback, optional ErrorCallback errorCallback);
     void file(FileCallback successCallback, optional ErrorCallback errorCallback);
 };
diff --git a/modules/filesystem/FileEntrySync.idl b/modules/filesystem/FileEntrySync.idl
index 67869b2..52b3e2a 100644
--- a/modules/filesystem/FileEntrySync.idl
+++ b/modules/filesystem/FileEntrySync.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface FileEntrySync : EntrySync {
+[
+    NoInterfaceObject
+] interface FileEntrySync : EntrySync {
     [RaisesException] File file();
     [RaisesException] FileWriterSync createWriter();
 };
diff --git a/modules/filesystem/FileWriter.idl b/modules/filesystem/FileWriter.idl
index 843bc2e..6624843 100644
--- a/modules/filesystem/FileWriter.idl
+++ b/modules/filesystem/FileWriter.idl
@@ -30,6 +30,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     CallWith=ScriptExecutionContext,
     EventTarget
diff --git a/modules/filesystem/FileWriterSync.idl b/modules/filesystem/FileWriterSync.idl
index 8266850..9b746bd 100644
--- a/modules/filesystem/FileWriterSync.idl
+++ b/modules/filesystem/FileWriterSync.idl
@@ -28,7 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface FileWriterSync {
+[
+    NoInterfaceObject
+] interface FileWriterSync {
     // synchronous write/modify methods
     [RaisesException] void write(Blob data);
     [RaisesException] void seek(long long position);
diff --git a/modules/filesystem/Metadata.idl b/modules/filesystem/Metadata.idl
index 6816231..ee77c0c 100644
--- a/modules/filesystem/Metadata.idl
+++ b/modules/filesystem/Metadata.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Metadata {
     readonly attribute Date modificationTime;
     readonly attribute unsigned long long size;
diff --git a/modules/gamepad/Gamepad.idl b/modules/gamepad/Gamepad.idl
index 33f5616..b263929 100644
--- a/modules/gamepad/Gamepad.idl
+++ b/modules/gamepad/Gamepad.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Gamepad {
     readonly attribute DOMString id;
     readonly attribute unsigned long index;
diff --git a/modules/gamepad/GamepadList.idl b/modules/gamepad/GamepadList.idl
index 0277a61..396c013 100644
--- a/modules/gamepad/GamepadList.idl
+++ b/modules/gamepad/GamepadList.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface GamepadList {
     readonly attribute unsigned long length;
     getter Gamepad item([Default=Undefined] optional unsigned long index);
diff --git a/modules/gamepad/NavigatorGamepad.idl b/modules/gamepad/NavigatorGamepad.idl
index eea135f..5136454 100644
--- a/modules/gamepad/NavigatorGamepad.idl
+++ b/modules/gamepad/NavigatorGamepad.idl
@@ -18,6 +18,6 @@
  */
 
 partial interface Navigator {
-    [EnabledAtRuntime] GamepadList webkitGetGamepads();
+    [EnabledAtRuntime=gamepad] GamepadList webkitGetGamepads();
 };
 
diff --git a/modules/geolocation/Coordinates.idl b/modules/geolocation/Coordinates.idl
index 38b58e4..b5a07d7 100644
--- a/modules/geolocation/Coordinates.idl
+++ b/modules/geolocation/Coordinates.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Coordinates {
     readonly attribute double latitude;
     readonly attribute double longitude;
diff --git a/modules/geolocation/Geolocation.idl b/modules/geolocation/Geolocation.idl
index c0f7130..03f478a 100644
--- a/modules/geolocation/Geolocation.idl
+++ b/modules/geolocation/Geolocation.idl
@@ -25,6 +25,7 @@
 
 // http://www.w3.org/TR/geolocation-API/#geolocation_interface
 [
+    NoInterfaceObject
 ] interface Geolocation {
     [Custom, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds] void getCurrentPosition(PositionCallback successCallback,
                                      optional PositionErrorCallback errorCallback,
diff --git a/modules/geolocation/Geoposition.idl b/modules/geolocation/Geoposition.idl
index d2d317d..34ef94e 100644
--- a/modules/geolocation/Geoposition.idl
+++ b/modules/geolocation/Geoposition.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface Geoposition {
     readonly attribute Coordinates coords;
     readonly attribute DOMTimeStamp timestamp;
diff --git a/modules/geolocation/PositionError.idl b/modules/geolocation/PositionError.idl
index 2f0b98a..56b4d41 100644
--- a/modules/geolocation/PositionError.idl
+++ b/modules/geolocation/PositionError.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface PositionError {
     readonly attribute unsigned short code;
     readonly attribute DOMString message;
diff --git a/modules/indexeddb/DOMWindowIndexedDatabase.idl b/modules/indexeddb/DOMWindowIndexedDatabase.idl
index 18c3724..bb9982c 100644
--- a/modules/indexeddb/DOMWindowIndexedDatabase.idl
+++ b/modules/indexeddb/DOMWindowIndexedDatabase.idl
@@ -27,26 +27,5 @@
 partial interface DOMWindow {
     [ImplementedAs=indexedDB,MeasureAs=PrefixedIndexedDB] readonly attribute IDBFactory webkitIndexedDB;
 
-    attribute IDBCursorConstructor webkitIDBCursor;
-    attribute IDBDatabaseConstructor webkitIDBDatabase;
-    attribute IDBFactoryConstructor webkitIDBFactory;
-    attribute IDBIndexConstructor webkitIDBIndex;
-    attribute IDBKeyRangeConstructor webkitIDBKeyRange;
-    attribute IDBObjectStoreConstructor webkitIDBObjectStore;
-    attribute IDBRequestConstructor webkitIDBRequest;
-    attribute IDBTransactionConstructor webkitIDBTransaction;
-
     [MeasureAs=UnprefixedIndexedDB] readonly attribute IDBFactory indexedDB;
-
-    attribute IDBCursorConstructor IDBCursor;
-    attribute IDBCursorWithValueConstructor IDBCursorWithValue;
-    attribute IDBDatabaseConstructor IDBDatabase;
-    attribute IDBFactoryConstructor IDBFactory;
-    attribute IDBIndexConstructor IDBIndex;
-    attribute IDBKeyRangeConstructor IDBKeyRange;
-    attribute IDBObjectStoreConstructor IDBObjectStore;
-    attribute IDBOpenDBRequestConstructor IDBOpenDBRequest;
-    attribute IDBRequestConstructor IDBRequest;
-    attribute IDBTransactionConstructor IDBTransaction;
-    attribute IDBVersionChangeEventConstructor IDBVersionChangeEvent;
 };
diff --git a/modules/indexeddb/IDBAny.idl b/modules/indexeddb/IDBAny.idl
index 485e3db..36f262a 100644
--- a/modules/indexeddb/IDBAny.idl
+++ b/modules/indexeddb/IDBAny.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     CustomToV8,
     DoNotGenerateWrap
 ] interface IDBAny {
diff --git a/modules/indexeddb/IDBFactory.idl b/modules/indexeddb/IDBFactory.idl
index 052c191..dc69602 100644
--- a/modules/indexeddb/IDBFactory.idl
+++ b/modules/indexeddb/IDBFactory.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface IDBFactory {
     [CallWith=ScriptExecutionContext, ImplementedAs=getDatabaseNames, RaisesException] IDBRequest webkitGetDatabaseNames();
 
diff --git a/modules/indexeddb/IDBIndex.idl b/modules/indexeddb/IDBIndex.idl
index 78ef8af..861c673 100644
--- a/modules/indexeddb/IDBIndex.idl
+++ b/modules/indexeddb/IDBIndex.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface IDBIndex {
     readonly attribute DOMString name;
     readonly attribute IDBObjectStore objectStore;
diff --git a/modules/indexeddb/IDBKeyRange.idl b/modules/indexeddb/IDBKeyRange.idl
index cc3900e..235e09e 100644
--- a/modules/indexeddb/IDBKeyRange.idl
+++ b/modules/indexeddb/IDBKeyRange.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface IDBKeyRange {
     [ImplementedAs=lowerValue,CallWith=ScriptExecutionContext] readonly attribute any lower;
     [ImplementedAs=upperValue,CallWith=ScriptExecutionContext] readonly attribute any upper;
diff --git a/modules/indexeddb/IDBObjectStore.idl b/modules/indexeddb/IDBObjectStore.idl
index 941bf99..d3e4616 100644
--- a/modules/indexeddb/IDBObjectStore.idl
+++ b/modules/indexeddb/IDBObjectStore.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ImplementationLacksVTable
 ] interface IDBObjectStore {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
     [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
diff --git a/modules/webmidi/DOMWindowWebMIDI.idl b/modules/mediasource/DOMWindowMediaSource.idl
similarity index 83%
rename from modules/webmidi/DOMWindowWebMIDI.idl
rename to modules/mediasource/DOMWindowMediaSource.idl
index 1d07d1e..20a0215 100644
--- a/modules/webmidi/DOMWindowWebMIDI.idl
+++ b/modules/mediasource/DOMWindowMediaSource.idl
@@ -27,8 +27,8 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
 partial interface DOMWindow {
-    [EnabledAtRuntime=webMIDI] attribute MIDIConnectionEventConstructor MIDIConnectionEvent;
-    [EnabledAtRuntime=webMIDI] attribute MIDIMessageEventConstructor MIDIMessageEvent;
-};
+    [EnabledAtRuntime=webKitMediaSource] attribute WebKitMediaSourceConstructor WebKitMediaSource;
+    [EnabledAtRuntime=webKitMediaSource] attribute WebKitSourceBufferConstructor WebKitSourceBuffer;
+    [EnabledAtRuntime=webKitMediaSource] attribute WebKitSourceBufferListConstructor WebKitSourceBufferList;
+};
\ No newline at end of file
diff --git a/modules/mediasource/MediaSource.idl b/modules/mediasource/WebKitMediaSource.idl
similarity index 86%
rename from modules/mediasource/MediaSource.idl
rename to modules/mediasource/WebKitMediaSource.idl
index 29c6f0d..573548b 100644
--- a/modules/mediasource/MediaSource.idl
+++ b/modules/mediasource/WebKitMediaSource.idl
@@ -29,22 +29,23 @@
  */
  
 [
-    EnabledAtRuntime=mediaSource,
+    NoInterfaceObject,
+    EnabledAtRuntime=webKitMediaSource,
     ActiveDOMObject,
     EventTarget,
     Constructor,
     CallWith=ScriptExecutionContext
-] interface MediaSource {
+] interface WebKitMediaSource {
     // All the source buffers created by this object.
-    readonly attribute SourceBufferList sourceBuffers;
+    readonly attribute WebKitSourceBufferList sourceBuffers;
 
     // Subset of sourceBuffers that provide data for the selected/enabled tracks.
-    readonly attribute SourceBufferList activeSourceBuffers;
+    readonly attribute WebKitSourceBufferList activeSourceBuffers;
 
     [SetterRaisesException] attribute double duration;
 
-    [RaisesException] SourceBuffer addSourceBuffer(DOMString type);
-    [RaisesException] void removeSourceBuffer(SourceBuffer buffer);
+    [RaisesException] WebKitSourceBuffer addSourceBuffer(DOMString type);
+    [RaisesException] void removeSourceBuffer(WebKitSourceBuffer buffer);
 
     readonly attribute DOMString readyState;
     
diff --git a/modules/mediasource/SourceBuffer.idl b/modules/mediasource/WebKitSourceBuffer.idl
similarity index 95%
rename from modules/mediasource/SourceBuffer.idl
rename to modules/mediasource/WebKitSourceBuffer.idl
index fc29be4..4995de8 100644
--- a/modules/mediasource/SourceBuffer.idl
+++ b/modules/mediasource/WebKitSourceBuffer.idl
@@ -29,8 +29,9 @@
  */
  
 [
-    EnabledAtRuntime=mediaSource
-] interface SourceBuffer {
+    NoInterfaceObject,
+    EnabledAtRuntime=webKitMediaSource
+] interface WebKitSourceBuffer {
 
     // Returns the time ranges buffered.
     [GetterRaisesException] readonly attribute TimeRanges buffered;
diff --git a/modules/mediasource/SourceBufferList.idl b/modules/mediasource/WebKitSourceBufferList.idl
similarity index 92%
rename from modules/mediasource/SourceBufferList.idl
rename to modules/mediasource/WebKitSourceBufferList.idl
index 443edb3..7cca041 100644
--- a/modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/WebKitSourceBufferList.idl
@@ -29,12 +29,13 @@
  */
  
 [
-    EnabledAtRuntime=mediaSource,
+    NoInterfaceObject,
+    EnabledAtRuntime=webKitMediaSource,
     EventTarget,
     CallWith=ScriptExecutionContext
-] interface SourceBufferList {
+] interface WebKitSourceBufferList {
     readonly attribute unsigned long length;
-    getter SourceBuffer item(unsigned long index);
+    getter WebKitSourceBuffer item(unsigned long index);
 
     // EventTarget interface
     void addEventListener(DOMString type,
diff --git a/modules/mediastream/DOMWindowMediaStream.idl b/modules/mediastream/DOMWindowMediaStream.idl
deleted file mode 100644
index c9cffef..0000000
--- a/modules/mediastream/DOMWindowMediaStream.idl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
- * 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:
- * 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.
- */
-
-partial interface DOMWindow {
-    [EnabledAtRuntime=mediaStream] attribute MediaStreamConstructor webkitMediaStream;
-    [EnabledAtRuntime=peerConnection] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
-    attribute RTCSessionDescriptionConstructor RTCSessionDescription;
-    attribute RTCIceCandidateConstructor RTCIceCandidate;
-    attribute MediaStreamEventConstructor MediaStreamEvent;
-};
-
diff --git a/modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
index 45c415d..dbb7392 100644
--- a/modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -23,11 +23,12 @@
  */
 
 [
+    NoInterfaceObject,
     EventTarget,
     Constructor,
     Constructor(MediaStream stream),
     Constructor(MediaStreamTrack[] tracks),
-    CallWith=ScriptExecutionContext,
+    CallWith=ScriptExecutionContext
 ] interface MediaStream {
     // DEPRECATED
     readonly attribute DOMString label;
diff --git a/modules/mediastream/MediaStreamTrack.idl b/modules/mediastream/MediaStreamTrack.idl
index b58a085..6710c70 100644
--- a/modules/mediastream/MediaStreamTrack.idl
+++ b/modules/mediastream/MediaStreamTrack.idl
@@ -23,6 +23,7 @@
  */
 
 [
+    NoInterfaceObject,
     EventTarget,
     ActiveDOMObject
 ] interface MediaStreamTrack {
diff --git a/modules/mediastream/MediaStreamTrackEvent.idl b/modules/mediastream/MediaStreamTrackEvent.idl
index c7ad507..b3967d4 100644
--- a/modules/mediastream/MediaStreamTrackEvent.idl
+++ b/modules/mediastream/MediaStreamTrackEvent.idl
@@ -22,7 +22,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface MediaStreamTrackEvent : Event {
+[
+    NoInterfaceObject
+] interface MediaStreamTrackEvent : Event {
    readonly attribute MediaStreamTrack track;
 };
 
diff --git a/modules/mediastream/NavigatorUserMediaError.idl b/modules/mediastream/NavigatorUserMediaError.idl
index cdaa5c0..46d0e03 100644
--- a/modules/mediastream/NavigatorUserMediaError.idl
+++ b/modules/mediastream/NavigatorUserMediaError.idl
@@ -22,7 +22,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface NavigatorUserMediaError {
+[
+    NoInterfaceObject
+] interface NavigatorUserMediaError {
     const unsigned short PERMISSION_DENIED = 1;
     readonly attribute unsigned short code;
 };
diff --git a/modules/mediastream/RTCDTMFSender.idl b/modules/mediastream/RTCDTMFSender.idl
index ad97c75..ff3b6da 100644
--- a/modules/mediastream/RTCDTMFSender.idl
+++ b/modules/mediastream/RTCDTMFSender.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     EventTarget
 ] interface RTCDTMFSender {
diff --git a/modules/mediastream/RTCDTMFToneChangeEvent.idl b/modules/mediastream/RTCDTMFToneChangeEvent.idl
index ee1ae8a..de80edf 100644
--- a/modules/mediastream/RTCDTMFToneChangeEvent.idl
+++ b/modules/mediastream/RTCDTMFToneChangeEvent.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     ConstructorTemplate=Event
 ] interface RTCDTMFToneChangeEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString tone;
diff --git a/modules/mediastream/RTCDataChannel.idl b/modules/mediastream/RTCDataChannel.idl
index 4532213..b4263df 100644
--- a/modules/mediastream/RTCDataChannel.idl
+++ b/modules/mediastream/RTCDataChannel.idl
@@ -23,6 +23,7 @@
  */
 
 [
+    NoInterfaceObject,
     EventTarget
 ] interface RTCDataChannel {
     readonly attribute DOMString label;
diff --git a/modules/mediastream/RTCDataChannelEvent.idl b/modules/mediastream/RTCDataChannelEvent.idl
index 2a820b8..98f40d6 100644
--- a/modules/mediastream/RTCDataChannelEvent.idl
+++ b/modules/mediastream/RTCDataChannelEvent.idl
@@ -22,6 +22,8 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface RTCDataChannelEvent : Event {
+[
+    NoInterfaceObject
+] interface RTCDataChannelEvent : Event {
     readonly attribute RTCDataChannel channel;
 };
diff --git a/modules/mediastream/RTCIceCandidateEvent.idl b/modules/mediastream/RTCIceCandidateEvent.idl
index 26b5a61..0cd3e43 100644
--- a/modules/mediastream/RTCIceCandidateEvent.idl
+++ b/modules/mediastream/RTCIceCandidateEvent.idl
@@ -22,7 +22,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface RTCIceCandidateEvent : Event {
+[
+    NoInterfaceObject
+] interface RTCIceCandidateEvent : Event {
     readonly attribute RTCIceCandidate candidate;
 };
 
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
index ac044ab..04f2bcb 100644
--- a/modules/mediastream/RTCPeerConnection.idl
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     Constructor(Dictionary rtcIceServers, optional Dictionary mediaConstraints),
     RaisesException,
diff --git a/modules/mediastream/RTCStatsReport.idl b/modules/mediastream/RTCStatsReport.idl
index 00ae129..15c193b 100644
--- a/modules/mediastream/RTCStatsReport.idl
+++ b/modules/mediastream/RTCStatsReport.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface RTCStatsReport {
     readonly attribute Date timestamp;
     readonly attribute DOMString id;
diff --git a/modules/mediastream/RTCStatsResponse.idl b/modules/mediastream/RTCStatsResponse.idl
index 384bd6b..e278398 100644
--- a/modules/mediastream/RTCStatsResponse.idl
+++ b/modules/mediastream/RTCStatsResponse.idl
@@ -22,7 +22,9 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface RTCStatsResponse {
+[
+    NoInterfaceObject
+] interface RTCStatsResponse {
     sequence<RTCStatsReport> result();
     getter RTCStatsReport namedItem([Default=Undefined] optional DOMString name);
 };
diff --git a/modules/notifications/DOMWindowNotifications.idl b/modules/notifications/DOMWindowNotifications.idl
index ca5e3b9..9fc7865 100644
--- a/modules/notifications/DOMWindowNotifications.idl
+++ b/modules/notifications/DOMWindowNotifications.idl
@@ -25,13 +25,10 @@
  */
 
 [
-    Conditional=NOTIFICATIONS|LEGACY_NOTIFICATIONS,
+    Conditional=NOTIFICATIONS|LEGACY_NOTIFICATIONS
 ] partial interface DOMWindow {
 #if defined(ENABLE_LEGACY_NOTIFICATIONS) && ENABLE_LEGACY_NOTIFICATIONS
-    [EnabledAtRuntime, MeasureAs=LegacyNotifications, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute NotificationCenter webkitNotifications;
-#endif
-#if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
-    attribute NotificationConstructor Notification;
+    [EnabledAtRuntime=notifications, MeasureAs=LegacyNotifications, PerWorldBindings, ActivityLog=GetterForIsolatedWorlds] readonly attribute NotificationCenter webkitNotifications;
 #endif
 };
 
diff --git a/modules/notifications/NotificationCenter.idl b/modules/notifications/NotificationCenter.idl
index ceddbe3..9dbc0fe 100644
--- a/modules/notifications/NotificationCenter.idl
+++ b/modules/notifications/NotificationCenter.idl
@@ -30,8 +30,9 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=LEGACY_NOTIFICATIONS,
-    ActiveDOMObject,
+    ActiveDOMObject
 ] interface NotificationCenter {
 #if !defined(ENABLE_TEXT_NOTIFICATIONS_ONLY) || !ENABLE_TEXT_NOTIFICATIONS_ONLY
    [EnabledPerContext=htmlNotifications, MeasureAs=LegacyHTMLNotifications, ActivityLog=Access, RaisesException] Notification createHTMLNotification(DOMString url);
diff --git a/modules/notifications/WorkerContextNotifications.idl b/modules/notifications/WorkerContextNotifications.idl
index 4e2aade..aae97b3 100644
--- a/modules/notifications/WorkerContextNotifications.idl
+++ b/modules/notifications/WorkerContextNotifications.idl
@@ -20,15 +20,15 @@
  * 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. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  */
 
 [
-    Conditional=NOTIFICATIONS|LEGACY_NOTIFICATIONS,
+    Conditional=NOTIFICATIONS|LEGACY_NOTIFICATIONS
 ] partial interface WorkerContext {
 #if defined(ENABLE_LEGACY_NOTIFICATIONS) && ENABLE_LEGACY_NOTIFICATIONS
-    [EnabledAtRuntime] readonly attribute NotificationCenter webkitNotifications;
+    [EnabledAtRuntime=notifications] readonly attribute NotificationCenter webkitNotifications;
 #endif
 };
 
diff --git a/modules/quota/StorageInfo.idl b/modules/quota/StorageInfo.idl
index 7a0bbcc..87caad2 100644
--- a/modules/quota/StorageInfo.idl
+++ b/modules/quota/StorageInfo.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface StorageInfo {
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
diff --git a/modules/quota/StorageQuota.idl b/modules/quota/StorageQuota.idl
index 74ab50e..bc008dd 100644
--- a/modules/quota/StorageQuota.idl
+++ b/modules/quota/StorageQuota.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    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);
diff --git a/modules/speech/DOMWindowSpeech.idl b/modules/speech/DOMWindowSpeech.idl
deleted file mode 100644
index c4d7e64..0000000
--- a/modules/speech/DOMWindowSpeech.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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.
- */
-
-partial interface DOMWindow {
-    [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionConstructor webkitSpeechRecognition;
-    [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionErrorConstructor webkitSpeechRecognitionError;
-    [EnabledAtRuntime=scriptedSpeech] attribute SpeechRecognitionEventConstructor webkitSpeechRecognitionEvent;
-    [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarConstructor webkitSpeechGrammar;
-    [EnabledAtRuntime=scriptedSpeech] attribute SpeechGrammarListConstructor webkitSpeechGrammarList;
-};
diff --git a/modules/speech/DOMWindowSpeechSynthesis.idl b/modules/speech/DOMWindowSpeechSynthesis.idl
index 5ce418e..7acb4bc 100644
--- a/modules/speech/DOMWindowSpeechSynthesis.idl
+++ b/modules/speech/DOMWindowSpeechSynthesis.idl
@@ -27,6 +27,4 @@
     EnabledAtRuntime=speechSynthesis
 ] partial interface DOMWindow {
     readonly attribute SpeechSynthesis speechSynthesis;
-    attribute SpeechSynthesisEventConstructor SpeechSynthesisEvent;
-    attribute SpeechSynthesisUtteranceConstructor SpeechSynthesisUtterance;
 };
diff --git a/modules/speech/SpeechGrammar.idl b/modules/speech/SpeechGrammar.idl
index d273948..0116770 100644
--- a/modules/speech/SpeechGrammar.idl
+++ b/modules/speech/SpeechGrammar.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    Constructor,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    Constructor
 ] interface SpeechGrammar {
     [URL,CallWith=ScriptExecutionContext] attribute DOMString src;
     attribute float weight;
diff --git a/modules/speech/SpeechGrammarList.idl b/modules/speech/SpeechGrammarList.idl
index 2c6db68..83a06a3 100644
--- a/modules/speech/SpeechGrammarList.idl
+++ b/modules/speech/SpeechGrammarList.idl
@@ -24,8 +24,8 @@
  */
 
 [
-    Constructor,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    Constructor
 ] interface SpeechGrammarList {
     readonly attribute unsigned long length;
     getter SpeechGrammar item([IsIndex] unsigned long index);
diff --git a/modules/speech/SpeechRecognition.idl b/modules/speech/SpeechRecognition.idl
index 9118634..bb4351d 100644
--- a/modules/speech/SpeechRecognition.idl
+++ b/modules/speech/SpeechRecognition.idl
@@ -24,10 +24,11 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     Constructor,
     CallWith=ScriptExecutionContext,
-    EventTarget,
+    EventTarget
 ] interface SpeechRecognition {
     attribute SpeechGrammarList grammars;
     attribute DOMString lang;
diff --git a/modules/speech/SpeechRecognitionAlternative.idl b/modules/speech/SpeechRecognitionAlternative.idl
index fb786dd..3e120ca 100644
--- a/modules/speech/SpeechRecognitionAlternative.idl
+++ b/modules/speech/SpeechRecognitionAlternative.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SpeechRecognitionAlternative {
     readonly attribute DOMString transcript;
     readonly attribute float confidence;
diff --git a/modules/speech/SpeechRecognitionError.idl b/modules/speech/SpeechRecognitionError.idl
index d62ac18..59956d2 100644
--- a/modules/speech/SpeechRecognitionError.idl
+++ b/modules/speech/SpeechRecognitionError.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     ConstructorTemplate=Event
 ] interface SpeechRecognitionError : Event {
     [InitializedByEventConstructor] readonly attribute DOMString error;
diff --git a/modules/speech/SpeechRecognitionEvent.idl b/modules/speech/SpeechRecognitionEvent.idl
index 8027f82..e4ca482 100644
--- a/modules/speech/SpeechRecognitionEvent.idl
+++ b/modules/speech/SpeechRecognitionEvent.idl
@@ -24,7 +24,8 @@
  */
 
 [
-    ConstructorTemplate=Event,
+    NoInterfaceObject,
+    ConstructorTemplate=Event
 ] interface SpeechRecognitionEvent : Event {
     [InitializedByEventConstructor] readonly attribute unsigned long resultIndex;
     [InitializedByEventConstructor] readonly attribute SpeechRecognitionResultList results;
diff --git a/modules/speech/SpeechRecognitionResult.idl b/modules/speech/SpeechRecognitionResult.idl
index 15a7f7d..45f6b51 100644
--- a/modules/speech/SpeechRecognitionResult.idl
+++ b/modules/speech/SpeechRecognitionResult.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SpeechRecognitionResult {
     readonly attribute unsigned long length;
     getter SpeechRecognitionAlternative item([IsIndex] unsigned long index);
diff --git a/modules/speech/SpeechRecognitionResultList.idl b/modules/speech/SpeechRecognitionResultList.idl
index f2ccdeb..6194649 100644
--- a/modules/speech/SpeechRecognitionResultList.idl
+++ b/modules/speech/SpeechRecognitionResultList.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SpeechRecognitionResultList {
     readonly attribute unsigned long length;
     getter SpeechRecognitionResult item([IsIndex] unsigned long index);
diff --git a/modules/speech/SpeechSynthesis.idl b/modules/speech/SpeechSynthesis.idl
index 6fb3fbc..4078c88 100644
--- a/modules/speech/SpeechSynthesis.idl
+++ b/modules/speech/SpeechSynthesis.idl
@@ -24,6 +24,7 @@
  */
  
 [
+    NoInterfaceObject,
     EnabledAtRuntime=speechSynthesis
 ] interface SpeechSynthesis  {
     readonly attribute boolean pending;
diff --git a/modules/speech/SpeechSynthesisVoice.idl b/modules/speech/SpeechSynthesisVoice.idl
index 8886ac1..a377631 100644
--- a/modules/speech/SpeechSynthesisVoice.idl
+++ b/modules/speech/SpeechSynthesisVoice.idl
@@ -24,6 +24,7 @@
  */
  
 [
+    NoInterfaceObject,
     EnabledAtRuntime=speechSynthesis
 ] interface SpeechSynthesisVoice {
     readonly attribute DOMString voiceURI;
diff --git a/modules/vibration/NavigatorVibration.idl b/modules/vibration/NavigatorVibration.idl
index 09ef38e..ba3b258 100644
--- a/modules/vibration/NavigatorVibration.idl
+++ b/modules/vibration/NavigatorVibration.idl
@@ -18,7 +18,7 @@
  */
 
 [
-    Conditional=VIBRATION,
+    Conditional=VIBRATION
 ] partial interface Navigator {
     [RaisesException] void vibrate(sequence<unsigned long> pattern);
     [RaisesException] void vibrate(unsigned long time);
diff --git a/modules/webaudio/AudioBuffer.idl b/modules/webaudio/AudioBuffer.idl
index e208fc3..19f66a5 100644
--- a/modules/webaudio/AudioBuffer.idl
+++ b/modules/webaudio/AudioBuffer.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO,
-    ImplementationLacksVTable
+    Conditional=WEB_AUDIO
 ] interface AudioBuffer {
     readonly attribute long length; // in sample-frames
     readonly attribute float duration; // in seconds
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
index 088f684..319a793 100644
--- a/modules/webaudio/AudioContext.idl
+++ b/modules/webaudio/AudioContext.idl
@@ -24,6 +24,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEB_AUDIO,
     ActiveDOMObject,
     CustomConstructor,
diff --git a/modules/webaudio/AudioDestinationNode.idl b/modules/webaudio/AudioDestinationNode.idl
index 3c63058..e85caef 100644
--- a/modules/webaudio/AudioDestinationNode.idl
+++ b/modules/webaudio/AudioDestinationNode.idl
@@ -23,8 +23,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO,
-    SkipVTableValidation
+    Conditional=WEB_AUDIO
 ] interface AudioDestinationNode : AudioNode {
     readonly attribute unsigned long maxChannelCount;
 };
diff --git a/modules/webaudio/AudioListener.idl b/modules/webaudio/AudioListener.idl
index c98b6d0..0011fe0 100644
--- a/modules/webaudio/AudioListener.idl
+++ b/modules/webaudio/AudioListener.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO,
-    ImplementationLacksVTable
+    Conditional=WEB_AUDIO
 ] interface AudioListener {
     attribute float dopplerFactor;  // same as OpenAL (default 1.0)
     attribute float speedOfSound;   // in meters / second (default 343.3)
diff --git a/modules/webaudio/AudioNode.idl b/modules/webaudio/AudioNode.idl
index a2448c0..7221319 100644
--- a/modules/webaudio/AudioNode.idl
+++ b/modules/webaudio/AudioNode.idl
@@ -24,7 +24,7 @@
 
 [
     Conditional=WEB_AUDIO
-] interface AudioNode {
+] interface AudioNode : EventTarget {
     readonly attribute AudioContext context;
     readonly attribute unsigned long numberOfInputs;
     readonly attribute unsigned long numberOfOutputs;
@@ -40,4 +40,14 @@
     [RaisesException] void connect(AudioParam? destination, [Default=Undefined] optional unsigned long output);
 
     [RaisesException] void disconnect([Default=Undefined] optional unsigned long output);
+
+
+    // EventTarget interface
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          optional boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             optional boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
diff --git a/modules/webaudio/AudioSourceNode.idl b/modules/webaudio/AudioSourceNode.idl
index 1981c46..7a69b79 100644
--- a/modules/webaudio/AudioSourceNode.idl
+++ b/modules/webaudio/AudioSourceNode.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    Conditional=WEB_AUDIO,
-    ImplementationLacksVTable
+    NoInterfaceObject,
+    Conditional=WEB_AUDIO
 ] interface AudioSourceNode : AudioNode {
 };
diff --git a/modules/webaudio/DOMWindowWebAudio.idl b/modules/webaudio/DOMWindowWebAudio.idl
deleted file mode 100644
index abdbaa2..0000000
--- a/modules/webaudio/DOMWindowWebAudio.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2011 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.
- */
-
-[
-    Conditional=WEB_AUDIO,
-] partial interface DOMWindow {
-    [EnabledAtRuntime=audioContext] attribute AudioContextConstructor webkitAudioContext;
-    [EnabledAtRuntime=audioContext] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
-    attribute PannerNodeConstructor webkitAudioPannerNode;
-    attribute AudioProcessingEventConstructor AudioProcessingEvent;
-    attribute OfflineAudioCompletionEventConstructor OfflineAudioCompletionEvent;
-};
-
diff --git a/modules/webaudio/OfflineAudioContext.idl b/modules/webaudio/OfflineAudioContext.idl
index d68c2ad..cbaa9ca 100644
--- a/modules/webaudio/OfflineAudioContext.idl
+++ b/modules/webaudio/OfflineAudioContext.idl
@@ -23,6 +23,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEB_AUDIO,
     EventTarget,
     Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
diff --git a/modules/webaudio/PannerNode.idl b/modules/webaudio/PannerNode.idl
index cb2691b..d20a2e6 100644
--- a/modules/webaudio/PannerNode.idl
+++ b/modules/webaudio/PannerNode.idl
@@ -23,6 +23,7 @@
  */
 
 [
+    NoInterfaceObject,
     Conditional=WEB_AUDIO
 ] interface PannerNode : AudioNode {
     // Panning model
diff --git a/modules/webaudio/ScriptProcessorNode.idl b/modules/webaudio/ScriptProcessorNode.idl
index b0d6535..4d80d13 100644
--- a/modules/webaudio/ScriptProcessorNode.idl
+++ b/modules/webaudio/ScriptProcessorNode.idl
@@ -22,13 +22,12 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-// For real-time audio stream synthesis/processing in JavaScript 
+// For real-time audio stream synthesis/processing in JavaScript
 [
-    Conditional=WEB_AUDIO,
-    EventTarget
+    Conditional=WEB_AUDIO
 ] interface ScriptProcessorNode : AudioNode {
     // Rendering callback
     attribute EventListener onaudioprocess;
-    
+
     readonly attribute long bufferSize;
 };
diff --git a/modules/webaudio/WaveTable.idl b/modules/webaudio/WaveTable.idl
index d153b60..0174b5e 100644
--- a/modules/webaudio/WaveTable.idl
+++ b/modules/webaudio/WaveTable.idl
@@ -24,8 +24,7 @@
 
 // WaveTable represents a periodic audio waveform given by its Fourier coefficients.
 [
-    Conditional=WEB_AUDIO,
-    ImplementationLacksVTable
+    Conditional=WEB_AUDIO
 ] interface WaveTable {
 
 };
diff --git a/modules/webdatabase/DOMWindowWebDatabase.idl b/modules/webdatabase/DOMWindowWebDatabase.idl
index 02c011c..0d525e8 100644
--- a/modules/webdatabase/DOMWindowWebDatabase.idl
+++ b/modules/webdatabase/DOMWindowWebDatabase.idl
@@ -26,6 +26,5 @@
 
 partial interface DOMWindow {
     [EnabledAtRuntime=database, MeasureAs=OpenWebDatabase, PerWorldBindings, ActivityLog=AccessForIsolatedWorlds, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
-    attribute SQLExceptionConstructor SQLException;
 };
 
diff --git a/modules/webdatabase/Database.idl b/modules/webdatabase/Database.idl
index 1b516c0..5dcd692 100644
--- a/modules/webdatabase/Database.idl
+++ b/modules/webdatabase/Database.idl
@@ -27,6 +27,7 @@
  */
 
 [
+    NoInterfaceObject
 ] interface Database {
     readonly attribute DOMString version;
     void changeVersion(DOMString oldVersion, DOMString newVersion, optional SQLTransactionCallback callback, optional SQLTransactionErrorCallback errorCallback, optional VoidCallback successCallback);
diff --git a/modules/webdatabase/DatabaseSync.idl b/modules/webdatabase/DatabaseSync.idl
index 5581e48..eaaf30f 100644
--- a/modules/webdatabase/DatabaseSync.idl
+++ b/modules/webdatabase/DatabaseSync.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject
 ] interface DatabaseSync {
     readonly attribute DOMString version;
     readonly attribute DOMString lastErrorMessage;
diff --git a/modules/webdatabase/SQLError.idl b/modules/webdatabase/SQLError.idl
index 875775a..daaed71 100644
--- a/modules/webdatabase/SQLError.idl
+++ b/modules/webdatabase/SQLError.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SQLError {
     readonly attribute unsigned long code;
     readonly attribute DOMString message;
diff --git a/modules/webdatabase/SQLException.idl b/modules/webdatabase/SQLException.idl
index 3dc160a..a71ed0a 100644
--- a/modules/webdatabase/SQLException.idl
+++ b/modules/webdatabase/SQLException.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    DoNotCheckConstants,
-    ImplementationLacksVTable
+    DoNotCheckConstants
 ] exception SQLException {
     readonly attribute unsigned long code;
     readonly attribute DOMString message;
diff --git a/modules/webdatabase/SQLResultSet.idl b/modules/webdatabase/SQLResultSet.idl
index 18ea2af..d3ce314 100644
--- a/modules/webdatabase/SQLResultSet.idl
+++ b/modules/webdatabase/SQLResultSet.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SQLResultSet {
     readonly attribute SQLResultSetRowList rows;
 
diff --git a/modules/webdatabase/SQLResultSetRowList.idl b/modules/webdatabase/SQLResultSetRowList.idl
index 1891c92..05dd04b 100644
--- a/modules/webdatabase/SQLResultSetRowList.idl
+++ b/modules/webdatabase/SQLResultSetRowList.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SQLResultSetRowList {
     readonly attribute unsigned long length;
     [Custom] any item(unsigned long index);
diff --git a/modules/webdatabase/SQLTransaction.idl b/modules/webdatabase/SQLTransaction.idl
index 472e1b9..d506b75 100644
--- a/modules/webdatabase/SQLTransaction.idl
+++ b/modules/webdatabase/SQLTransaction.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SQLTransaction {
     [Custom] void executeSql(DOMString sqlStatement,
                              ObjectArray arguments,
diff --git a/modules/webdatabase/SQLTransactionSync.idl b/modules/webdatabase/SQLTransactionSync.idl
index fd37398..732dba3 100644
--- a/modules/webdatabase/SQLTransactionSync.idl
+++ b/modules/webdatabase/SQLTransactionSync.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ImplementationLacksVTable
+    NoInterfaceObject
 ] interface SQLTransactionSync {
     [Custom] SQLResultSet executeSql(DOMString sqlStatement, ObjectArray arguments);
 };
diff --git a/modules/webmidi/MIDIConnectionEvent.idl b/modules/webmidi/MIDIConnectionEvent.idl
index 3946564..59481a3 100644
--- a/modules/webmidi/MIDIConnectionEvent.idl
+++ b/modules/webmidi/MIDIConnectionEvent.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     ConstructorTemplate=Event
 ] interface MIDIConnectionEvent : Event {
     [InitializedByEventConstructor] readonly attribute MIDIPort port;
diff --git a/modules/webmidi/MIDIInput.idl b/modules/webmidi/MIDIInput.idl
index f4cd4f2..8c0ae3c 100644
--- a/modules/webmidi/MIDIInput.idl
+++ b/modules/webmidi/MIDIInput.idl
@@ -29,6 +29,7 @@
  */
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     EventTarget
 ] interface MIDIInput : MIDIPort {
diff --git a/modules/webmidi/MIDIMessageEvent.idl b/modules/webmidi/MIDIMessageEvent.idl
index 9373011..5a9c05f 100644
--- a/modules/webmidi/MIDIMessageEvent.idl
+++ b/modules/webmidi/MIDIMessageEvent.idl
@@ -31,6 +31,7 @@
 // FIXME: The spec doesn't provide details about constructor, yet.
 // See also, https://github.com/WebAudio/web-midi-api/issues/1 .
 [
+    NoInterfaceObject,
     ConstructorTemplate=Event
 ] interface MIDIMessageEvent : Event {
     [InitializedByEventConstructor] readonly attribute double receivedTime;
diff --git a/modules/inputmethod/Composition.idl b/modules/webmidi/MIDIOutput.idl
similarity index 88%
copy from modules/inputmethod/Composition.idl
copy to modules/webmidi/MIDIOutput.idl
index 155d74b..a07ec6f 100644
--- a/modules/inputmethod/Composition.idl
+++ b/modules/webmidi/MIDIOutput.idl
@@ -28,10 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-// http://www.w3.org/TR/ime-api/
 [
-  ImplementationLacksVTable
-] interface Composition {
-    readonly attribute Node text;
-    readonly attribute Range caret;
+    NoInterfaceObject
+] interface MIDIOutput : MIDIPort {
+    void send(Uint8Array data, optional double timestamp);
+    void send(sequence<unsigned long> data, optional double timestamp);
 };
diff --git a/modules/webmidi/MIDIPort.idl b/modules/webmidi/MIDIPort.idl
index 226387c..e7e2aa9 100644
--- a/modules/webmidi/MIDIPort.idl
+++ b/modules/webmidi/MIDIPort.idl
@@ -34,6 +34,7 @@
 };
 
 [
+    NoInterfaceObject,
     ActiveDOMObject,
     EventTarget
 ] interface MIDIPort {
diff --git a/modules/websockets/DOMWindowWebSocket.idl b/modules/websockets/DOMWindowWebSocket.idl
deleted file mode 100644
index c8d2d64..0000000
--- a/modules/websockets/DOMWindowWebSocket.idl
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2011 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.
- */
-
-partial interface DOMWindow {
-    attribute CloseEventConstructor CloseEvent;
-    attribute WebSocketConstructor WebSocket; // Usable with the new operator
-};
-
