Roll IDL to 1750

TBR=blois@google.com,efortuna@google.com

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

git-svn-id: http://dart.googlecode.com/svn/third_party/WebCore@32481 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/core/README b/core/README
index 8f88f7d..575df1a 100644
--- a/core/README
+++ b/core/README
@@ -5,5 +5,5 @@
 using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
 
 The current version corresponds to:
-URL: http://src.chromium.org/blink/branches/dart/1700
-Current revision: 164530
+URL: http://src.chromium.org/blink/branches/dart/1750
+Current revision: 166797
diff --git a/core/animation/ElementAnimation.idl b/core/animation/ElementAnimation.idl
new file mode 100644
index 0000000..e191d95
--- /dev/null
+++ b/core/animation/ElementAnimation.idl
@@ -0,0 +1,33 @@
+/*
+ * 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.
+ */
+
+partial interface Element {
+    [RuntimeEnabled=WebAnimationsAPI] void animate(sequence<Dictionary> keyframes, optional double duration);
+};
\ No newline at end of file
diff --git a/core/css/CSSCharsetRule.idl b/core/css/CSSCharsetRule.idl
index a6eab93..1821607 100644
--- a/core/css/CSSCharsetRule.idl
+++ b/core/css/CSSCharsetRule.idl
@@ -19,6 +19,5 @@
  */
 
 interface CSSCharsetRule : CSSRule {
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString encoding;
+    attribute DOMString encoding;
 };
-
diff --git a/core/css/CSSHostRule.idl b/core/css/CSSHostRule.idl
deleted file mode 100644
index d86b738..0000000
--- a/core/css/CSSHostRule.idl
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
- * 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.
- */
-
-// Introduced in Shadow DOM spec:
-interface CSSHostRule : CSSRule {
-    readonly attribute CSSRuleList cssRules;
-
-    [RaisesException] unsigned long      insertRule(DOMString rule, unsigned long index);
-    [RaisesException] void               deleteRule(unsigned long index);
-};
-
diff --git a/core/css/CSSKeyframesRule.idl b/core/css/CSSKeyframesRule.idl
index c94dbc4..d97dd4a 100644
--- a/core/css/CSSKeyframesRule.idl
+++ b/core/css/CSSKeyframesRule.idl
@@ -28,8 +28,7 @@
 
 // Introduced in DOM Level ?:
 interface CSSKeyframesRule : CSSRule {
-
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString name;
+    attribute DOMString name;
     readonly attribute CSSRuleList cssRules;
 
     [ImplementedAs=item, NotEnumerable] getter CSSKeyframeRule(unsigned long index);
@@ -37,4 +36,3 @@
     void deleteRule([Default=Undefined] optional DOMString key);
     CSSKeyframeRule findRule([Default=Undefined] optional DOMString key);
 };
-
diff --git a/core/css/CSSPageRule.idl b/core/css/CSSPageRule.idl
index e9e49d0..3c64d3b 100644
--- a/core/css/CSSPageRule.idl
+++ b/core/css/CSSPageRule.idl
@@ -20,10 +20,6 @@
 
 // Introduced in DOM Level 2:
 interface CSSPageRule : CSSRule {
-
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectorText;
-
+    attribute DOMString selectorText;
     readonly attribute CSSStyleDeclaration style;
-
 };
-
diff --git a/core/css/CSSRule.idl b/core/css/CSSRule.idl
index 2489d2d..9dadad9 100644
--- a/core/css/CSSRule.idl
+++ b/core/css/CSSRule.idl
@@ -20,8 +20,8 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToV8,
-    DependentLifetime
+    Custom=Wrap,
+    DependentLifetime,
 ] interface CSSRule {
 
     // RuleType
@@ -40,11 +40,10 @@
     [RuntimeEnabled=CSSViewport] const unsigned short VIEWPORT_RULE = 15;
     [RuntimeEnabled=CSSRegions] const unsigned short WEBKIT_REGION_RULE = 16;
     const unsigned short WEBKIT_FILTER_RULE = 17;
-    const unsigned short HOST_RULE = 1001;
 
     readonly attribute unsigned short   type;
 
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString        cssText;
+             attribute DOMString        cssText;
 
     readonly attribute CSSStyleSheet    parentStyleSheet;
     readonly attribute CSSRule          parentRule;
diff --git a/core/css/CSSStyleDeclaration.idl b/core/css/CSSStyleDeclaration.idl
index 649a579..f552573 100644
--- a/core/css/CSSStyleDeclaration.idl
+++ b/core/css/CSSStyleDeclaration.idl
@@ -22,7 +22,7 @@
 [
     DependentLifetime
 ] interface CSSStyleDeclaration {
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString        cssText;
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, RaisesException=Setter] attribute DOMString        cssText;
 
     [TreatReturnedNullStringAs=Null] DOMString          getPropertyValue([Default=Undefined] optional DOMString propertyName);
     CSSValue           getPropertyCSSValue([Default=Undefined] optional DOMString propertyName);
diff --git a/core/css/CSSStyleRule.idl b/core/css/CSSStyleRule.idl
index 23cd73a..b5c890f 100644
--- a/core/css/CSSStyleRule.idl
+++ b/core/css/CSSStyleRule.idl
@@ -20,10 +20,6 @@
 
 // Introduced in DOM Level 2:
 interface CSSStyleRule : CSSRule {
-
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectorText;
-
+    attribute DOMString selectorText;
     readonly attribute CSSStyleDeclaration style;
-
 };
-
diff --git a/core/css/CSSStyleSheet.idl b/core/css/CSSStyleSheet.idl
index 06ca95b..a9b0900 100644
--- a/core/css/CSSStyleSheet.idl
+++ b/core/css/CSSStyleSheet.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    GenerateIsReachable=ownerNode
+    GenerateVisitDOMWrapper=ownerNode,
 ] interface CSSStyleSheet : StyleSheet {
     readonly attribute CSSRule          ownerRule;
     readonly attribute CSSRuleList      cssRules;
@@ -29,11 +29,10 @@
     [RaisesException] void deleteRule(unsigned long index);
 
     // IE Extensions
-    readonly attribute CSSRuleList      rules;
+    [MeasureAs=CSSStyleSheetRules] readonly attribute CSSRuleList rules;
 
-    [RaisesException] long addRule([Default=Undefined] optional DOMString selector,
-                 [Default=Undefined] optional DOMString style,
-                 optional unsigned long index);
-    [RaisesException] void removeRule([Default=Undefined] optional unsigned long index);
+    [RaisesException, MeasureAs=CSSStyleSheetAddRule] long addRule([Default=Undefined] optional DOMString selector,
+                                                                   [Default=Undefined] optional DOMString style,
+                                                                   optional unsigned long index);
+    [RaisesException, MeasureAs=CSSStyleSheetRemoveRule] void removeRule([Default=Undefined] optional unsigned long index);
 };
-
diff --git a/core/css/CSSValue.idl b/core/css/CSSValue.idl
index 9ac1fc8..dfdacd3 100644
--- a/core/css/CSSValue.idl
+++ b/core/css/CSSValue.idl
@@ -19,9 +19,8 @@
  */
 
 [
-    CustomToV8,
-
-    DependentLifetime
+    Custom=Wrap,
+    DependentLifetime,
 ] interface CSSValue {
 
     // UnitTypes
@@ -30,7 +29,7 @@
     const unsigned short CSS_VALUE_LIST      = 2;
     const unsigned short CSS_CUSTOM          = 3;
 
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString cssText;
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, RaisesException=Setter] attribute DOMString cssText;
 
     readonly attribute unsigned short cssValueType;
 
diff --git a/core/css/CSSVariablesMapForEachCallback.idl b/core/css/CSSVariablesMapForEachCallback.idl
index d66eb61..11a6cfc 100644
--- a/core/css/CSSVariablesMapForEachCallback.idl
+++ b/core/css/CSSVariablesMapForEachCallback.idl
@@ -26,6 +26,6 @@
  */
 
 callback interface CSSVariablesMapForEachCallback {
-    [CallWith=ThisValue] boolean handleItem(DOMString value, DOMString name, CSSVariablesMap map);
-    boolean handleItem(DOMString value, DOMString name, CSSVariablesMap map);
+    [CallWith=ThisValue] void handleItem(DOMString value, DOMString name, CSSVariablesMap map);
+    void handleItem(DOMString value, DOMString name, CSSVariablesMap map);
 };
diff --git a/core/css/FontFace.idl b/core/css/FontFace.idl
index 874872f..fcfef2d 100644
--- a/core/css/FontFace.idl
+++ b/core/css/FontFace.idl
@@ -38,20 +38,19 @@
 [
     RuntimeEnabled=FontLoadEvents,
     Constructor(DOMString family, DOMString source, Dictionary descriptors),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface FontFace {
 
-    [SetterRaisesException] attribute DOMString family;
-    [SetterRaisesException] attribute DOMString style;
-    [SetterRaisesException] attribute DOMString weight;
-    [SetterRaisesException] attribute DOMString stretch;
-    [SetterRaisesException] attribute DOMString unicodeRange;
-    [SetterRaisesException] attribute DOMString variant;
-    [SetterRaisesException] attribute DOMString featureSettings;
+    [RaisesException=Setter] attribute DOMString family;
+    [RaisesException=Setter] attribute DOMString style;
+    [RaisesException=Setter] attribute DOMString weight;
+    [RaisesException=Setter] attribute DOMString stretch;
+    [RaisesException=Setter] attribute DOMString unicodeRange;
+    [RaisesException=Setter] attribute DOMString variant;
+    [RaisesException=Setter] attribute DOMString featureSettings;
 
     readonly attribute FontFaceLoadStatus status;
 
-    // FIXME: Implement them
-    //  void load();
-    //  Promise ready();
+    void load();
+    [CallWith=ExecutionContext] Promise ready();
 };
diff --git a/core/css/FontFaceSet.idl b/core/css/FontFaceSet.idl
index daa2e8e..643c335 100644
--- a/core/css/FontFaceSet.idl
+++ b/core/css/FontFaceSet.idl
@@ -31,10 +31,10 @@
 enum FontFaceSetLoadStatus { "loading", "loaded" };
 
 [
+    ActiveDOMObject,
+    GenerateVisitDOMWrapper=document,
     NoInterfaceObject,
     RuntimeEnabled=FontLoadEvents,
-    ActiveDOMObject,
-    GenerateIsReachable=document
 ] interface FontFaceSet : EventTarget {
 
     attribute EventHandler onloading;
diff --git a/core/css/MediaQueryListListener.idl b/core/css/MediaQueryListListener.idl
deleted file mode 100644
index 755c416..0000000
--- a/core/css/MediaQueryListListener.idl
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
- *
- *  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.
- */
-
-[
-
-    CPPPureInterface
-] interface MediaQueryListListener {
-    void queryChanged([Default=Undefined] optional MediaQueryList list);
-};
diff --git a/core/css/StyleSheet.idl b/core/css/StyleSheet.idl
index 2c179ac..e3e13b3 100644
--- a/core/css/StyleSheet.idl
+++ b/core/css/StyleSheet.idl
@@ -20,8 +20,8 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToV8,
-    GenerateIsReachable=ownerNode
+    Custom=Wrap,
+    GenerateVisitDOMWrapper=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 dcf92c2..7341728 100644
--- a/core/css/StyleSheetList.idl
+++ b/core/css/StyleSheetList.idl
@@ -20,7 +20,7 @@
 
 // Introduced in DOM Level 2:
 [
-    GenerateIsReachable=document,
+    GenerateVisitDOMWrapper=document,
 ] interface StyleSheetList {
     readonly attribute unsigned long    length;
     getter StyleSheet         item(unsigned long index);
diff --git a/core/css/WebKitCSSMatrix.idl b/core/css/WebKitCSSMatrix.idl
index b3232da..0016fcf 100644
--- a/core/css/WebKitCSSMatrix.idl
+++ b/core/css/WebKitCSSMatrix.idl
@@ -27,7 +27,7 @@
 [
     Constructor([Default=NullString] optional DOMString cssValue),
     ImplementedAs=CSSMatrix,
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface WebKitCSSMatrix {
 
     // These attributes are simple aliases for certain elements of the 4x4 matrix
diff --git a/core/dom/Attr.idl b/core/dom/Attr.idl
index 8494da4..00d9205 100644
--- a/core/dom/Attr.idl
+++ b/core/dom/Attr.idl
@@ -26,7 +26,7 @@
 
     [MeasureAs=AttributeSpecified] readonly attribute boolean specified;
 
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks] attribute DOMString value;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, RaisesException=Setter, CustomElementCallbacks] attribute DOMString value;
 
     // DOM Level 2
 
@@ -38,7 +38,7 @@
 
     // DOM 4
 
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString prefix;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, RaisesException=Setter] attribute DOMString prefix;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString namespaceURI;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString localName;
 };
diff --git a/core/dom/Comment.idl b/core/dom/Comment.idl
index 0503d63..0297e95 100644
--- a/core/dom/Comment.idl
+++ b/core/dom/Comment.idl
@@ -19,7 +19,7 @@
 
 [
     Constructor([Default=NullString] optional DOMString data),
-    ConstructorCallWith=Document
+    ConstructorCallWith=Document,
 ] interface Comment : CharacterData {
 };
 
diff --git a/core/dom/DOMError.idl b/core/dom/DOMError.idl
index 83522fa..b2ea60f 100644
--- a/core/dom/DOMError.idl
+++ b/core/dom/DOMError.idl
@@ -27,7 +27,7 @@
  */
 [
     NoInterfaceObject
-] interface  DOMError {
+] interface DOMError {
     readonly attribute DOMString name;
     readonly attribute DOMString message;
   };
diff --git a/core/dom/DOMImplementation.idl b/core/dom/DOMImplementation.idl
index c110cb4..7630c5e 100644
--- a/core/dom/DOMImplementation.idl
+++ b/core/dom/DOMImplementation.idl
@@ -19,30 +19,29 @@
  */
 
 [
-    GenerateIsReachable=document
+    GenerateVisitDOMWrapper=document,
 ] interface DOMImplementation {
 
     // DOM Level 1
 
-     boolean hasFeature([Default=Undefined] optional DOMString feature,
-                                      [TreatNullAs=NullString,Default=Undefined] optional DOMString version);
+    boolean hasFeature(DOMString feature, [TreatNullAs=NullString] DOMString version);
 
     // DOM Level 2
 
-     [RaisesException] DocumentType createDocumentType([TreatNullAs=NullString] DOMString qualifiedName,
-                                                       [TreatNullAs=NullString] DOMString publicId,
-                                                       [TreatNullAs=NullString] DOMString systemId);
-     [RaisesException] Document createDocument([TreatNullAs=NullString] DOMString namespaceURI,
-                                               [TreatNullAs=NullString] DOMString qualifiedName,
-                                               [Default=Undefined] optional DocumentType doctype);
+    [RaisesException] DocumentType createDocumentType(DOMString qualifiedName,
+                                                      DOMString publicId,
+                                                      DOMString systemId);
+    [RaisesException] Document createDocument([TreatNullAs=NullString] DOMString namespaceURI,
+                                              [TreatNullAs=NullString] DOMString qualifiedName,
+                                              [Default=Undefined] optional DocumentType doctype);
 
     // DOMImplementationCSS interface from DOM Level 2 CSS
 
-     CSSStyleSheet createCSSStyleSheet([Default=Undefined] optional DOMString title,
-                                       [Default=Undefined] optional DOMString media);
+    [MeasureAs=DOMImplementationCreateCSSStyleSheet]
+    CSSStyleSheet createCSSStyleSheet([Default=Undefined] optional DOMString title,
+                                      [Default=Undefined] optional DOMString media);
 
     // HTMLDOMImplementation interface from DOM Level 2 HTML
 
     HTMLDocument createHTMLDocument([Default=NullString] optional DOMString title);
 };
-
diff --git a/core/dom/DOMStringMap.idl b/core/dom/DOMStringMap.idl
index 5b09c33..fcbbf89 100644
--- a/core/dom/DOMStringMap.idl
+++ b/core/dom/DOMStringMap.idl
@@ -24,10 +24,13 @@
  */
 
 [
-    GenerateIsReachable=element
+    GenerateVisitDOMWrapper=element,
 ] interface DOMStringMap {
+    [ImplementedAs=anonymousIndexedGetter, NotEnumerable] getter DOMString (unsigned long index);
+    [ImplementedAs=anonymousIndexedSetter, RaisesException, NotEnumerable] setter DOMString (unsigned long index, DOMString value);
+    [ImplementedAs=anonymousIndexedDeleter, RaisesException, NotEnumerable] deleter boolean (unsigned long index);
     [ImplementedAs=item, OverrideBuiltins] getter DOMString (DOMString name);
-    [ImplementedAs=anonymousNamedDeleter, RaisesException] deleter boolean (DOMString name);
     [ImplementedAs=anonymousNamedSetter, RaisesException, OverrideBuiltins] setter DOMString (DOMString name, DOMString value);
+    [ImplementedAs=anonymousNamedDeleter, RaisesException] deleter boolean (DOMString name);
 };
 
diff --git a/core/dom/DOMTokenList.idl b/core/dom/DOMTokenList.idl
index 9aef382..9830b7e 100644
--- a/core/dom/DOMTokenList.idl
+++ b/core/dom/DOMTokenList.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    GenerateIsReachable=element
+    GenerateVisitDOMWrapper=element,
 ] interface DOMTokenList {
     readonly attribute unsigned long length;
     [TreatReturnedNullStringAs=Null] getter DOMString item(unsigned long index);
diff --git a/core/dom/Document.idl b/core/dom/Document.idl
index ba1e205..772a3ad 100644
--- a/core/dom/Document.idl
+++ b/core/dom/Document.idl
@@ -29,60 +29,52 @@
     readonly attribute DOMImplementation implementation;
     readonly attribute Element documentElement;
 
-    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElement([TreatNullAs=NullString,Default=Undefined] optional DOMString tagName);
-    DocumentFragment   createDocumentFragment();
-    [PerWorldBindings] Text createTextNode([Default=Undefined] optional DOMString data);
-    Comment createComment([Default=Undefined] optional DOMString data);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Element createElement(DOMString tagName);
+    DocumentFragment createDocumentFragment();
+    [PerWorldBindings] Text createTextNode(DOMString data);
+    Comment createComment(DOMString data);
     [RaisesException, MeasureAs=DocumentCreateCDATASection] CDATASection createCDATASection([Default=Undefined] optional DOMString data); // Removed from DOM4.
-    [RaisesException] ProcessingInstruction createProcessingInstruction([Default=Undefined] optional DOMString target,
-                                                                                 [Default=Undefined] optional DOMString data);
+    [RaisesException] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
     [RaisesException, MeasureAs=DocumentCreateAttribute] Attr createAttribute([Default=Undefined] optional DOMString name); // Removed from DOM4.
-    [PerWorldBindings] NodeList           getElementsByTagName([Default=Undefined] optional DOMString tagname);
+    [PerWorldBindings] NodeList getElementsByTagName(DOMString localName);
 
     // Introduced in DOM Level 2:
 
-    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node importNode([Default=Undefined] optional Node importedNode,
-                    optional boolean deep);
-    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                            [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Node importNode(Node node, optional boolean deep);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName);
     [RaisesException, MeasureAs=DocumentCreateAttributeNS] Attr createAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                                                                   [TreatNullAs=NullString,Default=Undefined] optional DOMString qualifiedName); // Removed from DOM4.
-     NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                                   [Default=Undefined] optional DOMString localName);
-    [PerWorldBindings] Element            getElementById([Default=Undefined] optional DOMString elementId);
+    NodeList getElementsByTagNameNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
+    [PerWorldBindings] Element getElementById(DOMString elementId);
 
     // DOM Level 3 Core
 
     [TreatReturnedNullStringAs=Null, MeasureAs=DocumentInputEncoding] readonly attribute DOMString inputEncoding; // Removed from DOM4.
 
     [TreatReturnedNullStringAs=Null, MeasureAs=DocumentXMLEncoding] readonly attribute DOMString xmlEncoding; // Removed from DOM4.
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException, MeasureAs=DocumentXMLVersion] attribute DOMString xmlVersion; // Removed from DOM4.
-    [SetterRaisesException, MeasureAs=DocumentXMLStandalone] attribute boolean xmlStandalone; // Removed from DOM4.
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, RaisesException=Setter, MeasureAs=DocumentXMLVersion] attribute DOMString xmlVersion; // Removed from DOM4.
+    [RaisesException=Setter, MeasureAs=DocumentXMLStandalone] attribute boolean xmlStandalone; // Removed from DOM4.
 
-    [RaisesException, CustomElementCallbacks] Node               adoptNode([Default=Undefined] optional Node source);
+    [RaisesException, CustomElementCallbacks] Node adoptNode(Node node);
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString documentURI;
 
     // DOM Level 2 Events (DocumentEvents interface)
 
-    [RaisesException] Event              createEvent([Default=Undefined] optional DOMString eventType);
+    [RaisesException] Event createEvent(DOMString eventType);
 
     // DOM Level 2 Traversal and Range (DocumentRange interface)
 
-    Range              createRange();
+    Range createRange();
 
     // DOM Level 2 Traversal and Range (DocumentTraversal interface)
-    // In DOM4, the fourth argument |expandEntityReferences| is removed.
-    // Historically, this argument was never implemented and has been ignored.
-    // We still receive the argument to keep compatibility, but don't do anything if it's specified.
+
     [RaisesException] NodeIterator createNodeIterator(Node root,
                                                       optional unsigned long whatToShow,
-                                                      optional NodeFilter filter,
-                                                      optional boolean expandEntityReferences);
+                                                      optional NodeFilter filter);
     [RaisesException] TreeWalker createTreeWalker(Node root,
                                                   optional unsigned long whatToShow,
-                                                  optional NodeFilter filter,
-                                                  optional boolean expandEntityReferences);
+                                                  optional NodeFilter filter);
 
     // DOM Level 2 Abstract Views (DocumentView interface)
 
@@ -113,12 +105,12 @@
 
              [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString title;
     readonly attribute DOMString referrer;
-             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
+             [TreatNullAs=NullString, RaisesException=Setter] attribute DOMString domain;
     readonly attribute DOMString URL;
 
-             [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
+             [TreatNullAs=NullString, RaisesException] attribute DOMString cookie;
 
-             [SetterRaisesException, CustomElementCallbacks] attribute HTMLElement body;
+             [RaisesException=Setter, CustomElementCallbacks] attribute HTMLElement body;
 
     readonly attribute HTMLHeadElement head;
     readonly attribute HTMLCollection images;
@@ -130,7 +122,7 @@
 
     [PerWorldBindings] NodeList getElementsByName([Default=Undefined] optional DOMString elementName);
 
-    [PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
+    [PerWorldBindings, ActivityLogging=ForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
 
     // IE extensions
     [MeasureAs=DocumentCharset, TreatReturnedNullStringAs=Undefined, TreatNullAs=NullString] attribute DOMString charset;
@@ -154,7 +146,7 @@
     CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
 
     // HTML 5
-    NodeList getElementsByClassName([Default=Undefined] optional DOMString tagname);
+    NodeList getElementsByClassName(DOMString classNames);
 
     readonly attribute DOMString compatMode;
 
@@ -187,7 +179,7 @@
     attribute EventHandler onwebkitfullscreenerror;
     attribute EventHandler onwebkitpointerlockchange;
     attribute EventHandler onwebkitpointerlockerror;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onwheel;
 
     [RuntimeEnabled=Touch] Touch createTouch([Default=Undefined] optional Window window,
                                                [Default=Undefined] optional EventTarget target,
@@ -204,13 +196,19 @@
 
     [DeprecateAs=PrefixedDocumentRegister, RuntimeEnabled=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks, RaisesException] CustomElementConstructor webkitRegister(DOMString name, optional Dictionary options);
     [RuntimeEnabled=CustomElements, ImplementedAs=registerElement, CallWith=ScriptState, CustomElementCallbacks, RaisesException] CustomElementConstructor register(DOMString name, optional Dictionary options);
-    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
-    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
+    [CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
                             [TreatNullAs=NullString] DOMString typeExtension);
 
     // Page visibility API.
-    readonly attribute DOMString webkitVisibilityState;
-    readonly attribute boolean webkitHidden;
+    readonly attribute DOMString visibilityState;
+    readonly attribute boolean hidden;
+
+    // Deprecated prefixed page visibility API.
+    // TODO(davidben): This is a property so attaching a deprecation warning results in false positives when outputting
+    // document in the console. It's possible http://crbug.com/43394 will resolve this.
+    [MeasureAs=PrefixedPageVisibility, ImplementedAs=visibilityState] readonly attribute DOMString webkitVisibilityState;
+    [MeasureAs=PrefixedPageVisibility, ImplementedAs=hidden] readonly attribute boolean webkitHidden;
 
     // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces
     [RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] readonly attribute SecurityPolicy securityPolicy;
diff --git a/core/dom/DocumentFragment.idl b/core/dom/DocumentFragment.idl
index 942f021..4f1ecf9 100644
--- a/core/dom/DocumentFragment.idl
+++ b/core/dom/DocumentFragment.idl
@@ -19,7 +19,7 @@
 
 [
     Constructor,
-    ConstructorCallWith=Document
+    ConstructorCallWith=Document,
 ] interface DocumentFragment : Node {
     // NodeSelector - Selector API
     [RaisesException] Element querySelector(DOMString selectors);
@@ -27,4 +27,3 @@
 };
 
 DocumentFragment implements ParentNode;
-
diff --git a/core/dom/Element.idl b/core/dom/Element.idl
index 3a8d2ba..ac50038 100644
--- a/core/dom/Element.idl
+++ b/core/dom/Element.idl
@@ -26,42 +26,35 @@
 
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString tagName;
 
-    [TreatReturnedNullStringAs=Null] DOMString getAttribute([Default=Undefined] optional DOMString name);
-    [RaisesException, CustomElementCallbacks] void setAttribute([Default=Undefined] optional DOMString name, [Default=Undefined] optional DOMString value);
-    [CustomElementCallbacks] void removeAttribute([Default=Undefined] optional DOMString name);
+    [TreatReturnedNullStringAs=Null] DOMString getAttribute(DOMString name);
+    [RaisesException, CustomElementCallbacks] void setAttribute(DOMString name, DOMString value);
+    [CustomElementCallbacks] void removeAttribute(DOMString name);
     [MeasureAs=ElementGetAttributeNode] Attr getAttributeNode([Default=Undefined] optional DOMString name); // Removed from DOM4.
     [RaisesException, CustomElementCallbacks, MeasureAs=ElementSetAttributeNode] Attr setAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr newAttr); // Removed from DOM4.
     [RaisesException, CustomElementCallbacks, MeasureAs=ElementRemoveAttributeNode] Attr removeAttributeNode([Default=Undefined, StrictTypeChecking] optional Attr oldAttr); // Removed from DOM4.
-    [PerWorldBindings] NodeList getElementsByTagName([Default=Undefined] optional DOMString name);
+    [PerWorldBindings] NodeList getElementsByTagName(DOMString name);
 
     [PerWorldBindings] readonly attribute NamedNodeMap     attributes;
     [MeasureAs=HasAttributes] boolean hasAttributes();
 
     // DOM Level 2 Core
 
-    DOMString getAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                             [Default=Undefined] optional DOMString localName);
-    [RaisesException, CustomElementCallbacks] void setAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                                                  [Default=Undefined] optional DOMString qualifiedName,
-                                                                  [Default=Undefined] optional DOMString value);
+    DOMString getAttributeNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
+    [RaisesException, CustomElementCallbacks] void setAttributeNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName, DOMString value);
     [CustomElementCallbacks] void removeAttributeNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
-    NodeList getElementsByTagNameNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                                    [Default=Undefined] optional DOMString localName);
+    NodeList getElementsByTagNameNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
     [MeasureAs=ElementGetAttributeNodeNS] Attr getAttributeNodeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
                                                                   [Default=Undefined] optional DOMString localName); // Removed from DOM4.
-    [RaisesException, CustomElementCallbacks] Attr setAttributeNodeNS([Default=Undefined, StrictTypeChecking] optional Attr newAttr);
+    [RaisesException, CustomElementCallbacks, MeasureAs=ElementSetAttributeNodeNS] Attr setAttributeNodeNS([Default=Undefined, StrictTypeChecking] optional Attr newAttr); // Removed from DOM4.
     boolean hasAttribute(DOMString name);
-    boolean hasAttributeNS([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI,
-                           [Default=Undefined] optional DOMString localName);
+    boolean hasAttributeNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString localName);
 
     [PerWorldBindings] readonly attribute CSSStyleDeclaration style;
 
     // DOM4
-    // iht.com relies on id returning the empty string when no id is present.
-    // Other browsers do this as well. So we don't convert null to JS null.
-    [Reflect, TreatNullAs=NullString] attribute DOMString id;
+    [Reflect] attribute DOMString id;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString namespaceURI;
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString prefix;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, RaisesException=Setter] attribute DOMString prefix;
     [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString localName;
 
     // Common extensions
@@ -91,11 +84,12 @@
     void scrollByPages([Default=Undefined] optional long pages);
 
     // HTML 5
-    NodeList getElementsByClassName([Default=Undefined] optional DOMString name);
-    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
-    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString outerHTML;
+    NodeList getElementsByClassName(DOMString classNames);
+    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, RaisesException=Setter] attribute DOMString innerHTML;
+    [TreatNullAs=NullString, CustomElementCallbacks, RaisesException=Setter] attribute DOMString outerHTML;
+    [CustomElementCallbacks, RaisesException] void insertAdjacentHTML(DOMString where, DOMString html);
 
-    [Reflect=class, TreatNullAs=NullString, PerWorldBindings] attribute DOMString className;
+    [Reflect=class, PerWorldBindings] attribute DOMString className;
     [PerWorldBindings] readonly attribute DOMTokenList classList;
 
     [PerWorldBindings] readonly attribute DOMStringMap dataset;
@@ -104,8 +98,8 @@
     [RaisesException] Element querySelector(DOMString selectors);
     [RaisesException] NodeList querySelectorAll(DOMString selectors);
 
-    // WebKit extension, pending specification.
-    [RaisesException] boolean webkitMatchesSelector([Default=Undefined] optional DOMString selectors);
+    // WebKit extension
+    [RaisesException, MeasureAs=ElementPrefixedMatchesSelector] boolean webkitMatchesSelector([Default=Undefined] optional DOMString selectors);
 
     // Shadow DOM API
     [RuntimeEnabled=ShadowDOM, Reflect, TreatNullAs=NullString, PerWorldBindings] attribute DOMString pseudo;
@@ -124,10 +118,10 @@
 
     // Mozilla version
     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
-    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=AccessForAllWorlds, MeasureAs=PrefixedElementRequestFullScreen] void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
+    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=ForAllWorlds, MeasureAs=PrefixedElementRequestFullScreen] void webkitRequestFullScreen([Default=Undefined] optional unsigned short flags);
 
     // W3C version
-    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=AccessForAllWorlds, MeasureAs=PrefixedElementRequestFullscreen] void webkitRequestFullscreen();
+    [RuntimeEnabled=Fullscreen, PerWorldBindings, ActivityLogging=ForAllWorlds, MeasureAs=PrefixedElementRequestFullscreen] void webkitRequestFullscreen();
 
     void webkitRequestPointerLock();
 
@@ -150,7 +144,7 @@
     [RuntimeEnabled=Touch] attribute EventHandler ontouchstart;
     attribute EventHandler onwebkitfullscreenchange;
     attribute EventHandler onwebkitfullscreenerror;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onwheel;
 };
 
 Element implements ParentNode;
diff --git a/core/dom/GlobalEventHandlers.idl b/core/dom/GlobalEventHandlers.idl
index 6666780..8800382 100644
--- a/core/dom/GlobalEventHandlers.idl
+++ b/core/dom/GlobalEventHandlers.idl
@@ -36,41 +36,41 @@
     attribute EventHandler oncanplay;
     attribute EventHandler oncanplaythrough;
     attribute EventHandler onchange;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onclick;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onclick;
     attribute EventHandler onclose;
     attribute EventHandler oncontextmenu;
     attribute EventHandler oncuechange;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondblclick;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondrag;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragend;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragenter;
-    //[ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragexit;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragleave;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragover;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondragstart;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler ondrop;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondblclick;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondrag;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragend;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragenter;
+    //[PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragexit;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragleave;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragover;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondragstart;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler ondrop;
     attribute EventHandler ondurationchange;
     attribute EventHandler onemptied;
     attribute EventHandler onended;
     attribute EventHandler onerror;
     attribute EventHandler onfocus;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler oninput;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler oninput;
     attribute EventHandler oninvalid;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeydown;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeypress;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onkeyup;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onkeydown;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onkeypress;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onkeyup;
     attribute EventHandler onload;
     attribute EventHandler onloadeddata;
     attribute EventHandler onloadedmetadata;
     attribute EventHandler onloadstart;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousedown;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseenter;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseleave;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousemove;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseout;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseover;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmouseup;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onmousewheel;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmousedown;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmouseenter;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmouseleave;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmousemove;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmouseout;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmouseover;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmouseup;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onmousewheel;
     attribute EventHandler onpause;
     attribute EventHandler onplay;
     attribute EventHandler onplaying;
diff --git a/core/dom/MessageChannel.idl b/core/dom/MessageChannel.idl
index f5b5165..fbd8bab 100644
--- a/core/dom/MessageChannel.idl
+++ b/core/dom/MessageChannel.idl
@@ -25,8 +25,8 @@
  */
 
 [
+    CustomConstructor,
     GlobalContext=Window&WorkerGlobalScope,
-    CustomConstructor
 ] interface MessageChannel {
     readonly attribute MessagePort port1;
     readonly attribute MessagePort port2;
diff --git a/core/dom/MutationObserver.idl b/core/dom/MutationObserver.idl
index e87fa44..d16bb4f 100644
--- a/core/dom/MutationObserver.idl
+++ b/core/dom/MutationObserver.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    CustomConstructor(MutationCallback callback)
+    CustomConstructor(MutationCallback callback),
 ] interface MutationObserver {
     [RaisesException] void observe(Node target, Dictionary options);
     sequence<MutationRecord> takeRecords();
diff --git a/core/dom/NamedNodeMap.idl b/core/dom/NamedNodeMap.idl
index 9c687b7..0f51574 100644
--- a/core/dom/NamedNodeMap.idl
+++ b/core/dom/NamedNodeMap.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    GenerateIsReachable=element
+    GenerateVisitDOMWrapper=element,
 ] interface NamedNodeMap {
 
     Node getNamedItem([Default=Undefined] optional DOMString name);
diff --git a/core/dom/Node.idl b/core/dom/Node.idl
index 3e3ec70..c67bbeb 100644
--- a/core/dom/Node.idl
+++ b/core/dom/Node.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    CustomToV8,
-    DependentLifetime
+    Custom=Wrap,
+    DependentLifetime,
 ] interface Node : EventTarget {
     // NodeType
     const unsigned short      ELEMENT_NODE                   = 1;
@@ -36,9 +36,8 @@
     const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
     const unsigned short      NOTATION_NODE                  = 12;
 
-    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString        nodeName;
+    [PerWorldBindings] readonly attribute DOMString nodeName;
 
-             // FIXME: the spec says this can also raise on retrieval.
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, CustomElementCallbacks] attribute DOMString nodeValue;
 
     [PerWorldBindings] readonly attribute unsigned short   nodeType;
@@ -50,10 +49,10 @@
     [PerWorldBindings] readonly attribute Node             nextSibling;
     [PerWorldBindings] readonly attribute Document         ownerDocument;
 
-    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node insertBefore(Node newChild, Node refChild);
-    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node replaceChild(Node newChild, Node oldChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Node insertBefore(Node newChild, Node refChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Node replaceChild(Node newChild, Node oldChild);
     [Custom, CustomElementCallbacks, PerWorldBindings, RaisesException] Node removeChild(Node oldChild);
-    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Node appendChild(Node newChild);
+    [Custom, CustomElementCallbacks, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Node appendChild(Node newChild);
 
     boolean            hasChildNodes();
     [CustomElementCallbacks, PerWorldBindings]
@@ -65,20 +64,19 @@
                                                     [TreatNullAs=NullString,Default=Undefined] optional DOMString version); // Removed in DOM4.
 
     [TreatReturnedNullStringAs=Null, PerWorldBindings, MeasureAs=NodeNamespaceURI] readonly attribute DOMString namespaceURI; // Moved to Element and Attr in DOM4.
-    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException, MeasureAs=NodePrefix] attribute DOMString prefix; // Moved to Element and Attr in DOM4.
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, RaisesException=Setter, MeasureAs=NodePrefix] attribute DOMString prefix; // Moved to Element and Attr in DOM4.
     [TreatReturnedNullStringAs=Null, PerWorldBindings, MeasureAs=NodeLocalName] readonly attribute DOMString localName; // Moved to Element and Attr in DOM4.
 
     // Introduced in DOM Level 3:
-    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString       baseURI;
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString baseURI;
 
-             // FIXME: the spec says this can also raise on retrieval.
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException, CustomElementCallbacks] attribute DOMString       textContent;
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, CustomElementCallbacks] attribute DOMString textContent;
 
     [MeasureAs=NodeIsSameNode] boolean isSameNode([Default=Undefined] optional Node other); // Removed in DOM4.
-    boolean            isEqualNode([Default=Undefined] optional Node other);
-    [TreatReturnedNullStringAs=Null] DOMString          lookupPrefix([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI);
-    boolean            isDefaultNamespace([TreatNullAs=NullString,Default=Undefined] optional DOMString namespaceURI);
-    [TreatReturnedNullStringAs=Null] DOMString          lookupNamespaceURI([TreatNullAs=NullString,Default=Undefined] optional DOMString prefix);
+    boolean isEqualNode(Node other);
+    [TreatReturnedNullStringAs=Null] DOMString lookupPrefix([TreatNullAs=NullString] DOMString namespaceURI);
+    boolean isDefaultNamespace([TreatNullAs=NullString] DOMString namespaceURI);
+    [TreatReturnedNullStringAs=Null] DOMString lookupNamespaceURI([TreatNullAs=NullString] DOMString prefix);
 
     // DocumentPosition
     const unsigned short      DOCUMENT_POSITION_DISCONNECTED = 0x01;
@@ -88,11 +86,11 @@
     const unsigned short      DOCUMENT_POSITION_CONTAINED_BY = 0x10;
     const unsigned short      DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
 
-    unsigned short     compareDocumentPosition([Default=Undefined] optional Node other);
+    unsigned short compareDocumentPosition(Node other);
 
     // Introduced in DOM4
-    [ImplementedAs=bindingsContains] boolean contains([Default=Undefined] optional Node other);
+    [ImplementedAs=bindingsContains] boolean contains(Node other);
 
     // IE extensions
-    [PerWorldBindings] readonly attribute Element          parentElement;
+    [PerWorldBindings] readonly attribute Element parentElement;
 };
diff --git a/core/dom/NodeList.idl b/core/dom/NodeList.idl
index 794ba11..19ccec6 100644
--- a/core/dom/NodeList.idl
+++ b/core/dom/NodeList.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    CustomIsReachable,
-    DependentLifetime
+    Custom=VisitDOMWrapper,
+    DependentLifetime,
 ] interface NodeList {
 
     getter Node item(unsigned long index);
diff --git a/core/dom/Promise.idl b/core/dom/Promise.idl
index 77b3976..45989d4 100644
--- a/core/dom/Promise.idl
+++ b/core/dom/Promise.idl
@@ -31,8 +31,8 @@
 callback PromiseInit = void (any resolve, any reject);
 callback AnyCallback = any (optional any value);
 [
-   GlobalContext=Window&WorkerGlobalScope,
    CustomConstructor(PromiseInit init),
+   GlobalContext=Window&WorkerGlobalScope,
 ] interface Promise {
    [Custom] Promise then(optional AnyCallback fulfillCallback, optional AnyCallback rejectCallback);
    [Custom] Promise catch(optional AnyCallback rejectCallback);
diff --git a/core/dom/Range.idl b/core/dom/Range.idl
index 42ca334..d3dd1eb 100644
--- a/core/dom/Range.idl
+++ b/core/dom/Range.idl
@@ -21,27 +21,25 @@
 // Introduced in DOM Level 2:
 [
     Constructor,
-    ConstructorCallWith=Document
+    ConstructorCallWith=Document,
 ] interface Range {
 
-    [GetterRaisesException] readonly attribute Node startContainer;
-    [GetterRaisesException] readonly attribute long startOffset;
-    [GetterRaisesException] readonly attribute Node endContainer;
-    [GetterRaisesException] readonly attribute long endOffset;
-    [GetterRaisesException] readonly attribute boolean collapsed;
-    [GetterRaisesException] readonly attribute Node commonAncestorContainer;
+    [RaisesException=Getter] readonly attribute Node startContainer;
+    [RaisesException=Getter] readonly attribute long startOffset;
+    [RaisesException=Getter] readonly attribute Node endContainer;
+    [RaisesException=Getter] readonly attribute long endOffset;
+    [RaisesException=Getter] readonly attribute boolean collapsed;
+    [RaisesException=Getter] readonly attribute Node commonAncestorContainer;
 
-     [RaisesException] void setStart([Default=Undefined] optional Node refNode,
-                                 [Default=Undefined] optional long offset);
-     [RaisesException] void setEnd([Default=Undefined] optional Node refNode,
-                               [Default=Undefined] optional long offset);
-    [RaisesException] void setStartBefore([Default=Undefined] optional Node refNode);
-    [RaisesException] void setStartAfter([Default=Undefined] optional Node refNode);
-    [RaisesException] void setEndBefore([Default=Undefined] optional Node refNode);
-    [RaisesException] void setEndAfter([Default=Undefined] optional Node refNode);
+    [RaisesException] void setStart(Node refNode, long offset);
+    [RaisesException] void setEnd(Node refNode, long offset);
+    [RaisesException] void setStartBefore(Node refNode);
+    [RaisesException] void setStartAfter(Node refNode);
+    [RaisesException] void setEndBefore(Node refNode);
+    [RaisesException] void setEndAfter(Node refNode);
     [RaisesException] void collapse([Default=Undefined] optional boolean toStart);
-    [RaisesException] void selectNode([Default=Undefined] optional Node refNode);
-    [RaisesException] void selectNodeContents([Default=Undefined] optional Node refNode);
+    [RaisesException] void selectNode(Node refNode);
+    [RaisesException] void selectNodeContents(Node refNode);
 
     // CompareHow
     const unsigned short START_TO_START = 0;
@@ -49,46 +47,41 @@
     const unsigned short END_TO_END     = 2;
     const unsigned short END_TO_START   = 3;
 
-     [RaisesException] short compareBoundaryPoints([Default=Undefined] optional CompareHow how,
-                                               [Default=Undefined] optional Range sourceRange);
+    [RaisesException] short compareBoundaryPoints(CompareHow how, Range sourceRange);
 
     [RaisesException, CustomElementCallbacks] void deleteContents();
     [RaisesException, CustomElementCallbacks] DocumentFragment extractContents();
     [RaisesException, CustomElementCallbacks] DocumentFragment cloneContents();
-    [RaisesException, CustomElementCallbacks] void insertNode([Default=Undefined] optional Node newNode);
-    [RaisesException, CustomElementCallbacks] void surroundContents([Default=Undefined] optional Node newParent);
+    [RaisesException, CustomElementCallbacks] void insertNode(Node newNode);
+    [RaisesException, CustomElementCallbacks] void surroundContents(Node newParent);
     [RaisesException] Range cloneRange();
     [RaisesException] DOMString toString();
 
     [RaisesException] void detach();
 
+    [RaisesException] boolean isPointInRange(Node refNode, long offset);
+    [RaisesException] short comparePoint(Node refNode, long offset);
+
+    [RaisesException] boolean intersectsNode(Node refNode);
+
     // CSSOM View Module API extensions
 
     ClientRectList getClientRects();
     ClientRect getBoundingClientRect();
 
-    // extensions
+    // DOM Parsing and Serialization
 
-    [RaisesException, CustomElementCallbacks] DocumentFragment createContextualFragment([Default=Undefined] optional DOMString html);
+    [RaisesException, CustomElementCallbacks] DocumentFragment createContextualFragment(DOMString html);
 
     // WebKit extensions
 
-    [RaisesException] boolean intersectsNode([Default=Undefined] optional Node refNode);
-
-    [RaisesException] short compareNode([Default=Undefined] optional Node refNode);
-
     // CompareResults
     const unsigned short NODE_BEFORE           = 0;
     const unsigned short NODE_AFTER            = 1;
     const unsigned short NODE_BEFORE_AND_AFTER = 2;
     const unsigned short NODE_INSIDE           = 3;
 
-    [RaisesException] short comparePoint([Default=Undefined] optional Node refNode,
-                       [Default=Undefined] optional long offset);
-
-    [RaisesException] boolean isPointInRange([Default=Undefined] optional Node refNode,
-                           [Default=Undefined] optional long offset);
+    [RaisesException] short compareNode([Default=Undefined] optional Node refNode);
 
     [RaisesException] void expand([Default=Undefined] optional DOMString unit);
 };
-
diff --git a/core/dom/RequestAnimationFrameCallback.idl b/core/dom/RequestAnimationFrameCallback.idl
index d2f1d22..cb0ec66 100644
--- a/core/dom/RequestAnimationFrameCallback.idl
+++ b/core/dom/RequestAnimationFrameCallback.idl
@@ -31,5 +31,5 @@
 callback interface RequestAnimationFrameCallback{
     // highResTime is passed as high resolution timestamp, see
     // http://www.w3.org/TR/hr-time/ for details.
-    boolean handleEvent(double highResTime);
+    void handleEvent(double highResTime);
 };
diff --git a/core/dom/StringCallback.idl b/core/dom/StringCallback.idl
index 9ab79c1..b26a090 100644
--- a/core/dom/StringCallback.idl
+++ b/core/dom/StringCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface StringCallback {
-    boolean handleEvent(DOMString data);
+    void handleEvent(DOMString data);
 };
diff --git a/core/dom/Text.idl b/core/dom/Text.idl
index 0ee791b..57e6dc0 100644
--- a/core/dom/Text.idl
+++ b/core/dom/Text.idl
@@ -19,7 +19,7 @@
 [
     Constructor([Default=NullString] optional DOMString data),
     ConstructorCallWith=Document,
-    CustomToV8
+    Custom=Wrap,
 ] interface Text : CharacterData {
 
     // DOM Level 1
diff --git a/core/dom/TreeWalker.idl b/core/dom/TreeWalker.idl
index ac04ba0..6a92eb0 100644
--- a/core/dom/TreeWalker.idl
+++ b/core/dom/TreeWalker.idl
@@ -26,7 +26,7 @@
     readonly attribute unsigned long whatToShow;
     readonly attribute NodeFilter filter;
     readonly attribute boolean expandEntityReferences;
-             [SetterRaisesException] attribute Node currentNode;
+             [RaisesException=Setter] attribute Node currentNode;
 
     [CallWith=ScriptState] Node parentNode();
     [CallWith=ScriptState] Node firstChild();
diff --git a/core/dom/URL.idl b/core/dom/URL.idl
index 37e2a90..30c96c6 100644
--- a/core/dom/URL.idl
+++ b/core/dom/URL.idl
@@ -26,7 +26,7 @@
 
 [
     GlobalContext=Window&WorkerGlobalScope,
-    ConstructorRaisesException,
+    RaisesException=Constructor,
     Constructor(DOMString url),
     Constructor(DOMString url, URL base),
     Constructor(DOMString url, DOMString base),
@@ -36,5 +36,5 @@
     [CallWith=ExecutionContext] static void revokeObjectURL(DOMString url);
 };
 
-// Force rebuild: crbug.com/307023
+// force rebuild: crbug.com/307023
 URL implements URLUtils;
diff --git a/core/dom/URLUtils.idl b/core/dom/URLUtils.idl
index b4c3e67..9cb7b48 100644
--- a/core/dom/URLUtils.idl
+++ b/core/dom/URLUtils.idl
@@ -27,9 +27,7 @@
     NoInterfaceObject,
     ImplementedAs=DOMURLUtils
 ] interface URLUtils {
-    // Special case null for backwards compat with HTMLAnchorElement href.
-    // https://code.google.com/p/chromium/issues/detail?id=304959
-    [TreatNullAs=NullString] attribute DOMString href;
+    attribute DOMString href;
 
     [NotEnumerable, ImplementedAs=href] DOMString toString();
 
diff --git a/core/dom/WebKitNamedFlow.idl b/core/dom/WebKitNamedFlow.idl
index f1185b4..800e26d 100644
--- a/core/dom/WebKitNamedFlow.idl
+++ b/core/dom/WebKitNamedFlow.idl
@@ -28,10 +28,10 @@
  */
 
 [
+    GenerateVisitDOMWrapper=ownerNode,
+    ImplementedAs=NamedFlow,
     NoInterfaceObject,
     RuntimeEnabled=CSSRegions,
-    ImplementedAs=NamedFlow,
-    GenerateIsReachable=ownerNode
 ] interface WebKitNamedFlow : EventTarget {
     readonly attribute DOMString name;
     readonly attribute boolean overset;
diff --git a/core/dom/shadow/ShadowRoot.idl b/core/dom/shadow/ShadowRoot.idl
index fd06913..c84d177 100644
--- a/core/dom/shadow/ShadowRoot.idl
+++ b/core/dom/shadow/ShadowRoot.idl
@@ -32,7 +32,7 @@
     attribute boolean resetStyleInheritance;
     [RuntimeEnabled=ShadowDOM, ImplementedAs=bindingsOlderShadowRoot] readonly attribute ShadowRoot olderShadowRoot;
 
-    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, SetterRaisesException] attribute DOMString innerHTML;
+    [TreatNullAs=NullString, CustomElementCallbacks, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, RaisesException=Setter] attribute DOMString innerHTML;
 
     [RaisesException] Node cloneNode([Default=Undefined] optional boolean deep);
     Selection getSelection();
diff --git a/core/events/AutocompleteErrorEvent.idl b/core/events/AutocompleteErrorEvent.idl
index 5f9b700..865d62e 100644
--- a/core/events/AutocompleteErrorEvent.idl
+++ b/core/events/AutocompleteErrorEvent.idl
@@ -23,7 +23,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface AutocompleteErrorEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString reason;
 };
diff --git a/core/events/BeforeLoadEvent.idl b/core/events/BeforeLoadEvent.idl
index 428a513..6f8eca6 100644
--- a/core/events/BeforeLoadEvent.idl
+++ b/core/events/BeforeLoadEvent.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface BeforeLoadEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString url;
 };
diff --git a/core/events/CompositionEvent.idl b/core/events/CompositionEvent.idl
index c54d50f..4e14a95 100644
--- a/core/events/CompositionEvent.idl
+++ b/core/events/CompositionEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface CompositionEvent : UIEvent {
 
     [InitializedByEventConstructor] readonly attribute DOMString data;
diff --git a/core/events/CustomEvent.idl b/core/events/CustomEvent.idl
index 0afe8fe..4ad348b 100644
--- a/core/events/CustomEvent.idl
+++ b/core/events/CustomEvent.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface CustomEvent : Event {
-    [CustomGetter, InitializedByEventConstructor] readonly attribute any detail;
+    [Custom=Getter, InitializedByEventConstructor] readonly attribute any detail;
 
     [Custom] void initCustomEvent([Default=Undefined] optional DOMString typeArg,
                                   [Default=Undefined] optional boolean canBubbleArg,
diff --git a/core/events/ErrorEvent.idl b/core/events/ErrorEvent.idl
index 1a5d21a..ad12285 100644
--- a/core/events/ErrorEvent.idl
+++ b/core/events/ErrorEvent.idl
@@ -29,12 +29,12 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface ErrorEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString message;
     [InitializedByEventConstructor] readonly attribute DOMString filename;
     [InitializedByEventConstructor] readonly attribute unsigned long lineno;
     [InitializedByEventConstructor] readonly attribute unsigned long colno;
-    [CustomGetter, InitializedByEventConstructor, Unserializable] readonly attribute any error;
+    [Custom=Getter, InitializedByEventConstructor] readonly attribute any error;
 };
 
diff --git a/core/events/Event.idl b/core/events/Event.idl
index 49b4914..3f8e80b 100644
--- a/core/events/Event.idl
+++ b/core/events/Event.idl
@@ -20,9 +20,8 @@
 
 // Introduced in DOM Level 2:
 [
-    CustomToV8,
-    ConstructorTemplate=Event
-
+    Custom=Wrap,
+    EventConstructor,
 ] interface Event {
 
     // DOM PhaseType
@@ -74,5 +73,5 @@
 
     [RuntimeEnabled=ShadowDOM] readonly attribute NodeList path;
 
-    [CustomGetter] readonly attribute Clipboard clipboardData;
+    [Custom=Getter] readonly attribute Clipboard clipboardData;
 };
diff --git a/core/events/EventTarget.idl b/core/events/EventTarget.idl
index 7c87036..0cd1b17 100644
--- a/core/events/EventTarget.idl
+++ b/core/events/EventTarget.idl
@@ -19,8 +19,7 @@
  */
 
 [
-    CustomToV8,
-    DoNotGenerateWrap
+    Custom=ToV8,
 ] interface EventTarget {
     void addEventListener(DOMString type,
                           EventListener listener,
diff --git a/core/events/FocusEvent.idl b/core/events/FocusEvent.idl
index 659e576..0a189d3 100644
--- a/core/events/FocusEvent.idl
+++ b/core/events/FocusEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface FocusEvent : UIEvent {
-    [InitializedByEventConstructor] readonly attribute EventTarget relatedTarget;
+    [InitializedByEventConstructor] readonly attribute EventTarget? relatedTarget;
 };
diff --git a/core/events/HashChangeEvent.idl b/core/events/HashChangeEvent.idl
index 13c83b4..e5101b8 100644
--- a/core/events/HashChangeEvent.idl
+++ b/core/events/HashChangeEvent.idl
@@ -19,7 +19,7 @@
 
 // Introduced in http://www.whatwg.org/specs/web-apps/current-work/multiframe/History.html#event-hashchange
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface HashChangeEvent : Event {
     void initHashChangeEvent([Default=Undefined] optional DOMString type,
                              [Default=Undefined] optional boolean canBubble,
diff --git a/core/events/KeyboardEvent.idl b/core/events/KeyboardEvent.idl
index 4d980ae..9a16319 100644
--- a/core/events/KeyboardEvent.idl
+++ b/core/events/KeyboardEvent.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface KeyboardEvent : UIEvent {
     const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00;
     const unsigned long DOM_KEY_LOCATION_LEFT     = 0x01;
diff --git a/core/events/MessageEvent.idl b/core/events/MessageEvent.idl
index 33d1c33..c482b08 100644
--- a/core/events/MessageEvent.idl
+++ b/core/events/MessageEvent.idl
@@ -26,15 +26,15 @@
  */
 
 [
+    EventConstructor,
     GlobalContext=Window&WorkerGlobalScope,
-    ConstructorTemplate=Event
+    RaisesException=Constructor,
 ] interface MessageEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString origin;
     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
-    [InitializedByEventConstructor] readonly attribute EventTarget source; // May be a Window or a MessagePort
-    [InitializedByEventConstructor, CustomGetter] readonly attribute any data;
+    [InitializedByEventConstructor] readonly attribute EventTarget? source; // May be a Window or a MessagePort
+    [InitializedByEventConstructor, Custom=Getter] readonly attribute any data;
     [InitializedByEventConstructor] readonly attribute MessagePort[] ports;
-
     [Custom] void initMessageEvent([Default=Undefined] optional DOMString typeArg,
                                    [Default=Undefined] optional boolean canBubbleArg,
                                    [Default=Undefined] optional boolean cancelableArg,
diff --git a/core/events/MouseEvent.idl b/core/events/MouseEvent.idl
index 92c3bfb..7dd8284 100644
--- a/core/events/MouseEvent.idl
+++ b/core/events/MouseEvent.idl
@@ -18,7 +18,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface MouseEvent : UIEvent {
     [InitializedByEventConstructor] readonly attribute long             screenX;
     [InitializedByEventConstructor] readonly attribute long             screenY;
@@ -29,7 +29,7 @@
     [InitializedByEventConstructor] readonly attribute boolean          altKey;
     [InitializedByEventConstructor] readonly attribute boolean          metaKey;
     [InitializedByEventConstructor] readonly attribute unsigned short   button;
-    [InitializedByEventConstructor] readonly attribute EventTarget      relatedTarget;
+    [InitializedByEventConstructor] readonly attribute EventTarget?     relatedTarget;
                                     readonly attribute long             webkitMovementX;
                                     readonly attribute long             webkitMovementY;
 
diff --git a/core/events/OverflowEvent.idl b/core/events/OverflowEvent.idl
index 69adee9..be779e4 100644
--- a/core/events/OverflowEvent.idl
+++ b/core/events/OverflowEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface OverflowEvent : Event {
     const unsigned short HORIZONTAL = 0;
     const unsigned short VERTICAL   = 1;
diff --git a/core/events/PageTransitionEvent.idl b/core/events/PageTransitionEvent.idl
index 47749be..679d51e 100644
--- a/core/events/PageTransitionEvent.idl
+++ b/core/events/PageTransitionEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface PageTransitionEvent : Event {
     [InitializedByEventConstructor] readonly attribute boolean persisted;
 };
diff --git a/core/events/PopStateEvent.idl b/core/events/PopStateEvent.idl
index 20ddbaa..a1ccf16 100644
--- a/core/events/PopStateEvent.idl
+++ b/core/events/PopStateEvent.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface PopStateEvent : Event {
-    [InitializedByEventConstructor, CustomGetter] readonly attribute any state;
+    [InitializedByEventConstructor, Custom=Getter] readonly attribute any state;
 };
diff --git a/core/events/ProgressEvent.idl b/core/events/ProgressEvent.idl
index d775b88..8e49d70 100644
--- a/core/events/ProgressEvent.idl
+++ b/core/events/ProgressEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface ProgressEvent : Event {
     [InitializedByEventConstructor] readonly attribute boolean lengthComputable;
     [InitializedByEventConstructor] readonly attribute unsigned long long loaded;
diff --git a/core/events/SecurityPolicyViolationEvent.idl b/core/events/SecurityPolicyViolationEvent.idl
index a5de4dc..5ac10f2 100644
--- a/core/events/SecurityPolicyViolationEvent.idl
+++ b/core/events/SecurityPolicyViolationEvent.idl
@@ -23,8 +23,8 @@
  */
 
 [
+    EventConstructor,
     RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures,
-    ConstructorTemplate=Event
 ] interface SecurityPolicyViolationEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString documentURI;
     [InitializedByEventConstructor] readonly attribute DOMString referrer;
diff --git a/core/events/TransitionEvent.idl b/core/events/TransitionEvent.idl
index b2bd8ed..94ee353 100644
--- a/core/events/TransitionEvent.idl
+++ b/core/events/TransitionEvent.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface TransitionEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString propertyName;
     [InitializedByEventConstructor] readonly attribute double elapsedTime;
diff --git a/core/events/UIEvent.idl b/core/events/UIEvent.idl
index bfa6da9..df8ec34 100644
--- a/core/events/UIEvent.idl
+++ b/core/events/UIEvent.idl
@@ -18,9 +18,9 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface UIEvent : Event {
-    [InitializedByEventConstructor] readonly attribute Window view;
+    [InitializedByEventConstructor] readonly attribute Window? view;
     [InitializedByEventConstructor] readonly attribute long detail;
 
      void initUIEvent([Default=Undefined] optional DOMString type,
diff --git a/core/events/WebKitAnimationEvent.idl b/core/events/WebKitAnimationEvent.idl
index a168306..44f3266 100644
--- a/core/events/WebKitAnimationEvent.idl
+++ b/core/events/WebKitAnimationEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface WebKitAnimationEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString animationName;
     [InitializedByEventConstructor] readonly attribute double elapsedTime;
diff --git a/core/events/WheelEvent.idl b/core/events/WheelEvent.idl
index 8ee63ae..1cba713 100644
--- a/core/events/WheelEvent.idl
+++ b/core/events/WheelEvent.idl
@@ -21,7 +21,7 @@
 
 // Introduced in DOM Level 3:
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface WheelEvent : MouseEvent {
     // DeltaModeCode
     const unsigned long              DOM_DELTA_PIXEL = 0x00;
diff --git a/core/fileapi/Blob.idl b/core/fileapi/Blob.idl
index 814a2fc..28fd1aa 100644
--- a/core/fileapi/Blob.idl
+++ b/core/fileapi/Blob.idl
@@ -29,10 +29,10 @@
  */
 
 [
+    CustomConstructor,
+    CustomConstructor(sequence<any> blobParts, optional BlobPropertyBag options),
     GlobalContext=Window&WorkerGlobalScope,
     SpecialWrapFor=File,
-    CustomConstructor,
-    CustomConstructor(sequence<any> blobParts, optional BlobPropertyBag options)
 ] interface Blob {
     readonly attribute unsigned long long size;
     readonly attribute DOMString type;
diff --git a/core/fileapi/File.idl b/core/fileapi/File.idl
index 56be7fc..2daf799 100644
--- a/core/fileapi/File.idl
+++ b/core/fileapi/File.idl
@@ -23,9 +23,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface File : Blob {
+[
+    CustomConstructor(sequence<any> blobParts, DOMString fileName, optional BlobPropertyBag options),
+    GlobalContext=Window&WorkerGlobalScope,
+] interface File : Blob {
     readonly attribute DOMString name;
-    readonly attribute Date lastModifiedDate;
+    [Custom=Getter, MeasureAs=FileGetLastModifiedDate] readonly attribute Date lastModifiedDate;
+    [Custom=Getter, RuntimeEnabled=FileConstructor] readonly attribute long long lastModified;
     [RuntimeEnabled=DirectoryUpload] readonly attribute DOMString webkitRelativePath;
 };
-
diff --git a/core/fileapi/FileReader.idl b/core/fileapi/FileReader.idl
index eb26da7..6faafff 100644
--- a/core/fileapi/FileReader.idl
+++ b/core/fileapi/FileReader.idl
@@ -30,10 +30,10 @@
  */
 
 [
-    GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    GlobalContext=Window&WorkerGlobalScope,
 ] interface FileReader : EventTarget {
     // ready states
     const unsigned short EMPTY = 0;
@@ -50,7 +50,7 @@
     void abort();
 
     // file data
-    [CustomGetter] readonly attribute any result;
+    [Custom=Getter] readonly attribute object result;
 
     readonly attribute FileError error;
 
diff --git a/core/frame/ConsoleBase.idl b/core/frame/ConsoleBase.idl
index 542610f..b63a7f5 100644
--- a/core/frame/ConsoleBase.idl
+++ b/core/frame/ConsoleBase.idl
@@ -28,9 +28,7 @@
  */
 
 [
-    CustomToV8,
-    DoNotGenerateWrap,
-    NoInterfaceObject
+    NoInterfaceObject,
 ] interface ConsoleBase {
     [CallWith=ScriptArguments&ScriptState] void debug();
     [CallWith=ScriptArguments&ScriptState] void error();
diff --git a/core/frame/History.idl b/core/frame/History.idl
index 2b8cce4..6bd6439 100644
--- a/core/frame/History.idl
+++ b/core/frame/History.idl
@@ -25,7 +25,7 @@
 
 interface History {
     readonly attribute unsigned long length;
-    [CustomGetter] readonly attribute SerializedScriptValue state;
+    [Custom=Getter] readonly attribute SerializedScriptValue state;
 
     [CallWith=ExecutionContext] void back();
     [CallWith=ExecutionContext] void forward();
diff --git a/core/frame/ImageBitmap.idl b/core/frame/ImageBitmap.idl
index b7eec85..903a2d7 100644
--- a/core/frame/ImageBitmap.idl
+++ b/core/frame/ImageBitmap.idl
@@ -6,4 +6,4 @@
 ] interface ImageBitmap {
     readonly attribute long width;
     readonly attribute long height;
-};
\ No newline at end of file
+};
diff --git a/core/frame/Location.idl b/core/frame/Location.idl
index 1d1c893..5ce2990 100644
--- a/core/frame/Location.idl
+++ b/core/frame/Location.idl
@@ -27,16 +27,21 @@
  */
 
 [
-    CheckSecurity
+    CheckSecurity=Frame,
 ] interface Location {
-    [SetterCallWith=ActiveWindow&FirstWindow, DoNotCheckSecurityOnSetter, Unforgeable] attribute DOMString href;
+    // |assign|, |replace|, and *writing* |href| do not require a security
+    // check, as they *change* the page, and thus these do not change any
+    // property of an *existing* document at a different origin.
+    // However, *reading* |href|, or accessing any component, is a security
+    // problem, since that allows tracking navigation.
+    [SetterCallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity=Setter, Unforgeable] attribute DOMString href;
 
-    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void assign([Default=Undefined] optional DOMString url);
-    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void replace([Default=Undefined] optional DOMString url);
+    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void assign(DOMString url);
+    [CallWith=ActiveWindow&FirstWindow, DoNotCheckSecurity, Unforgeable, ReadOnly, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void replace(DOMString url);
     [CallWith=ActiveWindow, Unforgeable, ReadOnly] void reload();
 
     // URI decomposition attributes
-    [SetterCallWith=ActiveWindow&FirstWindow, SetterRaisesException] attribute DOMString protocol;
+    [SetterCallWith=ActiveWindow&FirstWindow, RaisesException=Setter] attribute DOMString protocol;
     [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString host;
     [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString hostname;
     [SetterCallWith=ActiveWindow&FirstWindow] attribute DOMString port;
diff --git a/core/frame/WebKitPoint.idl b/core/frame/WebKitPoint.idl
index 4e3637a..88b4be2 100644
--- a/core/frame/WebKitPoint.idl
+++ b/core/frame/WebKitPoint.idl
@@ -26,7 +26,7 @@
 [
     CustomConstructor,
     CustomConstructor(float x, float y),
-    ImplementedAs=DOMPoint
+    ImplementedAs=DOMPoint,
 ] interface WebKitPoint {
     attribute float x;
     attribute float y;
diff --git a/core/frame/Window.idl b/core/frame/Window.idl
index 86dd8e0..632e3a2 100644
--- a/core/frame/Window.idl
+++ b/core/frame/Window.idl
@@ -26,11 +26,11 @@
 
 // HTML 5 draft spec:
 // http://www.w3.org/html/wg/drafts/html/master/browsers.html#window
+// FIXME: explain all uses of [DoNotCheckSecurity]
 [
-    CheckSecurity,
-    CustomToV8,
-    DoNotGenerateWrap,
-    ImplementedAs=DOMWindow
+    CheckSecurity=Frame,
+    Custom=ToV8,
+    ImplementedAs=DOMWindow,
 ] interface Window : EventTarget {
     // DOM Level 0
     [Replaceable] readonly attribute Screen screen;
@@ -43,12 +43,12 @@
     [Replaceable] readonly attribute BarProp toolbar;
     [Replaceable, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] readonly attribute Navigator navigator;
     [Replaceable] readonly attribute Navigator clientInformation;
-    [DoNotCheckSecurity, Unforgeable, Replaceable, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
+    [DoNotCheckSecurity, Unforgeable, Replaceable, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, PutForwards=href] readonly attribute Location location;
     [Custom, MeasureAs=WindowEvent, NotEnumerable] attribute Event event;
 
     Selection getSelection();
 
-    [CheckSecurityForNode] readonly attribute Element frameElement;
+    [CheckSecurity=Node, Custom=Getter] readonly attribute Element frameElement;
 
     [DoNotCheckSecurity, CallWith=ExecutionContext] void focus();
     [DoNotCheckSecurity] void blur();
@@ -93,9 +93,9 @@
     readonly attribute long pageXOffset;
     readonly attribute long pageYOffset;
 
-    void scrollBy([Default=Undefined] optional long x, [Default=Undefined] optional long y);
-    void scrollTo([Default=Undefined] optional long x, [Default=Undefined] optional long y);
-    void scroll([Default=Undefined] optional long x, [Default=Undefined] optional long y);
+    void scrollBy(long x, long y);
+    void scrollTo(long x, long y);
+    void scroll(long x, long y);
     void moveBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
     void moveTo([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
     void resizeBy([Default=Undefined] optional float x, [Default=Undefined] optional float y); // FIXME: this should take longs not floats.
@@ -103,23 +103,23 @@
 
     [DoNotCheckSecurity] readonly attribute boolean closed;
 
-    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;
+    [Replaceable, DoNotCheckSecurity] readonly attribute unsigned long length;
 
     attribute DOMString name;
 
     attribute DOMString status;
     attribute DOMString defaultStatus;
     // This attribute is an alias of defaultStatus and is necessary for legacy uses.
-    attribute DOMString defaultstatus;
+    [ImplementedAs=defaultStatus] attribute DOMString defaultstatus;
 
     // Self referential attributes
-    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window self;
+    [Replaceable, DoNotCheckSecurity] readonly attribute Window self;
     [DoNotCheckSecurity, Unforgeable] readonly attribute Window window;
-    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute  Window frames;
+    [Replaceable, DoNotCheckSecurity] readonly attribute  Window frames;
 
-    [DoNotCheckSecurityOnGetter, CustomSetter] attribute Window opener;
-    [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute Window parent;
-    [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute Window top;
+    [DoNotCheckSecurity, Custom=Setter] attribute Window opener;
+    [Replaceable, DoNotCheckSecurity] readonly attribute Window parent;
+    [DoNotCheckSecurity, Unforgeable] readonly attribute Window top;
 
     // DOM Level 2 AbstractView Interface
     readonly attribute Document document;
@@ -147,8 +147,8 @@
 
     [RuntimeEnabled=ApplicationCache, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds] readonly attribute ApplicationCache applicationCache;
 
-    [RuntimeEnabled=SessionStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage sessionStorage;
-    [RuntimeEnabled=LocalStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, GetterRaisesException] readonly attribute Storage localStorage;
+    [RuntimeEnabled=SessionStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, RaisesException=Getter] readonly attribute Storage sessionStorage;
+    [RuntimeEnabled=LocalStorage, PerWorldBindings, ActivityLogging=GetterForIsolatedWorlds, RaisesException=Getter] readonly attribute Storage localStorage;
 
     // This is the interface orientation in degrees. Some examples are:
     //  0 is straight up; -90 is when the device is rotated 90 clockwise;
@@ -187,7 +187,7 @@
     attribute EventHandler onwebkitanimationiteration;
     attribute EventHandler onwebkitanimationstart;
     attribute EventHandler onwebkittransitionend;
-    [ActivityLogging=SetterForAllWorlds] attribute EventHandler onwheel;
+    [PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute EventHandler onwheel;
 
     [DeprecateAs=CaptureEvents] void captureEvents();
     [DeprecateAs=ReleaseEvents] void releaseEvents();
diff --git a/core/frame/WindowBase64.idl b/core/frame/WindowBase64.idl
index e27a93b..134018d 100644
--- a/core/frame/WindowBase64.idl
+++ b/core/frame/WindowBase64.idl
@@ -26,8 +26,8 @@
  */
 
 [
+    ImplementedAs=DOMWindowBase64,
     NoInterfaceObject,
-    ImplementedAs=DOMWindowBase64
 ] interface WindowBase64 {
     [RaisesException] DOMString atob(DOMString string);
     [RaisesException] DOMString btoa(DOMString string);
diff --git a/core/html/FormData.idl b/core/html/FormData.idl
index 0391d3a..73dcbfb 100644
--- a/core/html/FormData.idl
+++ b/core/html/FormData.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    CustomConstructor(optional HTMLFormElement form),
+    Constructor([Default=Undefined] optional HTMLFormElement form),
     ImplementedAs=DOMFormData
 ] interface FormData {
     // void append(DOMString name, DOMString value);
diff --git a/core/html/HTMLAllCollection.idl b/core/html/HTMLAllCollection.idl
index 9f87dd4..3508f8b 100644
--- a/core/html/HTMLAllCollection.idl
+++ b/core/html/HTMLAllCollection.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    CustomLegacyCall,
-    MasqueradesAsUndefined,
-    GenerateIsReachable=ownerNode,
-    DependentLifetime
+    Custom=LegacyCallAsFunction,
+    DependentLifetime,
+    GenerateVisitDOMWrapper=ownerNode,
 ] interface HTMLAllCollection {
     readonly attribute unsigned long length;
     [ImplementedAs=item] getter Node (unsigned long index);
diff --git a/core/html/HTMLAnchorElement.idl b/core/html/HTMLAnchorElement.idl
index 88cf2d4..525c307 100644
--- a/core/html/HTMLAnchorElement.idl
+++ b/core/html/HTMLAnchorElement.idl
@@ -19,20 +19,20 @@
  */
 
 interface HTMLAnchorElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
-    [Reflect, TreatNullAs=NullString] attribute DOMString coords;
-    [Reflect, TreatNullAs=NullString] attribute DOMString download;
-    [Reflect, TreatNullAs=NullString] attribute DOMString hreflang;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString ping;
-    [Reflect, TreatNullAs=NullString] attribute DOMString rel;
-    [Reflect, TreatNullAs=NullString] attribute DOMString rev;
-    [Reflect, TreatNullAs=NullString] attribute DOMString shape;
-    [Reflect, TreatNullAs=NullString] attribute DOMString target;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString charset;
+    [Reflect] attribute DOMString coords;
+    [Reflect] attribute DOMString download;
+    [Reflect] attribute DOMString hreflang;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString ping;
+    [Reflect] attribute DOMString rel;
+    [Reflect] attribute DOMString rev;
+    [Reflect] attribute DOMString shape;
+    [Reflect] attribute DOMString target;
+    [Reflect] attribute DOMString type;
 
     readonly attribute DOMString text;
 };
 
-// Force rebuild: crbug.com/307023
+// force rebuild: crbug.com/307023
 HTMLAnchorElement implements URLUtils;
diff --git a/core/html/HTMLAppletElement.idl b/core/html/HTMLAppletElement.idl
index 655cd07..283e205 100644
--- a/core/html/HTMLAppletElement.idl
+++ b/core/html/HTMLAppletElement.idl
@@ -19,22 +19,21 @@
  */
 
 [
-    CustomLegacyCall
+    Custom=LegacyCallAsFunction,
 ] interface HTMLAppletElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
-    [Reflect, TreatNullAs=NullString] attribute DOMString archive;
-    [Reflect, TreatNullAs=NullString] attribute DOMString code;
-    [Reflect, TreatNullAs=NullString] attribute DOMString codeBase;
-    [Reflect, TreatNullAs=NullString] attribute DOMString height;
-    [Reflect, TreatNullAs=NullString] attribute DOMString hspace;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString _object;  // "object" is a reserved word
-    [Reflect, TreatNullAs=NullString] attribute DOMString vspace;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString alt;
+    [Reflect] attribute DOMString archive;
+    [Reflect] attribute DOMString code;
+    [Reflect, URL] attribute DOMString codeBase;
+    [Reflect] attribute DOMString height;
+    [Reflect] attribute unsigned long hspace;
+    [Reflect] attribute DOMString name;
+    [Reflect, URL] attribute DOMString _object;  // "object" is a reserved word
+    [Reflect] attribute unsigned long vspace;
+    [Reflect] attribute DOMString width;
     [Custom, NotEnumerable] getter boolean (unsigned long index);
     [Custom] setter boolean (unsigned long index, Node value);
     [Custom, NotEnumerable] getter Node (DOMString name);
     [Custom] setter Node (DOMString name, Node value);
 };
-
diff --git a/core/html/HTMLAreaElement.idl b/core/html/HTMLAreaElement.idl
index 1175ec1..1ad7233 100644
--- a/core/html/HTMLAreaElement.idl
+++ b/core/html/HTMLAreaElement.idl
@@ -19,13 +19,13 @@
  */
 
 interface HTMLAreaElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
-    [Reflect, TreatNullAs=NullString] attribute DOMString coords;
+    [Reflect] attribute DOMString alt;
+    [Reflect] attribute DOMString coords;
     [Reflect] attribute boolean noHref;
-    [Reflect, TreatNullAs=NullString] attribute DOMString ping;
-    [Reflect, TreatNullAs=NullString] attribute DOMString shape;
-    [Reflect, TreatNullAs=NullString] attribute DOMString target;
+    [Reflect] attribute DOMString ping;
+    [Reflect] attribute DOMString shape;
+    [Reflect] attribute DOMString target;
 };
 
-// Force rebuild: crbug.com/307023
+// force rebuild: crbug.com/307023
 HTMLAreaElement implements URLUtils;
diff --git a/core/html/HTMLBRElement.idl b/core/html/HTMLBRElement.idl
index 7c31dfb..c909dc1 100644
--- a/core/html/HTMLBRElement.idl
+++ b/core/html/HTMLBRElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLBRElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString clear;
+    [Reflect] attribute DOMString clear;
 };
 
diff --git a/core/html/HTMLBaseElement.idl b/core/html/HTMLBaseElement.idl
index 408e129..87e614f 100644
--- a/core/html/HTMLBaseElement.idl
+++ b/core/html/HTMLBaseElement.idl
@@ -18,6 +18,6 @@
  */
 
 interface HTMLBaseElement : HTMLElement {
-    [TreatNullAs=NullString] attribute DOMString href;
-    [Reflect, TreatNullAs=NullString] attribute DOMString target;
+    attribute DOMString href;
+    [Reflect] attribute DOMString target;
 };
diff --git a/core/html/HTMLBaseFontElement.idl b/core/html/HTMLBaseFontElement.idl
deleted file mode 100644
index a4910e8..0000000
--- a/core/html/HTMLBaseFontElement.idl
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright (C) 2006, 2009, 2010 Apple Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-interface HTMLBaseFontElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString color;
-    [Reflect, TreatNullAs=NullString] attribute DOMString face;
-    [Reflect] attribute long size;
-};
diff --git a/core/html/HTMLBodyElement.idl b/core/html/HTMLBodyElement.idl
index 3ce7850..139b34a 100644
--- a/core/html/HTMLBodyElement.idl
+++ b/core/html/HTMLBodyElement.idl
@@ -20,7 +20,7 @@
 
 interface HTMLBodyElement : HTMLElement {
     [Reflect, TreatNullAs=NullString] attribute DOMString aLink;
-    [Reflect, TreatNullAs=NullString] attribute DOMString background;
+    [Reflect] attribute DOMString background;
     [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
     [Reflect, TreatNullAs=NullString] attribute DOMString link;
     [Reflect, TreatNullAs=NullString] attribute DOMString text;
diff --git a/core/html/HTMLButtonElement.idl b/core/html/HTMLButtonElement.idl
index 0fef161..aa40232 100644
--- a/core/html/HTMLButtonElement.idl
+++ b/core/html/HTMLButtonElement.idl
@@ -21,15 +21,15 @@
 interface HTMLButtonElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
-    [TreatNullAs=NullString] attribute DOMString formEnctype;
-    [TreatNullAs=NullString] attribute DOMString formMethod;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
+    attribute DOMString formEnctype;
+    attribute DOMString formMethod;
     [Reflect] attribute boolean formNoValidate;
-    [Reflect, TreatNullAs=NullString] attribute DOMString formTarget;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [TreatNullAs=NullString] attribute DOMString type;
-    [Reflect, TreatNullAs=NullString] attribute DOMString value;
+    [Reflect] attribute DOMString formTarget;
+    [Reflect] attribute DOMString name;
+    attribute DOMString type;
+    [Reflect] attribute DOMString value;
 
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
diff --git a/core/html/HTMLCanvasElement.idl b/core/html/HTMLCanvasElement.idl
index 78ada4d..0bee59f 100644
--- a/core/html/HTMLCanvasElement.idl
+++ b/core/html/HTMLCanvasElement.idl
@@ -32,6 +32,6 @@
     [Custom, RaisesException] DOMString toDataURL([TreatNullAs=NullString, TreatUndefinedAs=NullString,Default=Undefined] optional DOMString type);
 
     // The custom binding is needed to handle context creation attributes.
-    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] any getContext([Default=Undefined] optional DOMString contextId);
+    [Custom, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] any getContext([Default=Undefined] optional DOMString contextId);
 };
 
diff --git a/core/html/HTMLCollection.idl b/core/html/HTMLCollection.idl
index 319d878..0198742 100644
--- a/core/html/HTMLCollection.idl
+++ b/core/html/HTMLCollection.idl
@@ -19,9 +19,9 @@
  */
 
 [
-    CustomToV8,
-    GenerateIsReachable=ownerNode,
-    DependentLifetime
+    Custom=Wrap,
+    DependentLifetime,
+    GenerateVisitDOMWrapper=ownerNode,
 ] interface HTMLCollection {
     readonly attribute unsigned long length;
     getter Node item([Default=Undefined] optional unsigned long index);
diff --git a/core/html/HTMLDivElement.idl b/core/html/HTMLDivElement.idl
index b2eeb3d..f8ab122 100644
--- a/core/html/HTMLDivElement.idl
+++ b/core/html/HTMLDivElement.idl
@@ -17,8 +17,6 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-] interface HTMLDivElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+interface HTMLDivElement : HTMLElement {
+    [Reflect] attribute DOMString align;
 };
-
diff --git a/core/html/HTMLDocument.idl b/core/html/HTMLDocument.idl
index 764f1af..84328c8 100644
--- a/core/html/HTMLDocument.idl
+++ b/core/html/HTMLDocument.idl
@@ -21,11 +21,15 @@
 interface HTMLDocument : Document {
     [Custom, CustomElementCallbacks] void open();
     void close();
-    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, CustomElementCallbacks] void write([Default=Undefined] optional DOMString text);
-    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, CustomElementCallbacks] void writeln([Default=Undefined] optional DOMString text);
+
+    // We support multiple DOMString arguments to match FF / IE, e.g.:
+    // document.write("a", "b", "c") --> document.write("abc")
+    // document.write() --> document.write("")
+    [CallWith=ActiveWindow, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, CustomElementCallbacks] void write(DOMString... text);
+    [CallWith=ActiveWindow, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, CustomElementCallbacks] void writeln(DOMString... text);
 
     readonly attribute HTMLCollection embeds;
-    readonly attribute HTMLCollection plugins;
+    [ImplementedAs=embeds] readonly attribute HTMLCollection plugins;
     readonly attribute HTMLCollection scripts;
 
     // Extensions
diff --git a/core/html/HTMLElement.idl b/core/html/HTMLElement.idl
index c5640d5..5d06568 100644
--- a/core/html/HTMLElement.idl
+++ b/core/html/HTMLElement.idl
@@ -19,33 +19,31 @@
  */
 
 [
-    CustomToV8
+    Custom=Wrap,
 ] interface HTMLElement : Element {
-    [Reflect, TreatNullAs=NullString] attribute DOMString title;
-    [Reflect, TreatNullAs=NullString] attribute DOMString lang;
-    attribute boolean             translate;
-    [Reflect, TreatNullAs=NullString] attribute DOMString dir;
+    [Reflect] attribute DOMString title;
+    [Reflect] attribute DOMString lang;
+    attribute boolean translate;
+    [Reflect] attribute DOMString dir;
 
     [CustomElementCallbacks] attribute long              tabIndex;
     [CustomElementCallbacks] attribute boolean           draggable;
     [Reflect, TreatNullAs=NullString] attribute DOMString webkitdropzone;
     [Reflect] attribute boolean hidden;
-    [Reflect, TreatNullAs=NullString] attribute DOMString accessKey;
+    [Reflect] attribute DOMString accessKey;
 
     // Extensions
-    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString innerText;
-    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString outerText;
+    [TreatNullAs=NullString, CustomElementCallbacks, RaisesException=Setter, MeasureAs=HTMLElementInnerText] attribute DOMString innerText;
+    [TreatNullAs=NullString, CustomElementCallbacks, RaisesException=Setter, MeasureAs=HTMLElementOuterText] attribute DOMString outerText;
 
     [RaisesException, CustomElementCallbacks, MeasureAs=InsertAdjacentElement] Element insertAdjacentElement([Default=Undefined] optional DOMString where,
                                   [Default=Undefined] optional Element element);
-    [CustomElementCallbacks, RaisesException] void insertAdjacentHTML([Default=Undefined] optional DOMString where,
-                            [Default=Undefined] optional DOMString html);
     [RaisesException, MeasureAs=InsertAdjacentText] void insertAdjacentText([Default=Undefined] optional DOMString where,
                             [Default=Undefined] optional DOMString text);
 
     [RuntimeEnabled=IMEAPI] readonly attribute InputMethodContext inputMethodContext;
 
-    [TreatNullAs=NullString, CustomElementCallbacks, SetterRaisesException] attribute DOMString contentEditable;
+    [CustomElementCallbacks, RaisesException=Setter] attribute DOMString contentEditable;
     readonly attribute boolean isContentEditable;
 
              attribute boolean spellcheck;
diff --git a/core/html/HTMLEmbedElement.idl b/core/html/HTMLEmbedElement.idl
index 163ce7d..74524f3 100644
--- a/core/html/HTMLEmbedElement.idl
+++ b/core/html/HTMLEmbedElement.idl
@@ -19,19 +19,18 @@
  */
 
 [
-    CustomLegacyCall,
+    Custom=LegacyCallAsFunction,
 ] interface HTMLEmbedElement : HTMLElement {
-[Reflect, TreatNullAs=NullString] attribute DOMString align;
-[Reflect, TreatNullAs=NullString] attribute DOMString height;
-[Reflect, TreatNullAs=NullString] attribute DOMString name;
-[Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-[Reflect, TreatNullAs=NullString] attribute DOMString type;
-[Reflect, TreatNullAs=NullString] attribute DOMString width;
-[Custom, NotEnumerable] getter boolean (unsigned long index);
-[Custom] setter boolean (unsigned long index, Node value);
-[Custom, NotEnumerable] getter Node (DOMString name);
-[Custom] setter Node (DOMString name, Node value);
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString height;
+    [Reflect] attribute DOMString name;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect] attribute DOMString type;
+    [Reflect] attribute DOMString width;
+    [Custom, NotEnumerable] getter boolean (unsigned long index);
+    [Custom] setter boolean (unsigned long index, Node value);
+    [Custom, NotEnumerable] getter Node (DOMString name);
+    [Custom] setter Node (DOMString name, Node value);
 
-[CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
+    [CheckSecurity=Node, RaisesException] SVGDocument getSVGDocument();
 };
-
diff --git a/core/html/HTMLFieldSetElement.idl b/core/html/HTMLFieldSetElement.idl
index 4fc3409..94d9f0f 100644
--- a/core/html/HTMLFieldSetElement.idl
+++ b/core/html/HTMLFieldSetElement.idl
@@ -19,8 +19,8 @@
 
 interface HTMLFieldSetElement : HTMLElement {
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect] attribute DOMString name;
 
     readonly attribute DOMString type;
 
diff --git a/core/html/HTMLFontElement.idl b/core/html/HTMLFontElement.idl
index cdfd429..c0c56d4 100644
--- a/core/html/HTMLFontElement.idl
+++ b/core/html/HTMLFontElement.idl
@@ -19,7 +19,6 @@
 
 interface HTMLFontElement : HTMLElement {
     [Reflect, TreatNullAs=NullString] attribute DOMString color;
-    [Reflect, TreatNullAs=NullString] attribute DOMString face;
-    [Reflect, TreatNullAs=NullString] attribute DOMString size;
+    [Reflect] attribute DOMString face;
+    [Reflect] attribute DOMString size;
 };
-
diff --git a/core/html/HTMLFormControlsCollection.idl b/core/html/HTMLFormControlsCollection.idl
index e7b757e..f483a67 100644
--- a/core/html/HTMLFormControlsCollection.idl
+++ b/core/html/HTMLFormControlsCollection.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    GenerateIsReachable=ownerNode,
-    DependentLifetime
+    DependentLifetime,
+    GenerateVisitDOMWrapper=ownerNode,
 ] interface HTMLFormControlsCollection : HTMLCollection {
     [ImplementedAs=item] getter Node(unsigned long index);
     [Custom] Node namedItem([Default=Undefined] optional DOMString name);
diff --git a/core/html/HTMLFormElement.idl b/core/html/HTMLFormElement.idl
index 29a319e..6ba5f41 100644
--- a/core/html/HTMLFormElement.idl
+++ b/core/html/HTMLFormElement.idl
@@ -19,15 +19,15 @@
  */
 
 interface HTMLFormElement : HTMLElement {
-    [Reflect=accept_charset, TreatNullAs=NullString] attribute DOMString acceptCharset;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString action;
-    [Reflect, TreatNullAs=NullString] attribute DOMString autocomplete;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString enctype;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString encoding;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString method;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect=accept_charset] attribute DOMString acceptCharset;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString action;
+    [Reflect] attribute DOMString autocomplete;
+    [CustomElementCallbacks] attribute DOMString enctype;
+    [CustomElementCallbacks] attribute DOMString encoding;
+    [CustomElementCallbacks] attribute DOMString method;
+    [Reflect] attribute DOMString name;
     [Reflect] attribute boolean noValidate;
-    [Reflect, TreatNullAs=NullString] attribute DOMString target;
+    [Reflect] attribute DOMString target;
 
     readonly attribute HTMLCollection elements;
     readonly attribute long length;
diff --git a/core/html/HTMLFrameElement.idl b/core/html/HTMLFrameElement.idl
index ff93b07..1ab494c 100644
--- a/core/html/HTMLFrameElement.idl
+++ b/core/html/HTMLFrameElement.idl
@@ -20,27 +20,25 @@
 
 interface HTMLFrameElement : HTMLElement {
 
-    [Reflect, TreatNullAs=NullString] attribute DOMString frameBorder;
-    [Reflect, TreatNullAs=NullString] attribute DOMString longDesc;
+    [Reflect] attribute DOMString frameBorder;
+    [Reflect, URL] attribute DOMString longDesc;
     [Reflect, TreatNullAs=NullString] attribute DOMString marginHeight;
     [Reflect, TreatNullAs=NullString] attribute DOMString marginWidth;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect] attribute DOMString name;
     [Reflect] attribute boolean noResize;
-    [Reflect, TreatNullAs=NullString] attribute DOMString scrolling;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect] attribute DOMString scrolling;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
 
     // Introduced in DOM Level 2:
-    [CheckSecurityForNode] readonly attribute Document contentDocument;
+    [CheckSecurity=Node] readonly attribute Document contentDocument;
 
     // Extensions
     readonly attribute Window contentWindow;
 
-    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
+    [CheckSecurity=Node, RaisesException] SVGDocument getSVGDocument();
 
-    [TreatNullAs=NullString, CustomSetter] attribute DOMString location;
+    [TreatNullAs=NullString, Custom=Setter, MeasureAs=HTMLFrameElementLocation] attribute DOMString location;
 
     readonly attribute long width;
     readonly attribute long height;
-
 };
-
diff --git a/core/html/HTMLFrameSetElement.idl b/core/html/HTMLFrameSetElement.idl
index b1ec56f..38a5f21 100644
--- a/core/html/HTMLFrameSetElement.idl
+++ b/core/html/HTMLFrameSetElement.idl
@@ -20,8 +20,8 @@
 
 interface HTMLFrameSetElement : HTMLElement {
     [ImplementedAs=anonymousNamedGetter, OverrideBuiltins, NotEnumerable] getter Window (DOMString name);
-    [Reflect, TreatNullAs=NullString] attribute DOMString cols;
-    [Reflect, TreatNullAs=NullString] attribute DOMString rows;
+    [Reflect] attribute DOMString cols;
+    [Reflect] attribute DOMString rows;
 
     [Conditional=ORIENTATION_EVENTS] attribute EventHandler onorientationchange;
 
diff --git a/core/html/HTMLHRElement.idl b/core/html/HTMLHRElement.idl
index 302f7e9..95950eb 100644
--- a/core/html/HTMLHRElement.idl
+++ b/core/html/HTMLHRElement.idl
@@ -18,9 +18,9 @@
  */
 
 interface HTMLHRElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString color;
     [Reflect] attribute boolean noShade;
-    [Reflect, TreatNullAs=NullString] attribute DOMString size;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString size;
+    [Reflect] attribute DOMString width;
 };
-
diff --git a/core/html/HTMLHeadElement.idl b/core/html/HTMLHeadElement.idl
index 5d17741..738deb7 100644
--- a/core/html/HTMLHeadElement.idl
+++ b/core/html/HTMLHeadElement.idl
@@ -18,6 +18,5 @@
  */
 
 interface HTMLHeadElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString profile;
+    [Reflect, TreatNullAs=NullString, MeasureAs=HTMLHeadElementProfile] attribute DOMString profile;
 };
-
diff --git a/core/html/HTMLHeadingElement.idl b/core/html/HTMLHeadingElement.idl
index e339d6e..fe558d2 100644
--- a/core/html/HTMLHeadingElement.idl
+++ b/core/html/HTMLHeadingElement.idl
@@ -18,6 +18,5 @@
  */
 
 interface HTMLHeadingElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
 };
-
diff --git a/core/html/HTMLHtmlElement.idl b/core/html/HTMLHtmlElement.idl
index 294ad79..3e329da 100644
--- a/core/html/HTMLHtmlElement.idl
+++ b/core/html/HTMLHtmlElement.idl
@@ -18,7 +18,6 @@
  */
 
 interface HTMLHtmlElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString version;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString manifest;
+    [Reflect] attribute DOMString version;
+    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds, MeasureAs=HTMLHtmlElementManifest] attribute DOMString manifest;
 };
-
diff --git a/core/html/HTMLIFrameElement.idl b/core/html/HTMLIFrameElement.idl
index 9fcf3a9..d8a8a8e 100644
--- a/core/html/HTMLIFrameElement.idl
+++ b/core/html/HTMLIFrameElement.idl
@@ -19,26 +19,25 @@
  */
 
 interface HTMLIFrameElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect, TreatNullAs=NullString] attribute DOMString frameBorder;
-    [Reflect, TreatNullAs=NullString] attribute DOMString height;
-    [Reflect, TreatNullAs=NullString] attribute DOMString longDesc;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString frameBorder;
+    [Reflect] attribute DOMString height;
+    [Reflect, URL] attribute DOMString longDesc;
     [Reflect, TreatNullAs=NullString] attribute DOMString marginHeight;
     [Reflect, TreatNullAs=NullString] attribute DOMString marginWidth;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect] attribute DOMString name;
     [Reflect, TreatNullAs=NullString] attribute DOMString sandbox;
     [Reflect, RuntimeEnabled=SeamlessIFrames] attribute boolean seamless;
-    [Reflect, TreatNullAs=NullString] attribute DOMString scrolling;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-    [Reflect, TreatNullAs=NullString] attribute DOMString srcdoc;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString scrolling;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect] attribute DOMString srcdoc;
+    [Reflect] attribute DOMString width;
 
     // Introduced in DOM Level 2:
-    [CheckSecurityForNode] readonly attribute Document contentDocument;
+    [CheckSecurity=Node] readonly attribute Document contentDocument;
 
     // Extensions
     readonly attribute Window contentWindow;
 
-    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
+    [CheckSecurity=Node, RaisesException] SVGDocument getSVGDocument();
 };
-
diff --git a/core/html/HTMLImageElement.idl b/core/html/HTMLImageElement.idl
index 1ef0e50..01ff005 100644
--- a/core/html/HTMLImageElement.idl
+++ b/core/html/HTMLImageElement.idl
@@ -24,26 +24,26 @@
  // FIXME(MERGE_DARTIUM): Breaks Dart code gen for Chrome 32 / 1700 roll.
  //    NamedConstructor=Image([Default=Undefined] optional long width, [Default=Undefined] optional long height)
 ] interface HTMLImageElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString alt;
     [Reflect, TreatNullAs=NullString] attribute DOMString border;
-    [Reflect, TreatNullAs=NullString] attribute DOMString crossOrigin;
+    readonly attribute boolean complete;
+    [Reflect] attribute DOMString crossOrigin;
     attribute long height;
     [Reflect] attribute long hspace;
     [Reflect] attribute boolean isMap;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString longDesc;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-    [Reflect, TreatNullAs=NullString, RuntimeEnabled=Srcset] attribute DOMString srcset;
-    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString longDesc;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString lowsrc;
+    [Reflect] attribute DOMString name;
+    readonly attribute long naturalHeight;
+    readonly attribute long naturalWidth;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect, RuntimeEnabled=Srcset] attribute DOMString srcset;
+    [Reflect] attribute DOMString useMap;
     [Reflect] attribute long vspace;
     attribute long width;
 
     // Extensions
-    readonly attribute boolean complete;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString lowsrc;
-    readonly attribute long naturalHeight;
-    readonly attribute long naturalWidth;
     readonly attribute long x;
     readonly attribute long y;
 };
diff --git a/core/html/HTMLInputElement.idl b/core/html/HTMLInputElement.idl
index 9782e01..6c2fa4e 100644
--- a/core/html/HTMLInputElement.idl
+++ b/core/html/HTMLInputElement.idl
@@ -19,47 +19,48 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-] interface HTMLInputElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString accept;
-    [Reflect, TreatNullAs=NullString] attribute DOMString alt;
-    [Reflect, TreatNullAs=NullString] attribute DOMString autocomplete;
+interface HTMLInputElement : HTMLElement {
+    [Reflect] attribute DOMString accept;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString alt;
+    [Reflect] attribute DOMString autocomplete;
     [Reflect] attribute boolean autofocus;
     [Reflect=checked] attribute boolean defaultChecked;
     attribute boolean checked;
-    [Reflect, TreatNullAs=NullString] attribute DOMString dirName;
+    [Reflect] attribute DOMString dirName;
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
     // The 'files' attribute is intentionally not readonly.
     // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22682
     attribute FileList files;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString formEnctype;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString formMethod;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString formAction;
+    [CustomElementCallbacks] attribute DOMString formEnctype;
+    [CustomElementCallbacks] attribute DOMString formMethod;
     [Reflect] attribute boolean formNoValidate;
-    [Reflect, TreatNullAs=NullString] attribute DOMString formTarget;
+    [Reflect] attribute DOMString formTarget;
     [CustomElementCallbacks] attribute unsigned long height;
     attribute boolean indeterminate;
+    [RuntimeEnabled=InputModeAttribute, Reflect] attribute DOMString inputMode;
     [RuntimeEnabled=DataListElement] readonly attribute HTMLElement list;
-    [Reflect, TreatNullAs=NullString] attribute DOMString max;
-    [SetterRaisesException, CustomElementCallbacks] attribute long maxLength;
-    [Reflect, TreatNullAs=NullString] attribute DOMString min;
+    [Reflect] attribute DOMString max;
+    [RaisesException=Setter, CustomElementCallbacks] attribute long maxLength;
+    [Reflect] attribute DOMString min;
     [Reflect] attribute boolean multiple;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString pattern;
-    [Reflect, TreatNullAs=NullString] attribute DOMString placeholder;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString pattern;
+    [Reflect] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
     [Reflect] attribute boolean required;
-    [SetterRaisesException, CustomElementCallbacks] attribute unsigned long size; // Changed string -> long -> unsigned long
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-    [Reflect, TreatNullAs=NullString] attribute DOMString step;
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString type; // readonly dropped as part of DOM level 2
-    [TreatNullAs=NullString, CustomElementCallbacks] attribute DOMString defaultValue;
+    [RaisesException=Setter, CustomElementCallbacks] attribute unsigned long size; // Changed string -> long -> unsigned long
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect] attribute DOMString step;
+    [CustomElementCallbacks] attribute DOMString type; // readonly dropped as part of DOM level 2
+    [CustomElementCallbacks] attribute DOMString defaultValue;
+    [Reflect] attribute DOMString useMap;
     // See the discussion in https://bugs.webkit.org/show_bug.cgi?id=100085
-    [TreatNullAs=NullString, SetterRaisesException, CustomElementCallbacks] attribute DOMString value;
-    [SetterRaisesException, CustomElementCallbacks] attribute Date valueAsDate;
-    [SetterRaisesException, CustomElementCallbacks] attribute double valueAsNumber;
-    [RuntimeEnabled=InputModeAttribute, Reflect, TreatNullAs=NullString] attribute DOMString inputMode;
+    [TreatNullAs=NullString, RaisesException=Setter, CustomElementCallbacks] attribute DOMString value;
+    [RaisesException=Setter, CustomElementCallbacks] attribute Date valueAsDate;
+    [RaisesException=Setter, CustomElementCallbacks] attribute double valueAsNumber;
 
     [RaisesException, CustomElementCallbacks] void stepUp(optional long n);
     [RaisesException, CustomElementCallbacks] void stepDown(optional long n);
@@ -90,9 +91,7 @@
                            optional DOMString direction);
 
     // Non-standard attributes
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
     [Reflect, RuntimeEnabled=DirectoryUpload] attribute boolean webkitdirectory;
-    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
     [Reflect] attribute boolean incremental;
     [Conditional=INPUT_SPEECH, Reflect, RuntimeEnabled=SpeechInput] attribute boolean webkitSpeech;
     [Conditional=INPUT_SPEECH, Reflect, RuntimeEnabled=SpeechInput] attribute boolean webkitGrammar;
diff --git a/core/html/HTMLKeygenElement.idl b/core/html/HTMLKeygenElement.idl
index b4d67df..59af638 100644
--- a/core/html/HTMLKeygenElement.idl
+++ b/core/html/HTMLKeygenElement.idl
@@ -30,11 +30,11 @@
 
 interface HTMLKeygenElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
-    [Reflect, TreatNullAs=NullString] attribute DOMString challenge;
+    [Reflect] attribute DOMString challenge;
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString] attribute DOMString keytype;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect] attribute DOMString keytype;
+    [Reflect] attribute DOMString name;
 
     readonly attribute DOMString type;
 
@@ -46,4 +46,3 @@
 
     readonly attribute NodeList labels;
 };
-
diff --git a/core/html/HTMLLIElement.idl b/core/html/HTMLLIElement.idl
index 9d03749..43b242f 100644
--- a/core/html/HTMLLIElement.idl
+++ b/core/html/HTMLLIElement.idl
@@ -18,7 +18,6 @@
  */
 
 interface HTMLLIElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString type;
     [Reflect] attribute long value;
 };
-
diff --git a/core/html/HTMLLabelElement.idl b/core/html/HTMLLabelElement.idl
index d249897..0f73764 100644
--- a/core/html/HTMLLabelElement.idl
+++ b/core/html/HTMLLabelElement.idl
@@ -19,8 +19,7 @@
  */
 
 interface HTMLLabelElement : HTMLElement {
-    readonly attribute HTMLFormElement form;
-    [Reflect=for, TreatNullAs=NullString] attribute DOMString htmlFor;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect=for] attribute DOMString htmlFor;
     readonly attribute HTMLElement control;
 };
-
diff --git a/core/html/HTMLLegendElement.idl b/core/html/HTMLLegendElement.idl
index 0e89ec0..d510706 100644
--- a/core/html/HTMLLegendElement.idl
+++ b/core/html/HTMLLegendElement.idl
@@ -20,6 +20,5 @@
 
 interface HTMLLegendElement : HTMLElement {
     readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
 };
-
diff --git a/core/html/HTMLLinkElement.idl b/core/html/HTMLLinkElement.idl
index 6bcce34..73c2426 100644
--- a/core/html/HTMLLinkElement.idl
+++ b/core/html/HTMLLinkElement.idl
@@ -21,19 +21,18 @@
 
 interface HTMLLinkElement : HTMLElement {
     [Reflect] attribute boolean disabled;
-    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString href;
-    [Reflect, TreatNullAs=NullString] attribute DOMString hreflang;
-    [Reflect, TreatNullAs=NullString] attribute DOMString media;
-    [Reflect, TreatNullAs=NullString] attribute DOMString rel;
-    [Reflect, TreatNullAs=NullString] attribute DOMString rev;
+    [Reflect] attribute DOMString charset;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString href;
+    [Reflect] attribute DOMString hreflang;
+    [Reflect] attribute DOMString media;
+    [Reflect] attribute DOMString rel;
+    [Reflect] attribute DOMString rev;
     [PutForwards=value] readonly attribute DOMSettableTokenList sizes;
-    [Reflect, TreatNullAs=NullString] attribute DOMString target;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString target;
+    [Reflect] attribute DOMString type;
 
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
 
     [RuntimeEnabled=HTMLImports] readonly attribute Document import;
 };
-
diff --git a/core/html/HTMLMapElement.idl b/core/html/HTMLMapElement.idl
index 2eb6f29..6616bed 100644
--- a/core/html/HTMLMapElement.idl
+++ b/core/html/HTMLMapElement.idl
@@ -20,6 +20,5 @@
 
 interface HTMLMapElement : HTMLElement {
     readonly attribute HTMLCollection areas;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect] attribute DOMString name;
 };
-
diff --git a/core/html/HTMLMarqueeElement.idl b/core/html/HTMLMarqueeElement.idl
index 827da3e..0188f6c 100644
--- a/core/html/HTMLMarqueeElement.idl
+++ b/core/html/HTMLMarqueeElement.idl
@@ -21,17 +21,17 @@
     void start();
     void stop();
 
-    [Reflect, TreatNullAs=NullString] attribute DOMString behavior;
-    [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
-    [Reflect, TreatNullAs=NullString] attribute DOMString direction;
-    [Reflect, TreatNullAs=NullString] attribute DOMString height;
+    [Reflect] attribute DOMString behavior;
+    [Reflect] attribute DOMString bgColor;
+    [Reflect] attribute DOMString direction;
+    [Reflect] attribute DOMString height;
     [Reflect] attribute unsigned long hspace;
-    [SetterRaisesException] attribute long loop;
-    [SetterRaisesException] attribute long scrollAmount;
-    [SetterRaisesException] attribute long scrollDelay;
+    [RaisesException=Setter] attribute long loop;
+    [RaisesException=Setter] attribute long scrollAmount;
+    [RaisesException=Setter] attribute long scrollDelay;
     [Reflect] attribute boolean trueSpeed;
     [Reflect] attribute unsigned long vspace;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString width;
 
     // FIXME: Implement the following event handler attributes
     // https://bugs.webkit.org/show_bug.cgi?id=49788
diff --git a/core/html/HTMLMediaElement.idl b/core/html/HTMLMediaElement.idl
index a30598b..a4dbf6f 100644
--- a/core/html/HTMLMediaElement.idl
+++ b/core/html/HTMLMediaElement.idl
@@ -34,6 +34,7 @@
     // network state
     [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
     [URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] readonly attribute DOMString currentSrc;
+    [Reflect] attribute DOMString crossOrigin;
 
     const unsigned short NETWORK_EMPTY = 0;
     const unsigned short NETWORK_IDLE = 1;
@@ -56,7 +57,7 @@
     readonly attribute boolean seeking;
 
     // playback state
-    [SetterRaisesException] attribute double currentTime;
+    [RaisesException=Setter] attribute double currentTime;
     readonly attribute double duration;
     readonly attribute boolean paused;
     attribute double defaultPlaybackRate;
@@ -71,11 +72,11 @@
 
     // media controller
     [Reflect] attribute DOMString mediaGroup;
-    [CustomSetter] attribute MediaController controller;
+    [StrictTypeChecking] attribute MediaController controller;
 
     // controls
     attribute boolean controls;
-    [SetterRaisesException] attribute double volume;
+    [RaisesException=Setter] attribute double volume;
     attribute boolean muted;
     [Reflect=muted] attribute boolean defaultMuted;
 
@@ -99,5 +100,5 @@
     [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitkeymessage;
     [RuntimeEnabled=PrefixedEncryptedMedia] attribute EventHandler onwebkitneedkey;
 
-    [RuntimeEnabled=EncryptedMedia, Conditional=ENCRYPTED_MEDIA_V2] attribute MediaKeys mediaKeys;
+    [RuntimeEnabled=EncryptedMedia] attribute MediaKeys mediaKeys;
 };
diff --git a/core/html/HTMLMetaElement.idl b/core/html/HTMLMetaElement.idl
index 8149993..41d369e 100644
--- a/core/html/HTMLMetaElement.idl
+++ b/core/html/HTMLMetaElement.idl
@@ -18,9 +18,8 @@
  */
 
 interface HTMLMetaElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString content;
-    [Reflect=http_equiv, TreatNullAs=NullString] attribute DOMString httpEquiv;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString scheme;
+    [Reflect] attribute DOMString content;
+    [Reflect=http_equiv] attribute DOMString httpEquiv;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString scheme;
 };
-
diff --git a/core/html/HTMLMeterElement.idl b/core/html/HTMLMeterElement.idl
index 12f067a..fde8591 100644
--- a/core/html/HTMLMeterElement.idl
+++ b/core/html/HTMLMeterElement.idl
@@ -18,11 +18,11 @@
  */
 
 interface HTMLMeterElement : HTMLElement {
-             [SetterRaisesException] attribute double value;
-             [SetterRaisesException] attribute double min;
-             [SetterRaisesException] attribute double max;
-             [SetterRaisesException] attribute double low;
-             [SetterRaisesException] attribute double high;
-             [SetterRaisesException] attribute double optimum;
+             [RaisesException=Setter] attribute double value;
+             [RaisesException=Setter] attribute double min;
+             [RaisesException=Setter] attribute double max;
+             [RaisesException=Setter] attribute double low;
+             [RaisesException=Setter] attribute double high;
+             [RaisesException=Setter] attribute double optimum;
     readonly attribute NodeList labels;
 };
diff --git a/core/html/HTMLModElement.idl b/core/html/HTMLModElement.idl
index e5866d3..c066b68 100644
--- a/core/html/HTMLModElement.idl
+++ b/core/html/HTMLModElement.idl
@@ -18,7 +18,6 @@
  */
 
 interface HTMLModElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
-    [Reflect, TreatNullAs=NullString] attribute DOMString dateTime;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
+    [Reflect] attribute DOMString dateTime;
 };
-
diff --git a/core/html/HTMLOListElement.idl b/core/html/HTMLOListElement.idl
index 0168f6d..01cbabd 100644
--- a/core/html/HTMLOListElement.idl
+++ b/core/html/HTMLOListElement.idl
@@ -21,6 +21,5 @@
     [Reflect] attribute boolean compact;
     attribute long start;
     [Reflect] attribute boolean reversed;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString type;
 };
-
diff --git a/core/html/HTMLObjectElement.idl b/core/html/HTMLObjectElement.idl
index 02b1a80..2393f05 100644
--- a/core/html/HTMLObjectElement.idl
+++ b/core/html/HTMLObjectElement.idl
@@ -19,25 +19,25 @@
  */
 
 [
-    CustomLegacyCall
+    Custom=LegacyCallAsFunction,
 ] interface HTMLObjectElement : HTMLElement {
-    readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString] attribute DOMString code;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect, TreatNullAs=NullString] attribute DOMString archive;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect] attribute DOMString code;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString archive;
     [Reflect, TreatNullAs=NullString] attribute DOMString border;
-    [Reflect, TreatNullAs=NullString] attribute DOMString codeBase;
-    [Reflect, TreatNullAs=NullString] attribute DOMString codeType;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString data;
+    [Reflect, URL] attribute DOMString codeBase;
+    [Reflect] attribute DOMString codeType;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString data;
     [Reflect] attribute boolean declare;
-    [Reflect, TreatNullAs=NullString] attribute DOMString height;
+    [Reflect] attribute DOMString height;
     [Reflect] attribute long hspace;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString standby;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
-    [Reflect, TreatNullAs=NullString] attribute DOMString useMap;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString standby;
+    [Reflect] attribute DOMString type;
+    [Reflect] attribute DOMString useMap;
     [Reflect] attribute long vspace;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString width;
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
@@ -45,12 +45,11 @@
     void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     // Introduced in DOM Level 2:
-    [CheckSecurityForNode] readonly attribute Document contentDocument;
+    [CheckSecurity=Node] readonly attribute Document contentDocument;
     [Custom, NotEnumerable] getter boolean (unsigned long index);
     [Custom] setter boolean (unsigned long index, Node value);
     [Custom, NotEnumerable] getter Node (DOMString name);
     [Custom] setter Node (DOMString name, Node value);
 
-    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
+    [CheckSecurity=Node, RaisesException] SVGDocument getSVGDocument();
 };
-
diff --git a/core/html/HTMLOptGroupElement.idl b/core/html/HTMLOptGroupElement.idl
index d95f738..c06ee82 100644
--- a/core/html/HTMLOptGroupElement.idl
+++ b/core/html/HTMLOptGroupElement.idl
@@ -19,6 +19,5 @@
 
 interface HTMLOptGroupElement : HTMLElement {
     [Reflect] attribute boolean disabled;
-    [Reflect, TreatNullAs=NullString] attribute DOMString label;
+    [Reflect] attribute DOMString label;
 };
-
diff --git a/core/html/HTMLOptionElement.idl b/core/html/HTMLOptionElement.idl
index d315551..41c6592 100644
--- a/core/html/HTMLOptionElement.idl
+++ b/core/html/HTMLOptionElement.idl
@@ -20,7 +20,7 @@
 
 [
     NamedConstructor=Option([Default=NullString] optional DOMString data, [Default=NullString] optional DOMString value, [Default=Undefined] optional boolean defaultSelected, [Default=Undefined] optional boolean selected),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface HTMLOptionElement : HTMLElement {
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
@@ -29,6 +29,6 @@
     attribute boolean selected;
     attribute DOMString value;
 
-    [SetterRaisesException] attribute DOMString text;
+    [RaisesException=Setter] attribute DOMString text;
     readonly attribute long index;
 };
diff --git a/core/html/HTMLOptionsCollection.idl b/core/html/HTMLOptionsCollection.idl
index aa47617..32c4147 100644
--- a/core/html/HTMLOptionsCollection.idl
+++ b/core/html/HTMLOptionsCollection.idl
@@ -20,11 +20,11 @@
  */
 
 [
-    GenerateIsReachable=ownerNode,
-    DependentLifetime
+    DependentLifetime,
+    GenerateVisitDOMWrapper=ownerNode,
 ] interface HTMLOptionsCollection : HTMLCollection {
     attribute long selectedIndex;
-    [CustomSetter, SetterRaisesException] attribute unsigned long length;
+    [Custom=Setter, RaisesException=Setter] attribute unsigned long length;
     [ImplementedAs=item] getter Node(unsigned long index);
     [ImplementedAs=anonymousIndexedSetter, RaisesException] setter HTMLOptionElement (unsigned long index, [TreatNullAs=anonymousIndexedSetterRemove, TreatUndefinedAs=anonymousIndexedSetterRemove] HTMLOptionElement value);
     [ImplementedAs=anonymousNamedGetter, NotEnumerable] getter (NodeList or Node)(DOMString name);
diff --git a/core/html/HTMLOutputElement.idl b/core/html/HTMLOutputElement.idl
index caebd48..ec24c46 100644
--- a/core/html/HTMLOutputElement.idl
+++ b/core/html/HTMLOutputElement.idl
@@ -24,12 +24,12 @@
 
 interface HTMLOutputElement : HTMLElement {
     [PutForwards=value] readonly attribute DOMSettableTokenList htmlFor;
-    readonly attribute HTMLFormElement form;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [Reflect] attribute DOMString name;
 
     readonly attribute DOMString type;
-    [TreatNullAs=NullString] attribute DOMString defaultValue;
-    [TreatNullAs=NullString] attribute DOMString value;
+    attribute DOMString defaultValue;
+    attribute DOMString value;
 
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
diff --git a/core/html/HTMLParagraphElement.idl b/core/html/HTMLParagraphElement.idl
index 55787c3..83242a1 100644
--- a/core/html/HTMLParagraphElement.idl
+++ b/core/html/HTMLParagraphElement.idl
@@ -18,6 +18,5 @@
  */
 
 interface HTMLParagraphElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
 };
-
diff --git a/core/html/HTMLParamElement.idl b/core/html/HTMLParamElement.idl
index 2de4b20..d832e2c 100644
--- a/core/html/HTMLParamElement.idl
+++ b/core/html/HTMLParamElement.idl
@@ -18,9 +18,8 @@
  */
 
 interface HTMLParamElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
-    [Reflect, TreatNullAs=NullString] attribute DOMString value;
-    [Reflect, TreatNullAs=NullString] attribute DOMString valueType;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString type;
+    [Reflect] attribute DOMString value;
+    [Reflect] attribute DOMString valueType;
 };
-
diff --git a/core/html/HTMLProgressElement.idl b/core/html/HTMLProgressElement.idl
index a2f3f32..b2f5a9c 100644
--- a/core/html/HTMLProgressElement.idl
+++ b/core/html/HTMLProgressElement.idl
@@ -18,8 +18,8 @@
  */
 
 interface HTMLProgressElement : HTMLElement {
-             [SetterRaisesException] attribute  double                value;
-             [SetterRaisesException] attribute  double                max;
+             [RaisesException=Setter] attribute  double                value;
+             [RaisesException=Setter] attribute  double                max;
     readonly attribute  double                position;
     readonly attribute  NodeList              labels;
 };
diff --git a/core/html/HTMLQuoteElement.idl b/core/html/HTMLQuoteElement.idl
index 464fd0a..93a2aff 100644
--- a/core/html/HTMLQuoteElement.idl
+++ b/core/html/HTMLQuoteElement.idl
@@ -18,5 +18,5 @@
  */
 
 interface HTMLQuoteElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString cite;
 };
diff --git a/core/html/HTMLScriptElement.idl b/core/html/HTMLScriptElement.idl
index ea4275d..1f1e260 100644
--- a/core/html/HTMLScriptElement.idl
+++ b/core/html/HTMLScriptElement.idl
@@ -18,14 +18,14 @@
  */
 
 interface HTMLScriptElement : HTMLElement {
-    [TreatNullAs=NullString] attribute DOMString text;
-    [Reflect=for, TreatNullAs=NullString] attribute DOMString htmlFor;
-    [Reflect, TreatNullAs=NullString] attribute DOMString event;
-    [Reflect, TreatNullAs=NullString] attribute DOMString charset;
+    attribute DOMString text;
+    [Reflect=for] attribute DOMString htmlFor;
+    [Reflect] attribute DOMString event;
+    [Reflect] attribute DOMString charset;
     attribute boolean async;
     [Reflect] attribute boolean defer;
-    [Reflect, TreatNullAs=NullString, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
-    [Reflect, TreatNullAs=NullString] attribute DOMString crossOrigin;
-    [Reflect, TreatNullAs=NullString, RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
+    [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
+    [Reflect] attribute DOMString type;
+    [Reflect] attribute DOMString crossOrigin;
+    [Reflect, RuntimeEnabled=ExperimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
 };
diff --git a/core/html/HTMLSelectElement.idl b/core/html/HTMLSelectElement.idl
index 477af63..b61f512 100644
--- a/core/html/HTMLSelectElement.idl
+++ b/core/html/HTMLSelectElement.idl
@@ -22,16 +22,16 @@
 interface HTMLSelectElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
     attribute boolean multiple;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
+    [Reflect] attribute DOMString name;
     [Reflect] attribute boolean required;
     attribute long size;
 
     readonly attribute DOMString type;
 
     readonly attribute HTMLOptionsCollection options;
-    [SetterRaisesException] attribute unsigned long length;
+    [RaisesException=Setter] attribute unsigned long length;
 
     getter Node item(unsigned long index);
     [ImplementedAs=anonymousIndexedSetter, RaisesException] setter HTMLOptionElement (unsigned long index, [TreatNullAs=anonymousIndexedSetterRemove, TreatUndefinedAs=anonymousIndexedSetterRemove] HTMLOptionElement value);
@@ -43,7 +43,7 @@
     [RaisesException] void remove();
     readonly attribute HTMLCollection selectedOptions;
     attribute long selectedIndex;
-    [TreatNullAs=NullString] attribute DOMString value;
+    attribute DOMString value;
 
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
diff --git a/core/html/HTMLStyleElement.idl b/core/html/HTMLStyleElement.idl
index 55d12f2..42a38de 100644
--- a/core/html/HTMLStyleElement.idl
+++ b/core/html/HTMLStyleElement.idl
@@ -21,10 +21,9 @@
 interface HTMLStyleElement : HTMLElement {
     attribute boolean disabled;
     [RuntimeEnabled=StyleScoped] attribute boolean scoped;
-    [Reflect, TreatNullAs=NullString] attribute DOMString media;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString media;
+    [Reflect] attribute DOMString type;
 
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
 };
-
diff --git a/core/html/HTMLTableCaptionElement.idl b/core/html/HTMLTableCaptionElement.idl
index b7b55d7..cd20259 100644
--- a/core/html/HTMLTableCaptionElement.idl
+++ b/core/html/HTMLTableCaptionElement.idl
@@ -19,6 +19,5 @@
  */
 
 interface HTMLTableCaptionElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
 };
-
diff --git a/core/html/HTMLTableCellElement.idl b/core/html/HTMLTableCellElement.idl
index a52f05c..8f823e4 100644
--- a/core/html/HTMLTableCellElement.idl
+++ b/core/html/HTMLTableCellElement.idl
@@ -20,19 +20,18 @@
 
 interface HTMLTableCellElement : HTMLElement {
     readonly attribute long cellIndex;
-    [Reflect, TreatNullAs=NullString] attribute DOMString abbr;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect, TreatNullAs=NullString] attribute DOMString axis;
+    [Reflect] attribute DOMString abbr;
+    [Reflect] attribute DOMString align;
+    [Reflect] attribute DOMString axis;
     [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
-    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
-    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
     attribute long colSpan;
     [Reflect, TreatNullAs=NullString] attribute DOMString headers;
-    [Reflect, TreatNullAs=NullString] attribute DOMString height;
+    [Reflect] attribute DOMString height;
     [Reflect] attribute boolean noWrap;
     attribute long rowSpan;
-    [Reflect, TreatNullAs=NullString] attribute DOMString scope;
-    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString scope;
+    [Reflect] attribute DOMString vAlign;
+    [Reflect] attribute DOMString width;
 };
-
diff --git a/core/html/HTMLTableColElement.idl b/core/html/HTMLTableColElement.idl
index 748711f..577b7e5 100644
--- a/core/html/HTMLTableColElement.idl
+++ b/core/html/HTMLTableColElement.idl
@@ -19,11 +19,10 @@
  */
 
 interface HTMLTableColElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
-    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
+    [Reflect] attribute DOMString align;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
     attribute long span;
-    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString vAlign;
+    [Reflect] attribute DOMString width;
 };
-
diff --git a/core/html/HTMLTableElement.idl b/core/html/HTMLTableElement.idl
index cd247d6..4cd6d6f 100644
--- a/core/html/HTMLTableElement.idl
+++ b/core/html/HTMLTableElement.idl
@@ -19,23 +19,23 @@
  */
 
 interface HTMLTableElement : HTMLElement {
-    [SetterRaisesException] attribute HTMLTableCaptionElement caption;
-    [SetterRaisesException] attribute HTMLTableSectionElement tHead;
-    [SetterRaisesException] attribute HTMLTableSectionElement tFoot;
+    [RaisesException=Setter] attribute HTMLTableCaptionElement caption;
+    [RaisesException=Setter] attribute HTMLTableSectionElement tHead;
+    [RaisesException=Setter] attribute HTMLTableSectionElement tFoot;
 
     readonly attribute HTMLCollection rows;
     readonly attribute HTMLCollection tBodies;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
     [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
-    [Reflect, TreatNullAs=NullString] attribute DOMString border;
+    [Reflect] attribute DOMString border;
     [Reflect, TreatNullAs=NullString] attribute DOMString cellPadding;
     [Reflect, TreatNullAs=NullString] attribute DOMString cellSpacing;
 
-    [Reflect, TreatNullAs=NullString] attribute DOMString frame;
+    [Reflect] attribute DOMString frame;
 
-    [Reflect, TreatNullAs=NullString] attribute DOMString rules;
-    [Reflect, TreatNullAs=NullString] attribute DOMString summary;
-    [Reflect, TreatNullAs=NullString] attribute DOMString width;
+    [Reflect] attribute DOMString rules;
+    [Reflect] attribute DOMString summary;
+    [Reflect] attribute DOMString width;
 
     HTMLElement createTHead();
     void deleteTHead();
@@ -48,4 +48,3 @@
     [RaisesException] HTMLElement insertRow([Default=Undefined] optional long index);
     [RaisesException] void deleteRow([Default=Undefined] optional long index);
 };
-
diff --git a/core/html/HTMLTableRowElement.idl b/core/html/HTMLTableRowElement.idl
index 1b2d27d..aa7b9ca 100644
--- a/core/html/HTMLTableRowElement.idl
+++ b/core/html/HTMLTableRowElement.idl
@@ -22,12 +22,11 @@
     readonly attribute long rowIndex;
     readonly attribute long sectionRowIndex;
     readonly attribute HTMLCollection cells;
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
+    [Reflect] attribute DOMString align;
     [Reflect, TreatNullAs=NullString] attribute DOMString bgColor;
-    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
-    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
-    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect] attribute DOMString vAlign;
     [RaisesException] HTMLElement insertCell([Default=Undefined] optional long index);
     [RaisesException] void deleteCell([Default=Undefined] optional long index);
 };
-
diff --git a/core/html/HTMLTableSectionElement.idl b/core/html/HTMLTableSectionElement.idl
index c46e724..836b712 100644
--- a/core/html/HTMLTableSectionElement.idl
+++ b/core/html/HTMLTableSectionElement.idl
@@ -19,12 +19,11 @@
  */
 
 interface HTMLTableSectionElement : HTMLElement {
-    [Reflect, TreatNullAs=NullString] attribute DOMString align;
-    [Reflect=char, TreatNullAs=NullString] attribute DOMString ch;
-    [Reflect=charoff, TreatNullAs=NullString] attribute DOMString chOff;
-    [Reflect, TreatNullAs=NullString] attribute DOMString vAlign;
+    [Reflect] attribute DOMString align;
+    [Reflect=char] attribute DOMString ch;
+    [Reflect=charoff] attribute DOMString chOff;
+    [Reflect] attribute DOMString vAlign;
     readonly attribute HTMLCollection rows;
     [RaisesException] HTMLElement insertRow([Default=Undefined] optional long index);
     [RaisesException] void deleteRow([Default=Undefined] optional long index);
 };
-
diff --git a/core/html/HTMLTemplateElement.idl b/core/html/HTMLTemplateElement.idl
index 46c6696..e950fce 100644
--- a/core/html/HTMLTemplateElement.idl
+++ b/core/html/HTMLTemplateElement.idl
@@ -29,6 +29,6 @@
  */
 
 interface HTMLTemplateElement : HTMLElement {
-    [KeepAttributeAliveForGC] readonly attribute DocumentFragment content;
+    readonly attribute DocumentFragment content;
 };
 
diff --git a/core/html/HTMLTextAreaElement.idl b/core/html/HTMLTextAreaElement.idl
index fc3b1ff..e5d7926 100644
--- a/core/html/HTMLTextAreaElement.idl
+++ b/core/html/HTMLTextAreaElement.idl
@@ -22,20 +22,20 @@
 interface HTMLTextAreaElement : HTMLElement {
     [Reflect] attribute boolean autofocus;
     attribute long cols;
-    [Reflect, TreatNullAs=NullString] attribute DOMString dirName;
+    [Reflect] attribute DOMString dirName;
     [Reflect] attribute boolean disabled;
-    readonly attribute HTMLFormElement form;
-    [SetterRaisesException] attribute long maxLength;
-    [Reflect, TreatNullAs=NullString] attribute DOMString name;
-    [Reflect, TreatNullAs=NullString] attribute DOMString placeholder;
+    [ImplementedAs=formOwner] readonly attribute HTMLFormElement form;
+    [RaisesException=Setter] attribute long maxLength;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
     [Reflect] attribute boolean required;
     attribute long rows;
-    [Reflect, TreatNullAs=NullString] attribute DOMString wrap;
-    [RuntimeEnabled=InputModeAttribute, Reflect, TreatNullAs=NullString] attribute DOMString inputMode;
+    [Reflect] attribute DOMString wrap;
+    [RuntimeEnabled=InputModeAttribute, Reflect] attribute DOMString inputMode;
 
     readonly attribute DOMString type;
-    [TreatNullAs=NullString] attribute DOMString defaultValue;
+    attribute DOMString defaultValue;
     [TreatNullAs=NullString] attribute DOMString value;
     readonly attribute unsigned long textLength;
 
diff --git a/core/html/HTMLTitleElement.idl b/core/html/HTMLTitleElement.idl
index f5639fe..291318f 100644
--- a/core/html/HTMLTitleElement.idl
+++ b/core/html/HTMLTitleElement.idl
@@ -18,6 +18,5 @@
  */
 
 interface HTMLTitleElement : HTMLElement {
-    [TreatNullAs=NullString] attribute DOMString            text;
+    attribute DOMString text;
 };
-
diff --git a/core/html/HTMLTrackElement.idl b/core/html/HTMLTrackElement.idl
index 4127db6..da7e22e 100644
--- a/core/html/HTMLTrackElement.idl
+++ b/core/html/HTMLTrackElement.idl
@@ -28,8 +28,8 @@
 ] interface HTMLTrackElement : HTMLElement {
     attribute DOMString kind;
     [Reflect, URL, PerWorldBindings, ActivityLogging=SetterForIsolatedWorlds] attribute DOMString src;
-    attribute DOMString srclang;
-    attribute DOMString label;
+    [Reflect] attribute DOMString srclang;
+    [Reflect] attribute DOMString label;
     [Reflect] attribute boolean default;
 
     const unsigned short NONE = 0;
diff --git a/core/html/HTMLUListElement.idl b/core/html/HTMLUListElement.idl
index 1dc6b6d..d7d123a 100644
--- a/core/html/HTMLUListElement.idl
+++ b/core/html/HTMLUListElement.idl
@@ -19,6 +19,5 @@
 
 interface HTMLUListElement : HTMLElement {
     [Reflect] attribute boolean compact;
-    [Reflect, TreatNullAs=NullString] attribute DOMString type;
+    [Reflect] attribute DOMString type;
 };
-
diff --git a/core/html/HTMLVideoElement.idl b/core/html/HTMLVideoElement.idl
index 96fc5bf..4448cd2 100644
--- a/core/html/HTMLVideoElement.idl
+++ b/core/html/HTMLVideoElement.idl
@@ -35,11 +35,11 @@
     [MeasureAs=PrefixedVideoSupportsFullscreen] readonly attribute boolean webkitSupportsFullscreen;
     [MeasureAs=PrefixedVideoDisplayingFullscreen] readonly attribute boolean webkitDisplayingFullscreen;
 
-    [MeasureAs=PrefixedVideoEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=AccessForAllWorlds] void webkitEnterFullscreen();
+    [MeasureAs=PrefixedVideoEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=ForAllWorlds] void webkitEnterFullscreen();
     [MeasureAs=PrefixedVideoExitFullscreen] void webkitExitFullscreen();
 
     // Note the different capitalization of the "S" in FullScreen.
-    [MeasureAs=PrefixedVideoEnterFullScreen, ImplementedAs=webkitEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=AccessForAllWorlds] void webkitEnterFullScreen();
+    [MeasureAs=PrefixedVideoEnterFullScreen, ImplementedAs=webkitEnterFullscreen, RaisesException, PerWorldBindings, ActivityLogging=ForAllWorlds] void webkitEnterFullScreen();
     [MeasureAs=PrefixedVideoExitFullScreen, ImplementedAs=webkitExitFullscreen] void webkitExitFullScreen();
 
     // The number of frames that have been decoded and made available for
diff --git a/core/html/ImageData.idl b/core/html/ImageData.idl
index ca7d61c..0684799 100644
--- a/core/html/ImageData.idl
+++ b/core/html/ImageData.idl
@@ -27,7 +27,7 @@
  */
 
 [
-    CustomToV8
+    Custom=Wrap,
 ] interface ImageData {
     readonly attribute long width;
     readonly attribute long height;
diff --git a/core/html/MediaController.idl b/core/html/MediaController.idl
index 254bbc2..ad46115 100644
--- a/core/html/MediaController.idl
+++ b/core/html/MediaController.idl
@@ -24,15 +24,15 @@
  */
 
 [
-    RuntimeEnabled=Media,
     Constructor,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    RuntimeEnabled=Media,
 ] interface MediaController : EventTarget {
     readonly attribute TimeRanges buffered;
     readonly attribute TimeRanges seekable;
 
     readonly attribute double duration;
-    [SetterRaisesException] attribute double currentTime;
+    [RaisesException=Setter] attribute double currentTime;
 
     readonly attribute boolean paused;
     readonly attribute TimeRanges played;
@@ -44,6 +44,6 @@
     attribute double defaultPlaybackRate;
     attribute double playbackRate;
 
-    [SetterRaisesException] attribute double volume;
+    [RaisesException=Setter] attribute double volume;
     attribute boolean muted;
 };
diff --git a/core/html/MediaKeyError.idl b/core/html/MediaKeyError.idl
index 58fddc8..d746c4c 100644
--- a/core/html/MediaKeyError.idl
+++ b/core/html/MediaKeyError.idl
@@ -33,5 +33,5 @@
     const unsigned short MEDIA_KEYERR_HARDWARECHANGE = 5;
     const unsigned short MEDIA_KEYERR_DOMAIN = 6;
     readonly attribute unsigned short code;
-    [Conditional=ENCRYPTED_MEDIA_V2, RuntimeEnabled=EncryptedMedia] readonly attribute unsigned long systemCode;
+    [RuntimeEnabled=EncryptedMedia] readonly attribute unsigned long systemCode;
 };
diff --git a/core/html/MediaKeyEvent.idl b/core/html/MediaKeyEvent.idl
index c1e08c2..ec80808 100644
--- a/core/html/MediaKeyEvent.idl
+++ b/core/html/MediaKeyEvent.idl
@@ -24,15 +24,15 @@
  */
 
 [
+    EventConstructor,
     RuntimeEnabled=PrefixedEncryptedMedia,
-    ConstructorTemplate=Event
 ] interface MediaKeyEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString keySystem;
     [InitializedByEventConstructor] readonly attribute DOMString sessionId;
     [InitializedByEventConstructor] readonly attribute Uint8Array initData;
     [InitializedByEventConstructor] readonly attribute Uint8Array message;
     [InitializedByEventConstructor] readonly attribute DOMString defaultURL;
-    [InitializedByEventConstructor] readonly attribute MediaKeyError errorCode;
+    [InitializedByEventConstructor] readonly attribute MediaKeyError? errorCode;
     [InitializedByEventConstructor] readonly attribute unsigned short systemCode;
 };
 
diff --git a/core/html/VoidCallback.idl b/core/html/VoidCallback.idl
index d403ecc..970113b 100644
--- a/core/html/VoidCallback.idl
+++ b/core/html/VoidCallback.idl
@@ -24,5 +24,5 @@
  */
 
 callback interface VoidCallback {
-    boolean handleEvent();
+    void handleEvent();
 };
diff --git a/core/html/canvas/ArrayBufferView.idl b/core/html/canvas/ArrayBufferView.idl
index 5545731..478bf25 100644
--- a/core/html/canvas/ArrayBufferView.idl
+++ b/core/html/canvas/ArrayBufferView.idl
@@ -24,8 +24,8 @@
  */
 
 [
+    Custom=Wrap,
     NoInterfaceObject,
-    CustomToV8
 ] interface ArrayBufferView {
     readonly attribute ArrayBuffer buffer;
     readonly attribute unsigned long byteOffset;
diff --git a/core/html/canvas/CanvasRenderingContext.idl b/core/html/canvas/CanvasRenderingContext.idl
index 36a7911..ae89a5f 100644
--- a/core/html/canvas/CanvasRenderingContext.idl
+++ b/core/html/canvas/CanvasRenderingContext.idl
@@ -24,8 +24,8 @@
  */
 
 [
+    Custom=Wrap,
     NoInterfaceObject,
-    CustomToV8
 ] interface CanvasRenderingContext {
     readonly attribute HTMLCanvasElement canvas;
 };
diff --git a/core/html/canvas/CanvasRenderingContext2D.idl b/core/html/canvas/CanvasRenderingContext2D.idl
index 52b20e2..1c243a6 100644
--- a/core/html/canvas/CanvasRenderingContext2D.idl
+++ b/core/html/canvas/CanvasRenderingContext2D.idl
@@ -154,8 +154,8 @@
     [RaisesException] ImageData createImageData(ImageData? imagedata);
     [RaisesException] ImageData createImageData(float sw, float sh);
 
-    [Custom] attribute custom strokeStyle;
-    [Custom] attribute custom fillStyle;
+    [Custom] attribute object strokeStyle;
+    [Custom] attribute object fillStyle;
 
     // pixel manipulation
     [RaisesException] ImageData getImageData(float sx, float sy, float sw, float sh);
diff --git a/core/html/canvas/DataView.idl b/core/html/canvas/DataView.idl
index 5847f9c..a9b9fac 100644
--- a/core/html/canvas/DataView.idl
+++ b/core/html/canvas/DataView.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    GlobalContext=Window&WorkerGlobalScope,
+    Custom=Wrap,
     CustomConstructor(ArrayBuffer buffer, optional unsigned long byteOffset, optional unsigned long byteLength),
-    CustomToV8
+    GlobalContext=Window&WorkerGlobalScope,
 ] interface DataView : ArrayBufferView {
     // All these methods raise an exception if they would read or write beyond the end of the view.
 
diff --git a/core/html/canvas/WebGLContextAttributes.idl b/core/html/canvas/WebGLContextAttributes.idl
index d971644..0fe4662 100644
--- a/core/html/canvas/WebGLContextAttributes.idl
+++ b/core/html/canvas/WebGLContextAttributes.idl
@@ -33,4 +33,5 @@
     attribute boolean antialias;
     attribute boolean premultipliedAlpha;
     attribute boolean preserveDrawingBuffer;
+    attribute boolean failIfMajorPerformanceCaveat;
 };
diff --git a/core/html/canvas/WebGLContextEvent.idl b/core/html/canvas/WebGLContextEvent.idl
index f6a3092..18266e5 100644
--- a/core/html/canvas/WebGLContextEvent.idl
+++ b/core/html/canvas/WebGLContextEvent.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface WebGLContextEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString statusMessage;
 };
diff --git a/core/html/ime/InputMethodContext.idl b/core/html/ime/InputMethodContext.idl
index 1c70178..8ce8c4a 100644
--- a/core/html/ime/InputMethodContext.idl
+++ b/core/html/ime/InputMethodContext.idl
@@ -33,8 +33,10 @@
     readonly attribute Composition composition;
     readonly attribute DOMString locale;
     readonly attribute HTMLElement target;
+    readonly attribute unsigned long compositionStartOffset;
+    readonly attribute unsigned long compositionEndOffset;
+
     void confirmComposition();
-    void setCaretRectangle(Node anchor, long x, long y, long w, long h);
 
     attribute EventHandler oncandidatewindowshow;
     attribute EventHandler oncandidatewindowupdate;
diff --git a/core/html/track/TextTrack.idl b/core/html/track/TextTrack.idl
index 1b9eadd..a64462d 100644
--- a/core/html/track/TextTrack.idl
+++ b/core/html/track/TextTrack.idl
@@ -33,6 +33,8 @@
     readonly attribute DOMString label;
     readonly attribute DOMString language;
 
+    readonly attribute DOMString id;
+
              attribute TextTrackMode mode;
 
     readonly attribute TextTrackCueList cues;
diff --git a/core/html/track/TextTrackCue.idl b/core/html/track/TextTrackCue.idl
index db7112a..efc18e3 100644
--- a/core/html/track/TextTrackCue.idl
+++ b/core/html/track/TextTrackCue.idl
@@ -24,30 +24,17 @@
  */
 
 [
+    Custom=ToV8,
+    CustomConstructor(double startTime, double endTime, DOMString text),
     RuntimeEnabled=VideoTrack,
-    Constructor(double startTime, double endTime, DOMString text),
-    ConstructorCallWith=Document
 ] interface TextTrackCue : EventTarget {
     readonly attribute TextTrack track;
 
     attribute DOMString id;
-    [SetterRaisesException] attribute double startTime;
-    [SetterRaisesException] attribute double endTime;
+    [RaisesException=Setter] attribute double startTime;
+    [RaisesException=Setter] attribute double endTime;
     attribute boolean pauseOnExit;
 
-    [SetterRaisesException] attribute DOMString vertical;
-    attribute boolean snapToLines;
-    [SetterRaisesException] attribute long line;
-    [SetterRaisesException] attribute long position;
-    [SetterRaisesException] attribute long size;
-    [SetterRaisesException] attribute DOMString align;
-
-    attribute DOMString text;
-    DocumentFragment getCueAsHTML();
-
     attribute EventHandler onenter;
     attribute EventHandler onexit;
-
-    [RuntimeEnabled=WebVTTRegions] attribute DOMString regionId;
 };
-
diff --git a/core/html/track/TextTrackList.idl b/core/html/track/TextTrackList.idl
index 236029e..bbcd2d9 100644
--- a/core/html/track/TextTrackList.idl
+++ b/core/html/track/TextTrackList.idl
@@ -24,12 +24,15 @@
  */
 
 [
+    GenerateVisitDOMWrapper=owner,
     RuntimeEnabled=VideoTrack,
-    GenerateIsReachable=owner
 ] interface TextTrackList : EventTarget {
     readonly attribute unsigned long length;
     getter TextTrack item(unsigned long index);
+    TextTrack getTrackById(DOMString id);
 
     attribute EventHandler onaddtrack;
+    attribute EventHandler onchange;
+    attribute EventHandler onremovetrack;
 };
 
diff --git a/core/html/track/TrackEvent.idl b/core/html/track/TrackEvent.idl
index 3a164cd..eed9238 100644
--- a/core/html/track/TrackEvent.idl
+++ b/core/html/track/TrackEvent.idl
@@ -25,8 +25,8 @@
 
 [
     RuntimeEnabled=VideoTrack,
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface TrackEvent : Event {
-    [InitializedByEventConstructor, CustomGetter] readonly attribute object track;
+    [InitializedByEventConstructor, Custom=Getter] readonly attribute object track;
 };
 
diff --git a/core/html/track/vtt/VTTCue.idl b/core/html/track/vtt/VTTCue.idl
new file mode 100644
index 0000000..8b95817
--- /dev/null
+++ b/core/html/track/vtt/VTTCue.idl
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2013, Opera Software ASA. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Opera Software ASA nor the names of its
+ *    contributors may be used to endorse or promote products derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    Constructor(double startTime, double endTime, DOMString text),
+    ConstructorCallWith=Document,
+    RuntimeEnabled=VideoTrack,
+] interface VTTCue : TextTrackCue {
+    [RuntimeEnabled=WebVTTRegions] attribute DOMString regionId;
+    [RaisesException=Setter] attribute DOMString vertical;
+    attribute boolean snapToLines;
+    [RaisesException=Setter] attribute long line;
+    [RaisesException=Setter] attribute long position;
+    [RaisesException=Setter] attribute long size;
+    [RaisesException=Setter] attribute DOMString align;
+    attribute DOMString text;
+    DocumentFragment getCueAsHTML();
+};
diff --git a/core/html/track/VTTRegion.idl b/core/html/track/vtt/VTTRegion.idl
similarity index 77%
rename from core/html/track/VTTRegion.idl
rename to core/html/track/vtt/VTTRegion.idl
index d3793af..398f740 100644
--- a/core/html/track/VTTRegion.idl
+++ b/core/html/track/vtt/VTTRegion.idl
@@ -24,18 +24,18 @@
  */
 
 [
-    Constructor(),
+    Constructor,
     RuntimeEnabled=WebVTTRegions
 ] interface VTTRegion {
     readonly attribute TextTrack track;
 
     attribute DOMString id;
-    [SetterRaisesException] attribute double width;
-    [SetterRaisesException] attribute long height;
-    [SetterRaisesException] attribute double regionAnchorX;
-    [SetterRaisesException] attribute double regionAnchorY;
-    [SetterRaisesException] attribute double viewportAnchorX;
-    [SetterRaisesException] attribute double viewportAnchorY;
-    [SetterRaisesException] attribute DOMString scroll;
+    [RaisesException=Setter] attribute double width;
+    [RaisesException=Setter] attribute long height;
+    [RaisesException=Setter] attribute double regionAnchorX;
+    [RaisesException=Setter] attribute double regionAnchorY;
+    [RaisesException=Setter] attribute double viewportAnchorX;
+    [RaisesException=Setter] attribute double viewportAnchorY;
+    [RaisesException=Setter] attribute DOMString scroll;
 };
 
diff --git a/core/html/track/VTTRegionList.idl b/core/html/track/vtt/VTTRegionList.idl
similarity index 100%
rename from core/html/track/VTTRegionList.idl
rename to core/html/track/vtt/VTTRegionList.idl
diff --git a/core/inspector/InspectorFrontendHost.idl b/core/inspector/InspectorFrontendHost.idl
index d753646..467e7aa 100644
--- a/core/inspector/InspectorFrontendHost.idl
+++ b/core/inspector/InspectorFrontendHost.idl
@@ -33,7 +33,6 @@
 [
     NoInterfaceObject
 ] interface InspectorFrontendHost {
-    void closeWindow();
     void setZoomFactor(float zoom);
     void inspectedURLChanged(DOMString newURL);
 
@@ -55,6 +54,7 @@
     DOMString getSelectionForegroundColor();
 
     DOMFileSystem isolatedFileSystem(DOMString fileSystemId, DOMString registeredName);
+    void upgradeDraggedFileSystemPermissions(DOMFileSystem domFileSystem);
 
     boolean isUnderTest();
 };
diff --git a/core/inspector/InspectorInstrumentation.idl b/core/inspector/InspectorInstrumentation.idl
index b333401..02e8591 100644
--- a/core/inspector/InspectorInstrumentation.idl
+++ b/core/inspector/InspectorInstrumentation.idl
@@ -91,6 +91,21 @@
     [DOM, DOMDebugger, Inline=FastReturn]
     void didInvalidateStyleAttr([Keep] Node*);
 
+    [DOM, Inline=FastReturn]
+    void pseudoStateChanged([Keep] Node*);
+
+    [CSS, Inline=FastReturn]
+    void willMutateRules(CSSStyleSheet*);
+
+    [CSS, Inline=FastReturn]
+    void didMutateRules([Keep] CSSStyleSheet*);
+
+    [CSS, Inline=FastReturn]
+    void willMutateStyle(CSSStyleDeclaration*);
+
+    [CSS, Inline=FastReturn]
+    void didMutateStyle([Keep] CSSStyleDeclaration*, bool);
+
     [CSS, Inline=FastReturn]
     void activeStyleSheetsUpdated([Keep] Document*, const Vector<RefPtr<StyleSheet> >& newSheets);
 
@@ -133,10 +148,10 @@
     [Timeline, Inline=FastReturn]
     void didScheduleResourceRequest([Keep] Document*, const String& url);
 
-    [DOMDebugger, Timeline, Inline=FastReturn]
+    [DOMDebugger, Debugger, Timeline, Inline=FastReturn]
     void didInstallTimer([Keep] ExecutionContext*, int timerId, int timeout, bool singleShot);
 
-    [DOMDebugger, Timeline, Inline=FastReturn]
+    [DOMDebugger, Debugger, Timeline, Inline=FastReturn]
     void didRemoveTimer([Keep] ExecutionContext*, int timerId);
 
     [Timeline, Inline=FastReturn]
@@ -181,7 +196,7 @@
     [PageRuntime, Inline=FastReturn]
     void didCreateIsolatedContext([Keep] Frame*, ScriptState*, SecurityOrigin*);
 
-    [DOMDebugger, Timeline, Inline=FastReturn]
+    [DOMDebugger, Debugger, Timeline, Inline=FastReturn]
     InspectorInstrumentationCookie willFireTimer([Keep] ExecutionContext*, int timerId);
 
     [Debugger, Timeline, Inline=FastReturn]
@@ -221,10 +236,10 @@
     void didScrollLayer(RenderObject*);
 
     [Timeline, Inline=FastReturn]
-    void willPaint([Keep] RenderObject*);
+    void willPaint([Keep] RenderObject*, const GraphicsLayer*);
 
     [Timeline, Page, LayerTree, Inline=FastReturn]
-    void didPaint([Keep] RenderObject*, GraphicsContext*, const LayoutRect&);
+    void didPaint([Keep] RenderObject*, const GraphicsLayer*, GraphicsContext*, const LayoutRect&);
 
     [Timeline, Inline=FastReturn]
     void willPaintImage([Keep] RenderImage*);
@@ -248,6 +263,9 @@
     void applyUserAgentOverride(Frame*, String* userAgent);
 
     [Page, Inline=FastReturn]
+    bool applyViewportStyleOverride(Document*, StyleResolver*);
+
+    [Page, Inline=FastReturn]
     void applyEmulatedMedia(Frame*, String* media);
 
     [Timeline, Resource]
@@ -264,11 +282,8 @@
     [Timeline, Inline=FastReturn]
     void didReceiveResourceData(const InspectorInstrumentationCookie&);
 
-    [Timeline]
-    InspectorInstrumentationCookie willReceiveResourceResponse([Keep] Frame*, unsigned long identifier, const ResourceResponse&);
-
     [Timeline, Resource, Console] // Console should come AFTER Resource notification, front-end relies on this.
-    void didReceiveResourceResponse(const InspectorInstrumentationCookie&, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
+    void didReceiveResourceResponse([Keep] Frame*, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
 
     [Inline=Forward]
     void continueAfterXFrameOptionsDenied(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r);
@@ -286,7 +301,7 @@
     void didFinishLoading(Frame* frame, unsigned long identifier, DocumentLoader*, double finishTime);
 
     [Resource]
-    void didReceiveCORSRedirectResponse(Frame*, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
+    void didReceiveCORSRedirectResponse([Keep] Frame*, unsigned long identifier, DocumentLoader*, const ResourceResponse&, ResourceLoader*);
 
     [Timeline, Resource, Console] // Console should come AFTER Resource notification, front-end relies on this.
     void didFailLoading(Frame* frame, unsigned long identifier, DocumentLoader*, const ResourceError&);
@@ -295,16 +310,13 @@
     void documentThreadableLoaderStartedLoadingForClient(ExecutionContext*, unsigned long identifier, ThreadableLoaderClient* client);
 
     [Resource]
-    void willLoadXHR(ExecutionContext*, ThreadableLoaderClient* client, const String& method, const KURL& url, bool async, PassRefPtr<FormData>, const HTTPHeaderMap& headers, bool includeCredentials);
+    void willLoadXHR(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, const AtomicString& method, const KURL& url, bool async, PassRefPtr<FormData>, const HTTPHeaderMap& headers, bool includeCredentials);
 
     [Resource]
-    void didFailXHRLoading(ExecutionContext*, ThreadableLoaderClient* client);
+    void didFailXHRLoading(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client);
 
     [Console, Resource]
-    void didFinishXHRLoading(ExecutionContext*, ThreadableLoaderClient* client, unsigned long identifier, ScriptString sourceString, const String& url, const String& sendURL, unsigned sendLineNumber);
-
-    [Resource]
-    void didReceiveXHRResponse(ExecutionContext*, unsigned long identifier);
+    void didFinishXHRLoading(ExecutionContext*, XMLHttpRequest* xhr, ThreadableLoaderClient* client, unsigned long identifier, ScriptString sourceString, const String& url, const String& sendURL, unsigned sendLineNumber);
 
     [Resource]
     void scriptImported(ExecutionContext*, unsigned long identifier, const String& sourceString);
@@ -327,9 +339,6 @@
     [Canvas, Page, CSS]
     void frameDetachedFromParent([Keep] Frame*);
 
-    [Page, Inline=FastReturn]
-    void childDocumentOpened([Keep] Document*);
-
     [Console, Resource, CSS, Database, DOM, Inspector, Canvas, Page, PageDebugger]
     void didCommitLoad([Keep] Frame*, DocumentLoader*);
 
@@ -366,16 +375,16 @@
     [Timeline, Inline=FastReturn]
     void didWriteHTML(const InspectorInstrumentationCookie&, unsigned endLine);
 
-    [DOMDebugger, Timeline]
+    [DOMDebugger, Debugger, Timeline]
     void didRequestAnimationFrame([Keep] Document*, int callbackId);
 
-    [DOMDebugger, Timeline]
+    [DOMDebugger, Debugger, Timeline]
     void didCancelAnimationFrame([Keep] Document*, int callbackId);
 
-    [DOMDebugger, Timeline]
+    [DOMDebugger, Debugger, Timeline]
     InspectorInstrumentationCookie willFireAnimationFrame([Keep] Document*, int callbackId);
 
-    [Timeline, Inline=FastReturn]
+    [Timeline, Debugger, Inline=FastReturn]
     void didFireAnimationFrame(const InspectorInstrumentationCookie&);
 
     [DOMStorage, Inline=FastReturn]
@@ -443,7 +452,6 @@
 
 #include "core/inspector/ScriptArguments.h"
 #include "core/inspector/ScriptCallStack.h"
-#include "core/inspector/ScriptProfile.h"
 
     // FIXME: Convert to ScriptArguments to match non-worker context.
     // Use the same implementation as above as a similar method dispatched on Page.
@@ -475,8 +483,11 @@
     [Console, Inline=FastReturn]
     void consoleTimelineEnd([Keep] ExecutionContext* context, const String& title, ScriptState* state);
 
-    [Profiler]
-    void addProfile(ExecutionContext* context, PassRefPtr<ScriptProfile> profile, PassRefPtr<ScriptCallStack> callStack);
+    [Profiler, Inline=FastReturn]
+    void consoleProfile(ExecutionContext* context, const String& title, ScriptState* state);
+
+    [Profiler, Inline=FastReturn]
+    void consoleProfileEnd(ExecutionContext* context, const String& title);
 }
 
 interface InspectorDatabaseInstrumentation {
@@ -498,13 +509,10 @@
     GeolocationPosition* overrideGeolocationPosition(Page* page, [DefaultReturn] GeolocationPosition* position);
 
     [Page, Inline=FastReturn]
-    float overrideTextAutosizingFontScaleFactor(Page* page, [DefaultReturn] float fontScaleFactor);
+    float overrideFontScaleFactor(Page* page, [DefaultReturn] float fontScaleFactor);
 
     [Page, Inline=FastReturn]
     bool overrideTextAutosizing(Page* page, [DefaultReturn] bool textAutosizing);
-
-    [Profiler]
-    String getCurrentUserInitiatedProfileName(ExecutionContext* context, bool incrementProfileNumber);
 }
 
 
diff --git a/core/inspector/JavaScriptCallFrame.idl b/core/inspector/JavaScriptCallFrame.idl
index fa31924..1afad5a 100644
--- a/core/inspector/JavaScriptCallFrame.idl
+++ b/core/inspector/JavaScriptCallFrame.idl
@@ -39,17 +39,18 @@
     [Custom] any restart();
 
     // Only declarative scope (local, with and catch) is accepted. Returns undefined.
-    [Custom] any setVariableValue(long scopeIndex, DOMString variableName, any newValue);
+    any setVariableValue([Default=Undefined] optional long scopeIndex, [TreatNullAs=NullString, TreatUndefinedAs=NullString, Default=Undefined] optional DOMString variableName, [Default=Undefined] optional any newValue);
 
     readonly attribute JavaScriptCallFrame caller;
     readonly attribute long sourceID;
     readonly attribute long line;
     readonly attribute long column;
-    [CustomGetter] readonly attribute Array scopeChain;
+    [Custom=Getter] readonly attribute object scopeChain;
     [Custom] unsigned short scopeType(long scopeIndex);
-    [CustomGetter] readonly attribute Object thisObject;
+    [Custom=Getter] readonly attribute object thisObject;
     readonly attribute DOMString stepInPositions;
     readonly attribute DOMString functionName;
-    [CustomGetter] readonly attribute DOMString type;
+    [Custom=Getter] readonly attribute DOMString type;
+    readonly attribute boolean isAtReturn;
+    [Custom=Getter] readonly attribute any returnValue;
 };
-
diff --git a/core/page/EventSource.idl b/core/page/EventSource.idl
index b43938d..3562791 100644
--- a/core/page/EventSource.idl
+++ b/core/page/EventSource.idl
@@ -30,11 +30,11 @@
  */
 
 [
-    GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor(DOMString url, optional Dictionary eventSourceInit),
     ConstructorCallWith=ExecutionContext,
-    ConstructorRaisesException
+    GlobalContext=Window&WorkerGlobalScope,
+    RaisesException=Constructor,
 ] interface EventSource : EventTarget {
 
     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
diff --git a/core/page/PagePopupController.idl b/core/page/PagePopupController.idl
index 069098c..0a4fbd4 100644
--- a/core/page/PagePopupController.idl
+++ b/core/page/PagePopupController.idl
@@ -36,7 +36,7 @@
     void setValue(DOMString value);
     void closePopup();
     DOMString localizeNumberString(DOMString numberString);
-    [Conditional=CALENDAR_PICKER] DOMString formatMonth(long year, long zeroBaseMonth);
-    [Conditional=CALENDAR_PICKER] DOMString formatShortMonth(long year, long zeroBaseMonth);
+    DOMString formatMonth(long year, long zeroBaseMonth);
+    DOMString formatShortMonth(long year, long zeroBaseMonth);
     void histogramEnumeration(DOMString name, long sample, long boundaryValue);
 };
diff --git a/core/storage/Storage.idl b/core/storage/Storage.idl
index 15cdf26..90309fe 100644
--- a/core/storage/Storage.idl
+++ b/core/storage/Storage.idl
@@ -30,11 +30,11 @@
     [RaisesException, ImplementedAs=anonymousNamedGetter] getter DOMString(DOMString name);
     [RaisesException, ImplementedAs=anonymousNamedSetter] setter DOMString(DOMString name, DOMString value);
     [ImplementedAs=anonymousNamedDeleter, RaisesException] deleter boolean (DOMString name);
-    [NotEnumerable, GetterRaisesException] readonly attribute unsigned long length;
+    [NotEnumerable, RaisesException=Getter] readonly attribute unsigned long length;
     [NotEnumerable, TreatReturnedNullStringAs=Null, RaisesException] DOMString key(unsigned long index);
-    [NotEnumerable, TreatReturnedNullStringAs=Null, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] DOMString getItem(DOMString key);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void setItem(DOMString key, DOMString data);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void removeItem(DOMString key);
-    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void clear();
+    [NotEnumerable, TreatReturnedNullStringAs=Null, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] DOMString getItem(DOMString key);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void setItem(DOMString key, DOMString data);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void removeItem(DOMString key);
+    [NotEnumerable, RaisesException, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void clear();
 };
 
diff --git a/core/storage/StorageEvent.idl b/core/storage/StorageEvent.idl
index f7b4e8b..effe79f 100644
--- a/core/storage/StorageEvent.idl
+++ b/core/storage/StorageEvent.idl
@@ -24,13 +24,13 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface StorageEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString key;
     [InitializedByEventConstructor, TreatReturnedNullStringAs=Null] readonly attribute DOMString oldValue;
     [InitializedByEventConstructor, TreatReturnedNullStringAs=Null] readonly attribute DOMString newValue;
     [InitializedByEventConstructor] readonly attribute DOMString url;
-    [InitializedByEventConstructor] readonly attribute Storage storageArea;
+    [InitializedByEventConstructor] readonly attribute Storage? storageArea;
 
     void initStorageEvent([Default=Undefined] optional DOMString typeArg,
                           [Default=Undefined] optional boolean canBubbleArg,
diff --git a/core/svg/SVGAltGlyphElement.idl b/core/svg/SVGAltGlyphElement.idl
index 999598e..e3f9915 100644
--- a/core/svg/SVGAltGlyphElement.idl
+++ b/core/svg/SVGAltGlyphElement.idl
@@ -26,8 +26,8 @@
 [
     Conditional=SVG_FONTS
 ] interface SVGAltGlyphElement : SVGTextPositioningElement {
-    [SetterRaisesException] attribute DOMString glyphRef;
-    [SetterRaisesException] attribute DOMString format;
+    [RaisesException=Setter] attribute DOMString glyphRef;
+    [RaisesException=Setter] attribute DOMString format;
 };
 
 SVGAltGlyphElement implements SVGURIReference;
diff --git a/core/svg/SVGAngle.idl b/core/svg/SVGAngle.idl
index 4501978..665f6ea 100644
--- a/core/svg/SVGAngle.idl
+++ b/core/svg/SVGAngle.idl
@@ -32,7 +32,7 @@
     [StrictTypeChecking] attribute float value;
     [StrictTypeChecking] attribute float valueInSpecifiedUnits;
 
-    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString valueAsString;
+    [TreatNullAs=NullString, RaisesException=Setter] attribute DOMString valueAsString;
 
     [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
 
diff --git a/core/svg/SVGAnimatedBoolean.idl b/core/svg/SVGAnimatedBoolean.idl
index fa2ca08..7fc919c 100644
--- a/core/svg/SVGAnimatedBoolean.idl
+++ b/core/svg/SVGAnimatedBoolean.idl
@@ -24,7 +24,7 @@
  */
 
 interface SVGAnimatedBoolean {
-    [StrictTypeChecking, SetterRaisesException] attribute boolean baseVal;
+    [StrictTypeChecking, RaisesException=Setter] attribute boolean baseVal;
     readonly attribute boolean animVal;
 };
 
diff --git a/core/svg/SVGAnimatedEnumeration.idl b/core/svg/SVGAnimatedEnumeration.idl
index cb04e75..e51c9c1 100644
--- a/core/svg/SVGAnimatedEnumeration.idl
+++ b/core/svg/SVGAnimatedEnumeration.idl
@@ -24,7 +24,7 @@
  */
 
 interface SVGAnimatedEnumeration {
-    [StrictTypeChecking, SetterRaisesException] attribute unsigned short baseVal;
+    [StrictTypeChecking, RaisesException=Setter] attribute unsigned short baseVal;
     readonly attribute unsigned short animVal;
 };
 
diff --git a/core/svg/SVGAnimatedInteger.idl b/core/svg/SVGAnimatedInteger.idl
index ae72080..3c31681 100644
--- a/core/svg/SVGAnimatedInteger.idl
+++ b/core/svg/SVGAnimatedInteger.idl
@@ -24,7 +24,7 @@
  */
 
 interface SVGAnimatedInteger {
-    [StrictTypeChecking, SetterRaisesException] attribute long baseVal;
+    [StrictTypeChecking, RaisesException=Setter] attribute long baseVal;
     readonly attribute long animVal;
 };
 
diff --git a/core/svg/SVGAnimatedNumber.idl b/core/svg/SVGAnimatedNumber.idl
index 6e3485c..e8cc9ba 100644
--- a/core/svg/SVGAnimatedNumber.idl
+++ b/core/svg/SVGAnimatedNumber.idl
@@ -25,7 +25,7 @@
  */
 
 interface SVGAnimatedNumber {
-    [StrictTypeChecking, SetterRaisesException] attribute float baseVal;
+    [StrictTypeChecking, RaisesException=Setter] attribute float baseVal;
     readonly attribute float animVal;
 };
 
diff --git a/core/svg/SVGAnimatedString.idl b/core/svg/SVGAnimatedString.idl
index 27e27dc..d1fbf52 100644
--- a/core/svg/SVGAnimatedString.idl
+++ b/core/svg/SVGAnimatedString.idl
@@ -24,7 +24,7 @@
  */
 
 interface SVGAnimatedString {
-    [SetterRaisesException] attribute DOMString baseVal;
+    [RaisesException=Setter] attribute DOMString baseVal;
     readonly attribute DOMString animVal;
 };
 
diff --git a/core/svg/SVGCircleElement.idl b/core/svg/SVGCircleElement.idl
index 00ef676..67f3d44 100644
--- a/core/svg/SVGCircleElement.idl
+++ b/core/svg/SVGCircleElement.idl
@@ -24,7 +24,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGCircleElement : SVGGraphicsElement {
+interface SVGCircleElement : SVGGeometryElement {
     readonly attribute SVGAnimatedLength cx;
     readonly attribute SVGAnimatedLength cy;
     readonly attribute SVGAnimatedLength r;
diff --git a/core/svg/SVGElement.idl b/core/svg/SVGElement.idl
index 74d4db4..d27e2ab 100644
--- a/core/svg/SVGElement.idl
+++ b/core/svg/SVGElement.idl
@@ -21,7 +21,7 @@
  */
 
 [
-    CustomToV8
+    Custom=Wrap,
 ] interface SVGElement : Element {
     [TreatNullAs=NullString] attribute DOMString xmlbase;
     readonly attribute SVGSVGElement ownerSVGElement;
diff --git a/core/svg/SVGEllipseElement.idl b/core/svg/SVGEllipseElement.idl
index a9ea183..fcd09c7 100644
--- a/core/svg/SVGEllipseElement.idl
+++ b/core/svg/SVGEllipseElement.idl
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGEllipseElement : SVGGraphicsElement {
+interface SVGEllipseElement : SVGGeometryElement {
     readonly attribute SVGAnimatedLength cx;
     readonly attribute SVGAnimatedLength cy;
     readonly attribute SVGAnimatedLength rx;
diff --git a/core/svg/SVGGeometryElement.idl b/core/svg/SVGGeometryElement.idl
new file mode 100644
index 0000000..d783758
--- /dev/null
+++ b/core/svg/SVGGeometryElement.idl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * 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.
+ */
+
+interface SVGGeometryElement : SVGGraphicsElement {
+    boolean isPointInFill(SVGPoint point);
+    boolean isPointInStroke(SVGPoint point);
+};
diff --git a/core/svg/SVGGraphicsElement.idl b/core/svg/SVGGraphicsElement.idl
index 8732215..eed23aa 100644
--- a/core/svg/SVGGraphicsElement.idl
+++ b/core/svg/SVGGraphicsElement.idl
@@ -31,8 +31,8 @@
 interface SVGGraphicsElement : SVGElement {
     readonly attribute SVGAnimatedTransformList transform;
 
-    readonly attribute SVGElement nearestViewportElement;
-    readonly attribute SVGElement farthestViewportElement;
+    [MeasureAs=SVGLocatableNearestViewportElement] readonly attribute SVGElement nearestViewportElement;
+    [MeasureAs=SVGLocatableFarthestViewportElement] readonly attribute SVGElement farthestViewportElement;
 
     SVGRect   getBBox();
     SVGRect   getStrokeBBox();
diff --git a/core/svg/SVGLength.idl b/core/svg/SVGLength.idl
index e073b1a..4d29af7 100644
--- a/core/svg/SVGLength.idl
+++ b/core/svg/SVGLength.idl
@@ -35,10 +35,10 @@
     const unsigned short SVG_LENGTHTYPE_PC         = 10;
 
     readonly attribute unsigned short unitType;
-    [Custom, StrictTypeChecking, GetterRaisesException, SetterRaisesException] attribute float value;
+    [Custom, StrictTypeChecking, RaisesException] attribute float value;
 
     [StrictTypeChecking] attribute float valueInSpecifiedUnits;
-    [TreatNullAs=NullString, StrictTypeChecking, SetterRaisesException] attribute DOMString valueAsString;
+    [TreatNullAs=NullString, StrictTypeChecking, RaisesException=Setter] attribute DOMString valueAsString;
 
     [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType,
                                                      float valueInSpecifiedUnits);
diff --git a/core/svg/SVGLineElement.idl b/core/svg/SVGLineElement.idl
index 9df8fe6..a12e80b 100644
--- a/core/svg/SVGLineElement.idl
+++ b/core/svg/SVGLineElement.idl
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGLineElement : SVGGraphicsElement {
+interface SVGLineElement : SVGGeometryElement {
     readonly attribute SVGAnimatedLength x1;
     readonly attribute SVGAnimatedLength y1;
     readonly attribute SVGAnimatedLength x2;
diff --git a/core/svg/SVGPathElement.idl b/core/svg/SVGPathElement.idl
index 5d75b70..297b5b1 100644
--- a/core/svg/SVGPathElement.idl
+++ b/core/svg/SVGPathElement.idl
@@ -24,7 +24,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGPathElement : SVGGraphicsElement {
+interface SVGPathElement : SVGGeometryElement {
     readonly attribute SVGAnimatedNumber pathLength;
 
     float getTotalLength();
diff --git a/core/svg/SVGPathSeg.idl b/core/svg/SVGPathSeg.idl
index 4ca8a2c..60ed633 100644
--- a/core/svg/SVGPathSeg.idl
+++ b/core/svg/SVGPathSeg.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    CustomToV8
+    Custom=Wrap,
 ] interface SVGPathSeg {
     // Path Segment Types
     const unsigned short PATHSEG_UNKNOWN = 0;
diff --git a/core/svg/SVGPoint.idl b/core/svg/SVGPoint.idl
index 19606d6..d8945c9 100644
--- a/core/svg/SVGPoint.idl
+++ b/core/svg/SVGPoint.idl
@@ -24,6 +24,6 @@
     [StrictTypeChecking] attribute float x;
     [StrictTypeChecking] attribute float y;
 
-    [StrictTypeChecking] SVGPoint matrixTransform(SVGMatrix matrix);
+    [MeasureAs=SVGPointMatrixTransform, StrictTypeChecking] SVGPoint matrixTransform(SVGMatrix matrix);
 };
 
diff --git a/core/svg/SVGPolygonElement.idl b/core/svg/SVGPolygonElement.idl
index 735067b..be639f1 100644
--- a/core/svg/SVGPolygonElement.idl
+++ b/core/svg/SVGPolygonElement.idl
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGPolygonElement : SVGGraphicsElement {
+interface SVGPolygonElement : SVGGeometryElement {
     readonly attribute SVGPointList points;
     readonly attribute SVGPointList animatedPoints;
 };
diff --git a/core/svg/SVGPolylineElement.idl b/core/svg/SVGPolylineElement.idl
index a7eefed..1fd499b 100644
--- a/core/svg/SVGPolylineElement.idl
+++ b/core/svg/SVGPolylineElement.idl
@@ -23,7 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGPolylineElement : SVGGraphicsElement {
+interface SVGPolylineElement : SVGGeometryElement {
     readonly attribute SVGPointList points;
     readonly attribute SVGPointList animatedPoints;
 };
diff --git a/core/svg/SVGPreserveAspectRatio.idl b/core/svg/SVGPreserveAspectRatio.idl
index 178f1a0..477369e 100644
--- a/core/svg/SVGPreserveAspectRatio.idl
+++ b/core/svg/SVGPreserveAspectRatio.idl
@@ -42,8 +42,8 @@
     const unsigned short SVG_MEETORSLICE_MEET = 1;
     const unsigned short SVG_MEETORSLICE_SLICE = 2;
 
-    [StrictTypeChecking, SetterRaisesException] attribute unsigned short align;
+    [StrictTypeChecking, RaisesException=Setter] attribute unsigned short align;
 
-    [StrictTypeChecking, SetterRaisesException] attribute unsigned short meetOrSlice;
+    [StrictTypeChecking, RaisesException=Setter] attribute unsigned short meetOrSlice;
 };
 
diff --git a/core/svg/SVGRectElement.idl b/core/svg/SVGRectElement.idl
index 42fe063..a3cf85e 100644
--- a/core/svg/SVGRectElement.idl
+++ b/core/svg/SVGRectElement.idl
@@ -24,7 +24,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-interface SVGRectElement : SVGGraphicsElement {
+interface SVGRectElement : SVGGeometryElement {
     readonly attribute SVGAnimatedLength x;
     readonly attribute SVGAnimatedLength y;
     readonly attribute SVGAnimatedLength width;
diff --git a/core/svg/SVGRenderingIntent.idl b/core/svg/SVGRenderingIntent.idl
index 5c08153..4092cda 100644
--- a/core/svg/SVGRenderingIntent.idl
+++ b/core/svg/SVGRenderingIntent.idl
@@ -23,9 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    DoNotGenerateToV8
-] interface SVGRenderingIntent {
+interface SVGRenderingIntent {
     // Rendering Intent Types
     const unsigned short RENDERING_INTENT_UNKNOWN               = 0;
     const unsigned short RENDERING_INTENT_AUTO                  = 1;
@@ -34,4 +32,3 @@
     const unsigned short RENDERING_INTENT_SATURATION            = 4;
     const unsigned short RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5;
 };
-
diff --git a/core/svg/SVGUnitTypes.idl b/core/svg/SVGUnitTypes.idl
index 22817c2..5f5ec2e 100644
--- a/core/svg/SVGUnitTypes.idl
+++ b/core/svg/SVGUnitTypes.idl
@@ -23,12 +23,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    DoNotGenerateToV8
-] interface SVGUnitTypes {
+interface SVGUnitTypes {
     // Unit Types
     const unsigned short SVG_UNIT_TYPE_UNKNOWN           = 0;
     const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE    = 1;
     const unsigned short SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2;
 };
-
diff --git a/core/svg/SVGViewSpec.idl b/core/svg/SVGViewSpec.idl
index ab57e7e..80b1d80 100644
--- a/core/svg/SVGViewSpec.idl
+++ b/core/svg/SVGViewSpec.idl
@@ -32,7 +32,7 @@
       readonly attribute DOMString viewTargetString;
 
       // SVGZoomAndPan
-      [SetterRaisesException] attribute unsigned short zoomAndPan;
+      [RaisesException=Setter] attribute unsigned short zoomAndPan;
 };
 
 SVGViewSpec implements SVGFitToViewBox;
diff --git a/core/testing/InternalSettings.idl b/core/testing/InternalSettings.idl
index 5ac9133..d4f5984 100644
--- a/core/testing/InternalSettings.idl
+++ b/core/testing/InternalSettings.idl
@@ -38,7 +38,7 @@
     [RaisesException] void setPictographFontFamily(DOMString family, DOMString script);
     [RaisesException] void setTextAutosizingEnabled(boolean enabled);
     [RaisesException] void setTextAutosizingWindowSizeOverride(long width, long height);
-    [RaisesException] void setTextAutosizingFontScaleFactor(float fontScaleFactor);
+    [RaisesException] void setAccessibilityFontScaleFactor(float fontScaleFactor);
     [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
     [RaisesException] void setEditingBehavior(DOMString behavior);
     [RaisesException] void setPasswordGenerationDecorationEnabled(boolean enabled);
@@ -50,6 +50,10 @@
     // overflow scroll is ready (crbug.com/254111).
     [RaisesException] void setCompositorDrivenAcceleratedScrollingEnabled(boolean enabled);
 
+    // FIXME: This is a temporary flag and should be removed once squashing is
+    // ready (crbug.com/261605).
+    [RaisesException] void setLayerSquashingEnabled(boolean enabled);
+
     // FIXME: The following are RuntimeEnabledFeatures and likely
     // cannot be changed after process start.  These setters should
     // be removed or moved onto internals.runtimeFlags:
diff --git a/core/testing/Internals.idl b/core/testing/Internals.idl
index c0c80d9..27232a2 100644
--- a/core/testing/Internals.idl
+++ b/core/testing/Internals.idl
@@ -37,6 +37,10 @@
 
     void crash();
 
+    void setStyleResolverStatsEnabled(boolean enabled);
+    [RaisesException] DOMString styleResolverStatsReport();
+    [RaisesException] DOMString styleResolverStatsTotalsReport();
+
     [RaisesException] unsigned long numberOfScopedHTMLStyleChildren(Node scope);
     [RaisesException] CSSStyleDeclaration computedStyleIncludingVisitedInfo(Node node);
 
@@ -62,6 +66,7 @@
     [RaisesException] boolean hasSelectorForAttributeInShadow(Element host, DOMString attributeName);
     [RaisesException] boolean hasSelectorForPseudoClassInShadow(Element host, DOMString pseudoClass);
     [RaisesException] unsigned short compareTreeScopePosition(Node treeScope1, Node treeScope2);
+    [RaisesException] unsigned long updateStyleAndReturnAffectedElementCount();
 
     // CSS Animation and Transition testing.
     unsigned long numberOfActiveAnimations();
@@ -77,8 +82,8 @@
 
     void selectColorInColorChooser(Element element, DOMString colorValue);
 
-    [RaisesException] DOMString[] formControlStateOfPreviousHistoryItem();
-    [RaisesException] void setFormControlStateOfPreviousHistoryItem(sequence<DOMString> values);
+    [RaisesException] DOMString[] formControlStateOfHistoryItem();
+    [RaisesException] void setFormControlStateOfHistoryItem(sequence<DOMString> values);
     [RaisesException] void setEnableMockPagePopup(boolean enabled);
     readonly attribute PagePopupController pagePopupController;
 
@@ -189,17 +194,16 @@
     [RaisesException] ClientRectList nonFastScrollableRects(Document document);
 
     [RaisesException] DOMString repaintRectsAsText(Document document);
+    [RaisesException] ClientRectList repaintRects(Element element);
 
     [RaisesException] void garbageCollectDocumentResources(Document document);
     void evictAllResources();
 
     void allowRoundingHacks();
 
-    void insertAuthorCSS(Document document, DOMString css);
-    void insertUserCSS(Document document, DOMString css);
-
     unsigned long numberOfLiveNodes();
     unsigned long numberOfLiveDocuments();
+    DOMString dumpRefCountedInstanceCounts();
     sequence<DOMString> consoleMessageArgumentCounts(Document document);
     Window openDummyInspectorFrontend(DOMString url);
     void closeDummyInspectorFrontend();
@@ -236,6 +240,11 @@
     [RaisesException] void startTrackingRepaints(Document document);
     [RaisesException] void stopTrackingRepaints(Document document);
 
+    // |node| should be Document, HTMLIFrameElement, or unspecified.
+    // If |node| is an HTMLIFrameElement, it assumes node.contentDocument is
+    // specified without security checks. Unspecified means this document.
+    [RaisesException] void updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks(optional Node node);
+
     // Returns a list of draggable/non-draggable regions in the document.
     [RaisesException] ClientRectList draggableRegions(Document document);
     [RaisesException] ClientRectList nonDraggableRegions(Document document);
@@ -261,4 +270,6 @@
     boolean loseSharedGraphicsContext3D();
 
     [RaisesException] void forceCompositingUpdate(Document document);
+
+    void setZoomFactor(float factor);
 };
diff --git a/core/timing/PerformanceEntry.idl b/core/timing/PerformanceEntry.idl
index 6199cce..2f5771f 100644
--- a/core/timing/PerformanceEntry.idl
+++ b/core/timing/PerformanceEntry.idl
@@ -30,7 +30,7 @@
 
 // See: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PerformanceTimeline/Overview.html
 [
-    CustomToV8
+    Custom=Wrap,
 ] interface PerformanceEntry {
     readonly attribute DOMString name;
     readonly attribute DOMString entryType;
diff --git a/core/workers/SharedWorker.idl b/core/workers/SharedWorker.idl
index a6e4d02..b36361e 100644
--- a/core/workers/SharedWorker.idl
+++ b/core/workers/SharedWorker.idl
@@ -30,14 +30,13 @@
  */
 
 [
-    RuntimeEnabled=SharedWorker,
+    ActiveDOMObject,
     Constructor(DOMString scriptURL, [Default=NullString] optional DOMString name),
     ConstructorCallWith=ExecutionContext,
-    ConstructorRaisesException,
-    ActiveDOMObject
+    RaisesException=Constructor,
+    RuntimeEnabled=SharedWorker,
 ] interface SharedWorker : EventTarget {
     readonly attribute MessagePort port;
 };
 
 SharedWorker implements AbstractWorker;
-
diff --git a/core/workers/Worker.idl b/core/workers/Worker.idl
index dc8b019..6017569 100644
--- a/core/workers/Worker.idl
+++ b/core/workers/Worker.idl
@@ -26,10 +26,10 @@
  */
 
 [
+    ActiveDOMObject,
     Constructor(DOMString scriptUrl),
     ConstructorCallWith=ExecutionContext,
-    ConstructorRaisesException,
-    ActiveDOMObject
+    RaisesException=Constructor,
 ] interface Worker : EventTarget {
 
     attribute EventHandler onmessage;
@@ -39,4 +39,3 @@
 };
 
 Worker implements AbstractWorker;
-
diff --git a/core/workers/WorkerGlobalScope.idl b/core/workers/WorkerGlobalScope.idl
index 0d67095..d61d48f 100644
--- a/core/workers/WorkerGlobalScope.idl
+++ b/core/workers/WorkerGlobalScope.idl
@@ -25,9 +25,8 @@
  */
 
 [
+    Custom=ToV8,
     GlobalContext=WorkerGlobalScope,
-    CustomToV8,
-    DoNotGenerateWrap
 ] interface WorkerGlobalScope : EventTarget {
 
     // WorkerGlobalScope
diff --git a/core/workers/WorkerLocation.idl b/core/workers/WorkerLocation.idl
index 7afd84b..c3dd851 100644
--- a/core/workers/WorkerLocation.idl
+++ b/core/workers/WorkerLocation.idl
@@ -31,5 +31,5 @@
 ] interface WorkerLocation {
 };
 
-// Force rebuild: crbug.com/307023
+// force rebuild: crbug.com/307023
 WorkerLocation implements URLUtilsReadOnly;
diff --git a/core/xml/XMLHttpRequest.idl b/core/xml/XMLHttpRequest.idl
index 305ac87..2fba4d6 100644
--- a/core/xml/XMLHttpRequest.idl
+++ b/core/xml/XMLHttpRequest.idl
@@ -37,11 +37,9 @@
 };
 
 [
-    GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
-    Constructor,
-    ConstructorCallWith=ExecutionContext,
-    CustomConstructor(optional XMLHttpRequestOptions options)
+    CustomConstructor(optional XMLHttpRequestOptions options),
+    GlobalContext=Window&WorkerGlobalScope,
 ] interface XMLHttpRequest : XMLHttpRequestEventTarget {
     // event handler attributes
     attribute EventHandler onreadystatechange;
@@ -53,14 +51,14 @@
     const unsigned short LOADING = 3;
     const unsigned short DONE = 4;
 
-    [SetterRaisesException] attribute unsigned long timeout;
+    [RaisesException=Setter] attribute unsigned long timeout;
     readonly attribute unsigned short readyState;
 
-    [SetterRaisesException] attribute boolean withCredentials;
+    [RaisesException=Setter] attribute boolean withCredentials;
 
-    [Custom, ActivityLogging=AccessForAllWorlds, RaisesException] void open(DOMString method, DOMString url, optional boolean async, optional DOMString user, optional DOMString password);
+    [Custom, ActivityLogging=ForAllWorlds, RaisesException] void open(DOMString method, DOMString url, optional boolean async, optional DOMString user, optional DOMString password);
 
-    [ActivityLogging=AccessForAllWorlds, RaisesException] void setRequestHeader(DOMString header, DOMString value);
+    [ActivityLogging=ForAllWorlds, RaisesException] void setRequestHeader(DOMString header, DOMString value);
 
     [Custom, RaisesException] void send();
 
@@ -69,16 +67,16 @@
     readonly attribute XMLHttpRequestUpload upload;
 
     // response
-    [TreatReturnedNullStringAs=Undefined, RaisesException] DOMString getAllResponseHeaders();
-    [TreatReturnedNullStringAs=Null, RaisesException] DOMString getResponseHeader(DOMString header);
-    [CustomGetter, GetterRaisesException] readonly attribute DOMString responseText; // The custom getter implements TreatReturnedNullStringAs=Null
-    [GetterRaisesException] readonly attribute Document responseXML;
+    [TreatReturnedNullStringAs=Undefined] DOMString getAllResponseHeaders();
+    [TreatReturnedNullStringAs=Null] DOMString getResponseHeader(DOMString header);
+    [Custom=Getter, RaisesException=Getter] readonly attribute DOMString responseText; // The custom getter implements TreatReturnedNullStringAs=Null
+    [RaisesException=Getter] readonly attribute Document responseXML;
 
-    [SetterRaisesException] attribute XMLHttpRequestResponseType responseType;
-    [CustomGetter, GetterRaisesException] readonly attribute Object response;
+    [RaisesException=Setter] attribute XMLHttpRequestResponseType responseType;
+    [Custom=Getter, RaisesException=Getter] readonly attribute object response;
 
-    [GetterRaisesException] readonly attribute unsigned short status;
-    [GetterRaisesException] readonly attribute DOMString statusText;
+    readonly attribute unsigned short status;
+    readonly attribute DOMString statusText;
 
     // Extension
     void overrideMimeType(DOMString override);
diff --git a/core/xml/XPathResult.idl b/core/xml/XPathResult.idl
index 19cfb4c..dd5f9cf 100644
--- a/core/xml/XPathResult.idl
+++ b/core/xml/XPathResult.idl
@@ -31,16 +31,16 @@
     const unsigned short FIRST_ORDERED_NODE_TYPE        = 9;
 
     readonly attribute unsigned short  resultType;
-    [GetterRaisesException] readonly attribute double          numberValue;
+    [RaisesException=Getter] readonly attribute double          numberValue;
 
-    [GetterRaisesException] readonly attribute DOMString       stringValue;
+    [RaisesException=Getter] readonly attribute DOMString       stringValue;
 
-    [GetterRaisesException] readonly attribute boolean         booleanValue;
+    [RaisesException=Getter] readonly attribute boolean         booleanValue;
 
-    [GetterRaisesException] readonly attribute Node            singleNodeValue;
+    [RaisesException=Getter] readonly attribute Node            singleNodeValue;
 
     readonly attribute boolean         invalidIteratorState;
-    [GetterRaisesException] readonly attribute unsigned long   snapshotLength;
+    [RaisesException=Getter] readonly attribute unsigned long   snapshotLength;
 
     [RaisesException] Node iterateNext();
     [RaisesException] Node snapshotItem([Default=Undefined] optional unsigned long index);
diff --git a/modules/README b/modules/README
index 8f88f7d..575df1a 100644
--- a/modules/README
+++ b/modules/README
@@ -5,5 +5,5 @@
 using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
 
 The current version corresponds to:
-URL: http://src.chromium.org/blink/branches/dart/1700
-Current revision: 164530
+URL: http://src.chromium.org/blink/branches/dart/1750
+Current revision: 166797
diff --git a/modules/crypto/AesCtrParams.idl b/modules/crypto/AesCtrParams.idl
new file mode 100644
index 0000000..58f3fda
--- /dev/null
+++ b/modules/crypto/AesCtrParams.idl
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    NoInterfaceObject,
+] interface AesCtrParams : Algorithm {
+    readonly attribute Uint8Array counter;
+    readonly attribute octet length;
+};
diff --git a/modules/crypto/Algorithm.idl b/modules/crypto/Algorithm.idl
index 9af27a1..6f1d20c 100644
--- a/modules/crypto/Algorithm.idl
+++ b/modules/crypto/Algorithm.idl
@@ -29,8 +29,8 @@
  */
 
 [
+    Custom=Wrap,
     NoInterfaceObject,
-    CustomToV8
 ] interface Algorithm {
     readonly attribute DOMString name;
 };
diff --git a/modules/crypto/SubtleCrypto.idl b/modules/crypto/SubtleCrypto.idl
index 8631403..f11dc76 100644
--- a/modules/crypto/SubtleCrypto.idl
+++ b/modules/crypto/SubtleCrypto.idl
@@ -40,5 +40,8 @@
     [RaisesException] Promise generateKey(Dictionary algorithm, boolean extractable, DOMString[] keyUsages);
     [RaisesException] Promise importKey(DOMString format, ArrayBufferView keyData, Dictionary? algorithm, boolean extractable, DOMString[] keyUsages);
     [RaisesException] Promise exportKey(DOMString format, Key key);
+
+    [RaisesException] Promise wrapKey(DOMString format, Key key, Key wrappingKey, Dictionary wrapAlgorithm);
+    [RaisesException] Promise unwrapKey(DOMString format, ArrayBufferView wrappedKey, Key unwrappingKey, Dictionary unwrapAlgorithm, Dictionary? unwrappedKeyAlgorithm, boolean extractable, DOMString[] keyUsages);
 };
 
diff --git a/modules/encoding/TextDecoder.idl b/modules/encoding/TextDecoder.idl
index 8450225..136b0ef 100644
--- a/modules/encoding/TextDecoder.idl
+++ b/modules/encoding/TextDecoder.idl
@@ -32,7 +32,7 @@
     RuntimeEnabled=EncodingAPI,
     GlobalContext=Window&WorkerGlobalScope,
     Constructor([Default=NullString] optional DOMString label, optional Dictionary options),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface TextDecoder {
     readonly attribute DOMString encoding;
     [RaisesException] DOMString decode(optional ArrayBufferView input, optional Dictionary options);
diff --git a/modules/encoding/TextEncoder.idl b/modules/encoding/TextEncoder.idl
index b3daede..9258c0c 100644
--- a/modules/encoding/TextEncoder.idl
+++ b/modules/encoding/TextEncoder.idl
@@ -32,7 +32,7 @@
     RuntimeEnabled=EncodingAPI,
     GlobalContext=Window&WorkerGlobalScope,
     Constructor([Default=NullString] optional DOMString utfLabel),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface TextEncoder {
     readonly attribute DOMString encoding;
     Uint8Array encode([Default=NullString] optional DOMString input, optional Dictionary options);
diff --git a/modules/encryptedmedia/MediaKeyMessageEvent.idl b/modules/encryptedmedia/MediaKeyMessageEvent.idl
index 7d9c6d0..a7eaf90 100644
--- a/modules/encryptedmedia/MediaKeyMessageEvent.idl
+++ b/modules/encryptedmedia/MediaKeyMessageEvent.idl
@@ -24,9 +24,8 @@
  */
 
 [
-    Conditional=ENCRYPTED_MEDIA_V2,
+    EventConstructor,
     RuntimeEnabled=EncryptedMedia,
-    ConstructorTemplate=Event
 ] interface MediaKeyMessageEvent : Event {
     readonly attribute Uint8Array message;
     [InitializedByEventConstructor] readonly attribute DOMString destinationURL;
diff --git a/modules/encryptedmedia/MediaKeyNeededEvent.idl b/modules/encryptedmedia/MediaKeyNeededEvent.idl
index 5dfec5f..878813f 100644
--- a/modules/encryptedmedia/MediaKeyNeededEvent.idl
+++ b/modules/encryptedmedia/MediaKeyNeededEvent.idl
@@ -24,9 +24,8 @@
  */
 
 [
-    Conditional=ENCRYPTED_MEDIA_V2,
+    EventConstructor,
     RuntimeEnabled=EncryptedMedia,
-    ConstructorTemplate=Event
 ] interface MediaKeyNeededEvent : Event {
     readonly attribute Uint8Array initData;
 };
diff --git a/modules/encryptedmedia/MediaKeySession.idl b/modules/encryptedmedia/MediaKeySession.idl
index ebebc9f..c0b7f8c 100644
--- a/modules/encryptedmedia/MediaKeySession.idl
+++ b/modules/encryptedmedia/MediaKeySession.idl
@@ -24,7 +24,6 @@
      */
 
 [
-    Conditional=ENCRYPTED_MEDIA_V2,
     RuntimeEnabled=EncryptedMedia
 ] interface MediaKeySession : EventTarget {
     // error state
diff --git a/modules/encryptedmedia/MediaKeys.idl b/modules/encryptedmedia/MediaKeys.idl
index 9d57659..9d99d43 100644
--- a/modules/encryptedmedia/MediaKeys.idl
+++ b/modules/encryptedmedia/MediaKeys.idl
@@ -24,10 +24,9 @@
  */
 
 [
-    Conditional=ENCRYPTED_MEDIA_V2,
     RuntimeEnabled=EncryptedMedia,
     Constructor(DOMString keySystem),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface MediaKeys {
     [CallWith=ExecutionContext, RaisesException] MediaKeySession createSession([Default=Undefined] optional DOMString type, [Default=Undefined] optional Uint8Array initData);
 
diff --git a/modules/filesystem/EntriesCallback.idl b/modules/filesystem/EntriesCallback.idl
index 8bed9d5..ba3cca9 100644
--- a/modules/filesystem/EntriesCallback.idl
+++ b/modules/filesystem/EntriesCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface EntriesCallback {
-    boolean handleEvent(Entry[] entries);
+    void handleEvent(Entry[] entries);
 };
diff --git a/modules/filesystem/Entry.idl b/modules/filesystem/Entry.idl
index 198d3e6..734272f 100644
--- a/modules/filesystem/Entry.idl
+++ b/modules/filesystem/Entry.idl
@@ -29,8 +29,8 @@
  */
 
 [
+    Custom=Wrap,
     NoInterfaceObject,
-    CustomToV8
 ] interface Entry {
     readonly attribute boolean isFile;
     readonly attribute boolean isDirectory;
diff --git a/modules/filesystem/EntryCallback.idl b/modules/filesystem/EntryCallback.idl
index 21ebf4f..02eebc5 100644
--- a/modules/filesystem/EntryCallback.idl
+++ b/modules/filesystem/EntryCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface EntryCallback {
-    boolean handleEvent(Entry entry);
+    void handleEvent(Entry entry);
 };
diff --git a/modules/filesystem/EntrySync.idl b/modules/filesystem/EntrySync.idl
index c71f2c7..192c50b 100644
--- a/modules/filesystem/EntrySync.idl
+++ b/modules/filesystem/EntrySync.idl
@@ -29,8 +29,8 @@
  */
 
 [
+    Custom=Wrap,
     NoInterfaceObject,
-    CustomToV8
 ] interface EntrySync {
     readonly attribute boolean isFile;
     readonly attribute boolean isDirectory;
diff --git a/modules/filesystem/ErrorCallback.idl b/modules/filesystem/ErrorCallback.idl
index 69ad1db..8f05cf4 100644
--- a/modules/filesystem/ErrorCallback.idl
+++ b/modules/filesystem/ErrorCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface ErrorCallback {
-    boolean handleEvent(FileError error);
+    void handleEvent(FileError error);
 };
diff --git a/modules/filesystem/FileCallback.idl b/modules/filesystem/FileCallback.idl
index b231bf5..2a692ba 100644
--- a/modules/filesystem/FileCallback.idl
+++ b/modules/filesystem/FileCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface FileCallback {
-    boolean handleEvent(File file);
+    void handleEvent(File file);
 };
diff --git a/modules/filesystem/FileSystemCallback.idl b/modules/filesystem/FileSystemCallback.idl
index ebb0521..6a10f18 100644
--- a/modules/filesystem/FileSystemCallback.idl
+++ b/modules/filesystem/FileSystemCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface FileSystemCallback {
-    boolean handleEvent(DOMFileSystem fileSystem);
+    void handleEvent(DOMFileSystem fileSystem);
 };
diff --git a/modules/filesystem/FileWriterCallback.idl b/modules/filesystem/FileWriterCallback.idl
index a2d78b0..9492e24 100644
--- a/modules/filesystem/FileWriterCallback.idl
+++ b/modules/filesystem/FileWriterCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface FileWriterCallback {
-    boolean handleEvent(FileWriter fileWriter);
+    void handleEvent(FileWriter fileWriter);
 };
diff --git a/modules/filesystem/MetadataCallback.idl b/modules/filesystem/MetadataCallback.idl
index f58d7b4..819a299 100644
--- a/modules/filesystem/MetadataCallback.idl
+++ b/modules/filesystem/MetadataCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface MetadataCallback {
-    boolean handleEvent(Metadata metadata);
+    void handleEvent(Metadata metadata);
 };
diff --git a/modules/geolocation/Geolocation.idl b/modules/geolocation/Geolocation.idl
index de8466a..b8fde66 100644
--- a/modules/geolocation/Geolocation.idl
+++ b/modules/geolocation/Geolocation.idl
@@ -27,11 +27,11 @@
 [
     NoInterfaceObject
 ] interface Geolocation {
-    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] void getCurrentPosition(PositionCallback successCallback,
+    [Custom, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] void getCurrentPosition(PositionCallback successCallback,
                                      optional PositionErrorCallback errorCallback,
                                      optional PositionOptions options);
 
-    [Custom, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds] long watchPosition(PositionCallback successCallback,
+    [Custom, PerWorldBindings, ActivityLogging=ForIsolatedWorlds] long watchPosition(PositionCallback successCallback,
                                 optional PositionErrorCallback errorCallback,
                                 optional PositionOptions options);
 
diff --git a/modules/geolocation/PositionCallback.idl b/modules/geolocation/PositionCallback.idl
index ca5a7be..b00d1d0 100644
--- a/modules/geolocation/PositionCallback.idl
+++ b/modules/geolocation/PositionCallback.idl
@@ -23,5 +23,5 @@
  */
 
 callback interface PositionCallback {
-    boolean handleEvent(Geoposition position);
+    void handleEvent(Geoposition position);
 };
diff --git a/modules/geolocation/PositionErrorCallback.idl b/modules/geolocation/PositionErrorCallback.idl
index a0f471f..a1470c1 100644
--- a/modules/geolocation/PositionErrorCallback.idl
+++ b/modules/geolocation/PositionErrorCallback.idl
@@ -23,5 +23,5 @@
  */
 
 callback interface PositionErrorCallback {
-    boolean handleEvent(PositionError error);
+    void handleEvent(PositionError error);
 };
diff --git a/modules/indexeddb/IDBAny.idl b/modules/indexeddb/IDBAny.idl
deleted file mode 100644
index 36f262a..0000000
--- a/modules/indexeddb/IDBAny.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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 AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    NoInterfaceObject,
-    CustomToV8,
-    DoNotGenerateWrap
-] interface IDBAny {
-    // This space is intentionally left blank.
-};
diff --git a/modules/indexeddb/IDBCursor.idl b/modules/indexeddb/IDBCursor.idl
index 1da7855..aaeb085 100644
--- a/modules/indexeddb/IDBCursor.idl
+++ b/modules/indexeddb/IDBCursor.idl
@@ -28,10 +28,11 @@
     readonly attribute DOMString direction;
     [CallWith=ExecutionContext, CachedAttribute=isKeyDirty] readonly attribute any key;
     [CallWith=ExecutionContext, CachedAttribute=isPrimaryKeyDirty] readonly attribute any primaryKey;
-    readonly attribute IDBAny source;
+    [CallWith=ExecutionContext] readonly attribute any source;
 
     [CallWith=ScriptState, RaisesException] IDBRequest update(any value);
     [RaisesException] void advance([EnforceRange] unsigned long count);
     [CallWith=ExecutionContext, ImplementedAs=continueFunction, RaisesException] void continue([Default=Undefined] optional any key);
+    [CallWith=ExecutionContext, RaisesException, RuntimeEnabled=IndexedDBExperimental] void continuePrimaryKey(any key, any primaryKey);
     [CallWith=ExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete();
 };
diff --git a/modules/indexeddb/IDBDatabase.idl b/modules/indexeddb/IDBDatabase.idl
index 3c2db17..c8e80d3 100644
--- a/modules/indexeddb/IDBDatabase.idl
+++ b/modules/indexeddb/IDBDatabase.idl
@@ -28,7 +28,7 @@
     ActiveDOMObject
 ] interface IDBDatabase : EventTarget {
     readonly attribute DOMString name;
-    readonly attribute IDBAny version;
+    [CallWith=ExecutionContext] readonly attribute any version;
     readonly attribute DOMStringList objectStoreNames;
 
     attribute EventHandler onabort;
diff --git a/modules/indexeddb/IDBIndex.idl b/modules/indexeddb/IDBIndex.idl
index eca9a6f..d2607ab 100644
--- a/modules/indexeddb/IDBIndex.idl
+++ b/modules/indexeddb/IDBIndex.idl
@@ -27,7 +27,7 @@
 ] interface IDBIndex {
     readonly attribute DOMString name;
     readonly attribute IDBObjectStore objectStore;
-    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
+    [CallWith=ExecutionContext] readonly attribute any keyPath;
     readonly attribute boolean unique;
     readonly attribute boolean multiEntry;
 
diff --git a/modules/indexeddb/IDBObjectStore.idl b/modules/indexeddb/IDBObjectStore.idl
index 9f7a6b6..daa7923 100644
--- a/modules/indexeddb/IDBObjectStore.idl
+++ b/modules/indexeddb/IDBObjectStore.idl
@@ -26,7 +26,7 @@
 [
 ] interface IDBObjectStore {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
-    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
+    [CallWith=ExecutionContext] readonly attribute any keyPath;
     readonly attribute DOMStringList indexNames;
     readonly attribute IDBTransaction transaction;
     readonly attribute boolean autoIncrement;
diff --git a/modules/indexeddb/IDBRequest.idl b/modules/indexeddb/IDBRequest.idl
index 1faea26..139810f 100644
--- a/modules/indexeddb/IDBRequest.idl
+++ b/modules/indexeddb/IDBRequest.idl
@@ -30,10 +30,10 @@
 [
     ActiveDOMObject
 ] interface IDBRequest : EventTarget {
-    [GetterRaisesException] readonly attribute IDBAny result;
-    [GetterRaisesException] readonly attribute DOMError error;
+    [RaisesException=Getter, CachedAttribute=isResultDirty] readonly attribute any result;
+    [RaisesException=Getter] readonly attribute DOMError error;
 
-    readonly attribute IDBAny source;
+    [CallWith=ExecutionContext] readonly attribute any source;
     readonly attribute IDBTransaction transaction;
 
     // States
diff --git a/modules/indexeddb/IDBVersionChangeEvent.idl b/modules/indexeddb/IDBVersionChangeEvent.idl
index 90fb68f..2d81f43 100644
--- a/modules/indexeddb/IDBVersionChangeEvent.idl
+++ b/modules/indexeddb/IDBVersionChangeEvent.idl
@@ -24,8 +24,8 @@
  */
 
 interface IDBVersionChangeEvent : Event {
-    readonly attribute IDBAny oldVersion;
-    readonly attribute IDBAny newVersion;
+    [CallWith=ExecutionContext] readonly attribute any oldVersion;
+    [CallWith=ExecutionContext] readonly attribute any newVersion;
 
     // FIXME: These are non-standard, see
     // https://www.w3.org/Bugs/Public/show_bug.cgi?id=22370
diff --git a/modules/mediasource/MediaSource.idl b/modules/mediasource/MediaSource.idl
index 24a08d2..a5bf84f 100644
--- a/modules/mediasource/MediaSource.idl
+++ b/modules/mediasource/MediaSource.idl
@@ -29,10 +29,10 @@
  */
 
 [
-    RuntimeEnabled=MediaSource,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    RuntimeEnabled=MediaSource,
 ] interface MediaSource : EventTarget {
     // All the source buffers created by this object.
     readonly attribute SourceBufferList sourceBuffers;
@@ -40,7 +40,7 @@
     // Subset of sourceBuffers that provide data for the selected/enabled tracks.
     readonly attribute SourceBufferList activeSourceBuffers;
 
-    [SetterRaisesException] attribute double duration;
+    [RaisesException=Setter] attribute double duration;
 
     [RaisesException] SourceBuffer addSourceBuffer(DOMString type);
     [RaisesException] void removeSourceBuffer(SourceBuffer buffer);
diff --git a/modules/mediasource/SourceBuffer.idl b/modules/mediasource/SourceBuffer.idl
index 9498095..e2712bd 100644
--- a/modules/mediasource/SourceBuffer.idl
+++ b/modules/mediasource/SourceBuffer.idl
@@ -37,22 +37,22 @@
     readonly attribute boolean updating;
 
     // Returns the time ranges buffered.
-    [GetterRaisesException] readonly attribute TimeRanges buffered;
+    [RaisesException=Getter] readonly attribute TimeRanges buffered;
 
     // Applies an offset to media segment timestamps.
-    [SetterRaisesException] attribute double timestampOffset;
+    [RaisesException=Setter] attribute double timestampOffset;
 
     // Presentation timestamp for the start of append window.
-    [SetterRaisesException] attribute double appendWindowStart;
+    [RaisesException=Setter] attribute double appendWindowStart;
 
     // Presentation timestamp for the end of append window.
-    [SetterRaisesException] attribute double appendWindowEnd;
+    [RaisesException=Setter] attribute double appendWindowEnd;
 
     // Append segment data.
     [RaisesException] void appendBuffer(ArrayBuffer data);
     [RaisesException] void appendBuffer(ArrayBufferView data);
 
-    [RaisesException, RuntimeEnabled=stream] void appendStream(Stream stream, optional unsigned long long maxSize);
+    [RaisesException, RuntimeEnabled=Stream] void appendStream(Stream stream, optional unsigned long long maxSize);
 
     // Abort the current segment append sequence.
     [RaisesException] void abort();
diff --git a/modules/mediasource/SourceBufferList.idl b/modules/mediasource/SourceBufferList.idl
index b5bf134..4b5f180 100644
--- a/modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/SourceBufferList.idl
@@ -31,7 +31,6 @@
 [
     NoInterfaceObject,
     RuntimeEnabled=MediaSource,
-    CallWith=ExecutionContext
 ] interface SourceBufferList : EventTarget {
     readonly attribute unsigned long length;
     getter SourceBuffer item(unsigned long index);
diff --git a/modules/mediasource/VideoPlaybackQuality.idl b/modules/mediasource/VideoPlaybackQuality.idl
index 7be130b..746f53c 100644
--- a/modules/mediasource/VideoPlaybackQuality.idl
+++ b/modules/mediasource/VideoPlaybackQuality.idl
@@ -27,8 +27,9 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-[RuntimeEnabled=MediaSourceExperimental]
-interface VideoPlaybackQuality {
+[
+    RuntimeEnabled=MediaSourceExperimental,
+] interface VideoPlaybackQuality {
     readonly attribute double creationTime;
     readonly attribute unsigned long totalVideoFrames;
     readonly attribute unsigned long droppedVideoFrames;
diff --git a/modules/mediasource/WebKitMediaSource.idl b/modules/mediasource/WebKitMediaSource.idl
index 5d127ae..4ceea5b 100644
--- a/modules/mediasource/WebKitMediaSource.idl
+++ b/modules/mediasource/WebKitMediaSource.idl
@@ -29,11 +29,11 @@
  */
 
 [
-    NoInterfaceObject,
-    RuntimeEnabled=WebKitMediaSource,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    NoInterfaceObject,
+    RuntimeEnabled=WebKitMediaSource,
 ] interface WebKitMediaSource : EventTarget {
     // All the source buffers created by this object.
     readonly attribute WebKitSourceBufferList sourceBuffers;
@@ -41,7 +41,7 @@
     // Subset of sourceBuffers that provide data for the selected/enabled tracks.
     readonly attribute WebKitSourceBufferList activeSourceBuffers;
 
-    [SetterRaisesException] attribute double duration;
+    [RaisesException=Setter] attribute double duration;
 
     [RaisesException] WebKitSourceBuffer addSourceBuffer(DOMString type);
     [RaisesException] void removeSourceBuffer(WebKitSourceBuffer buffer);
@@ -52,4 +52,3 @@
 
     static boolean isTypeSupported (DOMString type);
 };
-
diff --git a/modules/mediasource/WebKitSourceBuffer.idl b/modules/mediasource/WebKitSourceBuffer.idl
index da4c157..c896a67 100644
--- a/modules/mediasource/WebKitSourceBuffer.idl
+++ b/modules/mediasource/WebKitSourceBuffer.idl
@@ -34,10 +34,10 @@
 ] interface WebKitSourceBuffer {
 
     // Returns the time ranges buffered.
-    [GetterRaisesException] readonly attribute TimeRanges buffered;
+    [RaisesException=Getter] readonly attribute TimeRanges buffered;
 
     // Applies an offset to media segment timestamps.
-    [SetterRaisesException] attribute double timestampOffset;
+    [RaisesException=Setter] attribute double timestampOffset;
 
     // Append segment data.
     [RaisesException] void append(Uint8Array data);
diff --git a/modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
index 2b65e3f..8191d0a 100644
--- a/modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -23,11 +23,11 @@
  */
 
 [
-    NoInterfaceObject,
     Constructor,
     Constructor(MediaStream stream),
     Constructor(MediaStreamTrack[] tracks),
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    NoInterfaceObject,
 ] interface MediaStream : EventTarget {
     // DEPRECATED
     readonly attribute DOMString label;
@@ -50,4 +50,3 @@
     attribute EventHandler onaddtrack;
     attribute EventHandler onremovetrack;
 };
-
diff --git a/modules/mediastream/MediaStreamEvent.idl b/modules/mediastream/MediaStreamEvent.idl
index ee96157..701309c 100644
--- a/modules/mediastream/MediaStreamEvent.idl
+++ b/modules/mediastream/MediaStreamEvent.idl
@@ -23,8 +23,8 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface MediaStreamEvent : Event {
-   [InitializedByEventConstructor] readonly attribute MediaStream stream;
+   [InitializedByEventConstructor] readonly attribute MediaStream? stream;
 };
 
diff --git a/modules/mediastream/MediaStreamTrackSourcesCallback.idl b/modules/mediastream/MediaStreamTrackSourcesCallback.idl
index ce89327..e18f7bb 100644
--- a/modules/mediastream/MediaStreamTrackSourcesCallback.idl
+++ b/modules/mediastream/MediaStreamTrackSourcesCallback.idl
@@ -24,6 +24,6 @@
  */
 
 callback interface MediaStreamTrackSourcesCallback {
-    boolean handleEvent(sequence<SourceInfo> sources);
+    void handleEvent(sequence<SourceInfo> sources);
 };
 
diff --git a/modules/mediastream/NavigatorUserMediaErrorCallback.idl b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
index 37c581d..e1304de 100644
--- a/modules/mediastream/NavigatorUserMediaErrorCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
@@ -23,6 +23,6 @@
  */
 
 callback interface NavigatorUserMediaErrorCallback {
-    boolean handleEvent(NavigatorUserMediaError error);
+    void handleEvent(NavigatorUserMediaError error);
 };
 
diff --git a/modules/mediastream/NavigatorUserMediaSuccessCallback.idl b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
index c520266..8f443a6 100644
--- a/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
@@ -23,6 +23,6 @@
  */
 
 callback interface NavigatorUserMediaSuccessCallback {
-    boolean handleEvent(MediaStream stream);
+    void handleEvent(MediaStream stream);
 };
 
diff --git a/modules/mediastream/RTCDTMFToneChangeEvent.idl b/modules/mediastream/RTCDTMFToneChangeEvent.idl
index de80edf..2bbd9cd 100644
--- a/modules/mediastream/RTCDTMFToneChangeEvent.idl
+++ b/modules/mediastream/RTCDTMFToneChangeEvent.idl
@@ -24,8 +24,8 @@
  */
 
 [
+    EventConstructor,
     NoInterfaceObject,
-    ConstructorTemplate=Event
 ] interface RTCDTMFToneChangeEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString tone;
 };
diff --git a/modules/mediastream/RTCDataChannel.idl b/modules/mediastream/RTCDataChannel.idl
index f826fb1..4a69b5a 100644
--- a/modules/mediastream/RTCDataChannel.idl
+++ b/modules/mediastream/RTCDataChannel.idl
@@ -40,7 +40,7 @@
     readonly attribute DOMString readyState;
     readonly attribute unsigned long bufferedAmount;
 
-    [SetterRaisesException] attribute DOMString binaryType;
+    [RaisesException=Setter] attribute DOMString binaryType;
 
     [RaisesException] void send(ArrayBuffer data);
     [RaisesException] void send(ArrayBufferView data);
diff --git a/modules/mediastream/RTCErrorCallback.idl b/modules/mediastream/RTCErrorCallback.idl
index d215353..bb7414b 100644
--- a/modules/mediastream/RTCErrorCallback.idl
+++ b/modules/mediastream/RTCErrorCallback.idl
@@ -29,6 +29,6 @@
  */
 
 callback interface RTCErrorCallback {
-    boolean handleEvent(DOMString errorInformation);
+    void handleEvent(DOMString errorInformation);
 };
 
diff --git a/modules/mediastream/RTCIceCandidate.idl b/modules/mediastream/RTCIceCandidate.idl
index 8abe472..6404c11 100644
--- a/modules/mediastream/RTCIceCandidate.idl
+++ b/modules/mediastream/RTCIceCandidate.idl
@@ -30,7 +30,7 @@
 
 [
     Constructor(Dictionary dictionary),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface RTCIceCandidate {
     readonly attribute DOMString candidate;
     readonly attribute DOMString sdpMid;
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
index 4455522..1be4b24 100644
--- a/modules/mediastream/RTCPeerConnection.idl
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -29,21 +29,21 @@
  */
 
 [
-    NoInterfaceObject,
     ActiveDOMObject,
     Constructor(Dictionary rtcIceServers, optional Dictionary mediaConstraints),
-    ConstructorRaisesException,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    NoInterfaceObject,
+    RaisesException=Constructor,
 ] interface RTCPeerConnection : EventTarget {
     [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
 
     [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
 
     [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
-    [GetterRaisesException] readonly attribute RTCSessionDescription localDescription;
+    [RaisesException=Getter] readonly attribute RTCSessionDescription localDescription;
 
     [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback);
-    [GetterRaisesException] readonly attribute RTCSessionDescription remoteDescription;
+    [RaisesException=Getter] readonly attribute RTCSessionDescription remoteDescription;
 
     readonly attribute DOMString signalingState;
 
diff --git a/modules/mediastream/RTCSessionDescription.idl b/modules/mediastream/RTCSessionDescription.idl
index 70077ef..c906381 100644
--- a/modules/mediastream/RTCSessionDescription.idl
+++ b/modules/mediastream/RTCSessionDescription.idl
@@ -30,9 +30,9 @@
 
 [
     Constructor(optional Dictionary descriptionInitDict),
-    ConstructorRaisesException
+    RaisesException=Constructor
 ] interface RTCSessionDescription {
-    [SetterRaisesException, TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString type;
+    [RaisesException=Setter, TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString type;
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString sdp;
 };
 
diff --git a/modules/mediastream/RTCSessionDescriptionCallback.idl b/modules/mediastream/RTCSessionDescriptionCallback.idl
index e80be03..59ffe44 100644
--- a/modules/mediastream/RTCSessionDescriptionCallback.idl
+++ b/modules/mediastream/RTCSessionDescriptionCallback.idl
@@ -29,6 +29,6 @@
  */
 
 callback interface RTCSessionDescriptionCallback {
-    boolean handleEvent(RTCSessionDescription sdp);
+    void handleEvent(RTCSessionDescription sdp);
 };
 
diff --git a/modules/mediastream/RTCStatsCallback.idl b/modules/mediastream/RTCStatsCallback.idl
index c81c725..8e0c080 100644
--- a/modules/mediastream/RTCStatsCallback.idl
+++ b/modules/mediastream/RTCStatsCallback.idl
@@ -23,6 +23,6 @@
  */
 
 callback interface RTCStatsCallback {
-    boolean handleEvent(RTCStatsResponse response);
+    void handleEvent(RTCStatsResponse response);
 };
 
diff --git a/modules/notifications/Notification.idl b/modules/notifications/Notification.idl
index cbce5d6..1ef74c4 100644
--- a/modules/notifications/Notification.idl
+++ b/modules/notifications/Notification.idl
@@ -33,23 +33,24 @@
     ActiveDOMObject,
     Constructor(DOMString title, [Default=Undefined] optional Dictionary options),
     ConstructorCallWith=ExecutionContext,
-    RuntimeEnabled=notifications
+    RuntimeEnabled=Notifications,
 ] interface Notification : EventTarget {
-    void show();
-    [Conditional=LEGACY_NOTIFICATIONS] void cancel();
-    void close();
-
-
     [CallWith=ExecutionContext] static readonly attribute DOMString permission;
     [CallWith=ExecutionContext] static void requestPermission(optional NotificationPermissionCallback callback);
 
+    // FIXME: Implement the Notification.get() method.
+
+    attribute EventHandler onclick;
     attribute EventHandler onshow;
-    [Conditional=LEGACY_NOTIFICATIONS] attribute EventHandler ondisplay;
     attribute EventHandler onerror;
     attribute EventHandler onclose;
-    attribute EventHandler onclick;
 
-    [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString dir;
-    [Conditional=LEGACY_NOTIFICATIONS] attribute DOMString replaceId;
-    attribute DOMString tag;
+    readonly attribute DOMString title;
+    readonly attribute DOMString dir;
+    readonly attribute DOMString lang;
+    readonly attribute DOMString body;
+    readonly attribute DOMString tag;
+    readonly attribute DOMString icon;
+
+    void close();
 };
diff --git a/modules/notifications/NotificationCenter.idl b/modules/notifications/NotificationCenter.idl
index fb23a66..bdacd39 100644
--- a/modules/notifications/NotificationCenter.idl
+++ b/modules/notifications/NotificationCenter.idl
@@ -34,7 +34,7 @@
     Conditional=LEGACY_NOTIFICATIONS,
     ActiveDOMObject
 ] interface NotificationCenter {
-   [MeasureAs=LegacyTextNotifications, ActivityLogging=AccessForAllWorlds, RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
+   [MeasureAs=LegacyTextNotifications, ActivityLogging=ForAllWorlds, RaisesException] WebKitNotification createNotification(DOMString iconUrl, DOMString title, DOMString body);
 
    long checkPermission();
    void requestPermission(optional VoidCallback callback);
diff --git a/modules/notifications/NotificationPermissionCallback.idl b/modules/notifications/NotificationPermissionCallback.idl
index 9235c3c..09f7a1b 100644
--- a/modules/notifications/NotificationPermissionCallback.idl
+++ b/modules/notifications/NotificationPermissionCallback.idl
@@ -24,5 +24,5 @@
  */
 
 callback interface NotificationPermissionCallback {
-    boolean handleEvent(DOMString permission);
+    void handleEvent(DOMString permission);
 };
diff --git a/modules/notifications/WebKitNotification.idl b/modules/notifications/WebKitNotification.idl
new file mode 100644
index 0000000..52899ff
--- /dev/null
+++ b/modules/notifications/WebKitNotification.idl
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+    ActiveDOMObject,
+    Conditional=LEGACY_NOTIFICATIONS,
+    NoInterfaceObject,
+    RuntimeEnabled=Notifications,
+] interface WebKitNotification : EventTarget {
+    void show();
+    void cancel();
+
+    attribute EventHandler ondisplay;
+    attribute EventHandler onerror;
+    attribute EventHandler onclose;
+    attribute EventHandler onclick;
+
+    attribute DOMString dir;
+    attribute DOMString replaceId;
+};
diff --git a/modules/quota/StorageErrorCallback.idl b/modules/quota/StorageErrorCallback.idl
index 191fb38..011df62 100644
--- a/modules/quota/StorageErrorCallback.idl
+++ b/modules/quota/StorageErrorCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface StorageErrorCallback {
-    boolean handleEvent(DOMError error);
+    void handleEvent(DOMError error);
 };
diff --git a/modules/quota/StorageQuotaCallback.idl b/modules/quota/StorageQuotaCallback.idl
index 8cd2df7..75bed94 100644
--- a/modules/quota/StorageQuotaCallback.idl
+++ b/modules/quota/StorageQuotaCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface StorageQuotaCallback {
-    boolean handleEvent(unsigned long long grantedQuotaInBytes);
+    void handleEvent(unsigned long long grantedQuotaInBytes);
 };
diff --git a/modules/quota/StorageUsageCallback.idl b/modules/quota/StorageUsageCallback.idl
index b05213b..94774f8 100644
--- a/modules/quota/StorageUsageCallback.idl
+++ b/modules/quota/StorageUsageCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface StorageUsageCallback {
-    boolean handleEvent(unsigned long long currentUsageInBytes, unsigned long long currentQuotaInBytes);
+    void handleEvent(unsigned long long currentUsageInBytes, unsigned long long currentQuotaInBytes);
 };
diff --git a/modules/serviceworkers/ServiceWorkerGlobalScope.idl b/modules/serviceworkers/ServiceWorkerGlobalScope.idl
new file mode 100644
index 0000000..3db5927
--- /dev/null
+++ b/modules/serviceworkers/ServiceWorkerGlobalScope.idl
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+[
+    GlobalContext=ServiceWorkerGlobalScope,
+    RuntimeEnabled=ServiceWorker,
+] interface ServiceWorkerGlobalScope : WorkerGlobalScope {
+  attribute EventHandler oninstall;
+  attribute EventHandler onactivate;
+  attribute EventHandler onfetch;
+};
+
diff --git a/modules/speech/SpeechRecognition.idl b/modules/speech/SpeechRecognition.idl
index b637e3a..dded48e 100644
--- a/modules/speech/SpeechRecognition.idl
+++ b/modules/speech/SpeechRecognition.idl
@@ -27,7 +27,7 @@
     NoInterfaceObject,
     ActiveDOMObject,
     Constructor,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
 ] interface SpeechRecognition : EventTarget {
     attribute SpeechGrammarList grammars;
     attribute DOMString lang;
diff --git a/modules/speech/SpeechRecognitionError.idl b/modules/speech/SpeechRecognitionError.idl
index 59956d2..0150174 100644
--- a/modules/speech/SpeechRecognitionError.idl
+++ b/modules/speech/SpeechRecognitionError.idl
@@ -25,7 +25,7 @@
 
 [
     NoInterfaceObject,
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface SpeechRecognitionError : Event {
     [InitializedByEventConstructor] readonly attribute DOMString error;
     [InitializedByEventConstructor] readonly attribute DOMString message;
diff --git a/modules/speech/SpeechRecognitionEvent.idl b/modules/speech/SpeechRecognitionEvent.idl
index e4ca482..c925f80 100644
--- a/modules/speech/SpeechRecognitionEvent.idl
+++ b/modules/speech/SpeechRecognitionEvent.idl
@@ -24,8 +24,8 @@
  */
 
 [
+    EventConstructor,
     NoInterfaceObject,
-    ConstructorTemplate=Event
 ] interface SpeechRecognitionEvent : Event {
     [InitializedByEventConstructor] readonly attribute unsigned long resultIndex;
     [InitializedByEventConstructor] readonly attribute SpeechRecognitionResultList results;
diff --git a/modules/speech/SpeechSynthesisUtterance.idl b/modules/speech/SpeechSynthesisUtterance.idl
index fbedcdc..50a0173 100644
--- a/modules/speech/SpeechSynthesisUtterance.idl
+++ b/modules/speech/SpeechSynthesisUtterance.idl
@@ -24,9 +24,9 @@
  */
 
 [
-    RuntimeEnabled=SpeechSynthesis,
+    Constructor([Default=NullString] optional DOMString text),
     ConstructorCallWith=ExecutionContext,
-    Constructor([Default=NullString] optional DOMString text)
+    RuntimeEnabled=SpeechSynthesis,
 ] interface SpeechSynthesisUtterance : EventTarget {
     attribute DOMString text;
     attribute DOMString lang;
diff --git a/modules/webaudio/AnalyserNode.idl b/modules/webaudio/AnalyserNode.idl
index f179f5e..f3add66 100644
--- a/modules/webaudio/AnalyserNode.idl
+++ b/modules/webaudio/AnalyserNode.idl
@@ -25,15 +25,15 @@
 [
     Conditional=WEB_AUDIO
 ] interface AnalyserNode : AudioNode {
-    [SetterRaisesException] attribute unsigned long fftSize;
+    [RaisesException=Setter] attribute unsigned long fftSize;
     readonly attribute unsigned long frequencyBinCount;
 
     // minDecibels / maxDecibels represent the range to scale the FFT analysis data for conversion to unsigned byte values.
-    [SetterRaisesException] attribute float minDecibels;
-    [SetterRaisesException] attribute float maxDecibels;
+    [RaisesException=Setter] attribute float minDecibels;
+    [RaisesException=Setter] attribute float maxDecibels;
 
     // A value from 0.0 -> 1.0 where 0.0 represents no time averaging with the last analysis frame.
-    [SetterRaisesException] attribute float smoothingTimeConstant;
+    [RaisesException=Setter] attribute float smoothingTimeConstant;
 
     // Copies the current frequency data into the passed array.
     // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
diff --git a/modules/webaudio/AudioBufferCallback.idl b/modules/webaudio/AudioBufferCallback.idl
index e91b119..aa1c383 100644
--- a/modules/webaudio/AudioBufferCallback.idl
+++ b/modules/webaudio/AudioBufferCallback.idl
@@ -25,5 +25,5 @@
 [
     Conditional=WEB_AUDIO
 ] callback interface AudioBufferCallback {
-    boolean handleEvent(AudioBuffer audioBuffer);
+    void handleEvent(AudioBuffer audioBuffer);
 };
diff --git a/modules/webaudio/AudioBufferSourceNode.idl b/modules/webaudio/AudioBufferSourceNode.idl
index 946b28b..ab58774 100644
--- a/modules/webaudio/AudioBufferSourceNode.idl
+++ b/modules/webaudio/AudioBufferSourceNode.idl
@@ -26,7 +26,7 @@
 [
     Conditional=WEB_AUDIO
 ] interface AudioBufferSourceNode : AudioSourceNode {
-    [StrictTypeChecking, SetterRaisesException] attribute AudioBuffer buffer;
+    [StrictTypeChecking, RaisesException=Setter] attribute AudioBuffer buffer;
 
     const unsigned short UNSCHEDULED_STATE = 0;
     const unsigned short SCHEDULED_STATE = 1;
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
index f14e8b6..52da1a5 100644
--- a/modules/webaudio/AudioContext.idl
+++ b/modules/webaudio/AudioContext.idl
@@ -24,13 +24,13 @@
  */
 
 [
-    NoInterfaceObject,
-    Conditional=WEB_AUDIO,
     ActiveDOMObject,
+    Conditional=WEB_AUDIO,
     Constructor,
     Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
     ConstructorCallWith=Document,
-    ConstructorRaisesException
+    NoInterfaceObject,
+    RaisesException=Constructor,
 ] interface AudioContext : EventTarget {
     // All rendered audio ultimately connects to destination, which represents the audio hardware.
     readonly attribute AudioDestinationNode destination;
diff --git a/modules/webaudio/AudioNode.idl b/modules/webaudio/AudioNode.idl
index f130889..35d98cc 100644
--- a/modules/webaudio/AudioNode.idl
+++ b/modules/webaudio/AudioNode.idl
@@ -24,17 +24,17 @@
 
 [
     Conditional=WEB_AUDIO,
-    CustomToV8
+    Custom=Wrap,
 ] interface AudioNode : EventTarget {
     readonly attribute AudioContext context;
     readonly attribute unsigned long numberOfInputs;
     readonly attribute unsigned long numberOfOutputs;
 
-    [SetterRaisesException] attribute unsigned long channelCount;
+    [RaisesException=Setter] attribute unsigned long channelCount;
 
-    [SetterRaisesException] attribute DOMString channelCountMode;
+    [RaisesException=Setter] attribute DOMString channelCountMode;
 
-    [SetterRaisesException] attribute DOMString channelInterpretation;
+    [RaisesException=Setter] attribute DOMString channelInterpretation;
 
     [RaisesException] void connect(AudioNode? destination, [Default=Undefined] optional unsigned long output, [Default=Undefined] optional unsigned long input);
 
diff --git a/modules/webaudio/BiquadFilterNode.idl b/modules/webaudio/BiquadFilterNode.idl
index 3101652..2422dfb 100644
--- a/modules/webaudio/BiquadFilterNode.idl
+++ b/modules/webaudio/BiquadFilterNode.idl
@@ -35,7 +35,7 @@
     const unsigned short NOTCH = 6;
     const unsigned short ALLPASS = 7;
 
-    [CustomSetter] attribute DOMString type;
+    [Custom=Setter] attribute DOMString type;
 
     readonly attribute AudioParam frequency; // in Hertz
     readonly attribute AudioParam detune; // in Cents
diff --git a/modules/webaudio/OfflineAudioContext.idl b/modules/webaudio/OfflineAudioContext.idl
index 84c50e3..5f5f8ac 100644
--- a/modules/webaudio/OfflineAudioContext.idl
+++ b/modules/webaudio/OfflineAudioContext.idl
@@ -23,11 +23,11 @@
  */
 
 [
-    NoInterfaceObject,
     Conditional=WEB_AUDIO,
     Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
-    ConstructorRaisesException,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    RaisesException=Constructor,
+    NoInterfaceObject,
 ] interface OfflineAudioContext : AudioContext {
 
 };
diff --git a/modules/webaudio/OscillatorNode.idl b/modules/webaudio/OscillatorNode.idl
index 0b5962a..7cbe29d 100644
--- a/modules/webaudio/OscillatorNode.idl
+++ b/modules/webaudio/OscillatorNode.idl
@@ -34,7 +34,7 @@
     const unsigned short TRIANGLE = 3;
     const unsigned short CUSTOM = 4;
 
-    [CustomSetter] attribute DOMString type;
+    [Custom=Setter] attribute DOMString type;
 
     // Playback state constants.
     const unsigned short UNSCHEDULED_STATE = 0;
diff --git a/modules/webaudio/PannerNode.idl b/modules/webaudio/PannerNode.idl
index 899b8a9..4557408 100644
--- a/modules/webaudio/PannerNode.idl
+++ b/modules/webaudio/PannerNode.idl
@@ -37,7 +37,7 @@
     const unsigned short EXPONENTIAL_DISTANCE = 2;
 
     // Default model for stereo is HRTF
-    [CustomSetter] attribute DOMString panningModel;
+    [Custom=Setter] attribute DOMString panningModel;
 
     // Uses a 3D cartesian coordinate system
     void setPosition(float x, float y, float z);
@@ -45,7 +45,7 @@
     void setVelocity(float x, float y, float z);
 
     // Distance model
-    [CustomSetter] attribute DOMString distanceModel;
+    [Custom=Setter] attribute DOMString distanceModel;
 
     attribute double refDistance;
     attribute double maxDistance;
diff --git a/modules/webaudio/WaveShaperNode.idl b/modules/webaudio/WaveShaperNode.idl
index a789722..e1ee72b 100644
--- a/modules/webaudio/WaveShaperNode.idl
+++ b/modules/webaudio/WaveShaperNode.idl
@@ -26,5 +26,5 @@
     Conditional=WEB_AUDIO
 ] interface WaveShaperNode : AudioNode {
     attribute Float32Array curve;
-    [SetterRaisesException] attribute DOMString oversample;
+    [RaisesException=Setter] attribute DOMString oversample;
 };
diff --git a/modules/webdatabase/SQLResultSet.idl b/modules/webdatabase/SQLResultSet.idl
index d3ce314..9452687 100644
--- a/modules/webdatabase/SQLResultSet.idl
+++ b/modules/webdatabase/SQLResultSet.idl
@@ -31,6 +31,6 @@
 ] interface SQLResultSet {
     readonly attribute SQLResultSetRowList rows;
 
-    [GetterRaisesException] readonly attribute long insertId;
+    [RaisesException=Getter] readonly attribute long insertId;
     readonly attribute long rowsAffected;
 };
diff --git a/modules/webdatabase/WindowWebDatabase.idl b/modules/webdatabase/WindowWebDatabase.idl
index 8502e37..5441c1f 100644
--- a/modules/webdatabase/WindowWebDatabase.idl
+++ b/modules/webdatabase/WindowWebDatabase.idl
@@ -27,6 +27,6 @@
 [
     ImplementedAs=DOMWindowWebDatabase
 ] partial interface Window {
-    [RuntimeEnabled=Database, MeasureAs=OpenWebDatabase, PerWorldBindings, ActivityLogging=AccessForIsolatedWorlds, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
+    [RuntimeEnabled=Database, MeasureAs=OpenWebDatabase, PerWorldBindings, ActivityLogging=ForIsolatedWorlds, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback creationCallback);
 };
 
diff --git a/modules/webmidi/MIDIConnectionEvent.idl b/modules/webmidi/MIDIConnectionEvent.idl
index 7ec690b..b53a633 100644
--- a/modules/webmidi/MIDIConnectionEvent.idl
+++ b/modules/webmidi/MIDIConnectionEvent.idl
@@ -29,8 +29,8 @@
  */
 
 [
+    EventConstructor,
     RuntimeEnabled=WebMIDI,
-    ConstructorTemplate=Event
 ] interface MIDIConnectionEvent : Event {
     [InitializedByEventConstructor] readonly attribute MIDIPort port;
 };
diff --git a/modules/webmidi/MIDIErrorCallback.idl b/modules/webmidi/MIDIErrorCallback.idl
index 0591bf6..4cf5308 100644
--- a/modules/webmidi/MIDIErrorCallback.idl
+++ b/modules/webmidi/MIDIErrorCallback.idl
@@ -29,5 +29,5 @@
  */
 
 callback interface MIDIErrorCallback {
-    boolean handleEvent(DOMError error);
+    void handleEvent(DOMError error);
 };
diff --git a/modules/webmidi/MIDIInput.idl b/modules/webmidi/MIDIInput.idl
index a4efa3f..7f3db64 100644
--- a/modules/webmidi/MIDIInput.idl
+++ b/modules/webmidi/MIDIInput.idl
@@ -29,9 +29,9 @@
  */
 
 [
-    CustomToV8,
+    ActiveDOMObject,
+    Custom=Wrap,
     NoInterfaceObject,
-    ActiveDOMObject
 ] interface MIDIInput : MIDIPort {
     attribute EventHandler onmidimessage;
 };
diff --git a/modules/webmidi/MIDIMessageEvent.idl b/modules/webmidi/MIDIMessageEvent.idl
index 087079e..2145c0a 100644
--- a/modules/webmidi/MIDIMessageEvent.idl
+++ b/modules/webmidi/MIDIMessageEvent.idl
@@ -31,8 +31,8 @@
 // FIXME: The spec doesn't provide details about constructor, yet.
 // See also, https://github.com/WebAudio/web-midi-api/issues/1 .
 [
+    EventConstructor,
     RuntimeEnabled=WebMIDI,
-    ConstructorTemplate=Event
 ] interface MIDIMessageEvent : Event {
     [InitializedByEventConstructor] readonly attribute double receivedTime;
     [InitializedByEventConstructor] readonly attribute Uint8Array data;
diff --git a/modules/webmidi/MIDIOutput.idl b/modules/webmidi/MIDIOutput.idl
index 06a75ce..726ed64 100644
--- a/modules/webmidi/MIDIOutput.idl
+++ b/modules/webmidi/MIDIOutput.idl
@@ -29,9 +29,9 @@
  */
 
 [
-    CustomToV8,
+    ActiveDOMObject,
+    Custom=Wrap,
     NoInterfaceObject,
-    ActiveDOMObject
 ] interface MIDIOutput : MIDIPort {
     [RaisesException] void send(Uint8Array data, optional double timestamp);
     [RaisesException] void send(sequence<unsigned long> data, optional double timestamp);
diff --git a/modules/webmidi/MIDISuccessCallback.idl b/modules/webmidi/MIDISuccessCallback.idl
index 179724b..b19f532 100644
--- a/modules/webmidi/MIDISuccessCallback.idl
+++ b/modules/webmidi/MIDISuccessCallback.idl
@@ -32,5 +32,5 @@
     // FIXME: The second argument should be Dictionary, but IDL generator
     // can not handle Dictionary as a handleEvent argument correctly now.
     // http://crbug.com/246161
-    boolean handleEvent(MIDIAccess access, boolean sysex);
+    void handleEvent(MIDIAccess access, boolean sysex);
 };
diff --git a/modules/websockets/CloseEvent.idl b/modules/websockets/CloseEvent.idl
index ce25834..be0f1e3 100644
--- a/modules/websockets/CloseEvent.idl
+++ b/modules/websockets/CloseEvent.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    ConstructorTemplate=Event
+    EventConstructor,
 ] interface CloseEvent : Event {
     [InitializedByEventConstructor] readonly attribute boolean wasClean;
     [InitializedByEventConstructor] readonly attribute unsigned short code;
diff --git a/modules/websockets/WebSocket.idl b/modules/websockets/WebSocket.idl
index 9430204..b5a4ca9 100644
--- a/modules/websockets/WebSocket.idl
+++ b/modules/websockets/WebSocket.idl
@@ -30,13 +30,13 @@
  */
 
 [
-    GlobalContext=Window&WorkerGlobalScope,
     ActiveDOMObject,
     Constructor(DOMString url),
     Constructor(DOMString url, sequence<DOMString> protocols),
     Constructor(DOMString url, DOMString protocol),
-    ConstructorRaisesException,
-    ConstructorCallWith=ExecutionContext
+    ConstructorCallWith=ExecutionContext,
+    GlobalContext=Window&WorkerGlobalScope,
+    RaisesException=Constructor,
 ] interface WebSocket : EventTarget {
     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
     readonly attribute DOMString url;