diff --git a/Modules/filesystem/DirectoryEntry.idl b/Modules/filesystem/DirectoryEntry.idl
deleted file mode 100644
index 3f18600..0000000
--- a/Modules/filesystem/DirectoryEntry.idl
+++ /dev/null
@@ -1,38 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=FILE_SYSTEM
-] interface DirectoryEntry : Entry {
-    DirectoryReader createReader();
-    void getFile(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, in [Optional] Dictionary options, in [Optional, Callback] EntryCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void getDirectory(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, in [Optional] Dictionary options, in [Optional, Callback] EntryCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void removeRecursively(in [Callback] VoidCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-};
diff --git a/Modules/filesystem/DirectoryEntrySync.idl b/Modules/filesystem/DirectoryEntrySync.idl
deleted file mode 100644
index 3a8f28f..0000000
--- a/Modules/filesystem/DirectoryEntrySync.idl
+++ /dev/null
@@ -1,38 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=FILE_SYSTEM
-] interface DirectoryEntrySync : EntrySync {
-    DirectoryReaderSync createReader() raises (FileException);
-    FileEntrySync getFile(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, in Dictionary flags) raises (FileException);
-    DirectoryEntrySync getDirectory(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, in Dictionary flags) raises (FileException);
-    void removeRecursively() raises (FileException);
-};
diff --git a/Modules/filesystem/DirectoryReader.idl b/Modules/filesystem/DirectoryReader.idl
deleted file mode 100644
index f2d307e..0000000
--- a/Modules/filesystem/DirectoryReader.idl
+++ /dev/null
@@ -1,36 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=FILE_SYSTEM,
-    ImplementationLacksVTable
-] interface DirectoryReader {
-    void readEntries(in [Callback] EntriesCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-};
diff --git a/Modules/filesystem/FileEntry.idl b/Modules/filesystem/FileEntry.idl
deleted file mode 100644
index 1735dc1..0000000
--- a/Modules/filesystem/FileEntry.idl
+++ /dev/null
@@ -1,36 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=FILE_SYSTEM
-] interface FileEntry : Entry {
-    void createWriter(in [Callback] FileWriterCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void file(in [Callback] FileCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-};
diff --git a/Modules/filesystem/FileEntrySync.idl b/Modules/filesystem/FileEntrySync.idl
deleted file mode 100644
index 2eba12e..0000000
--- a/Modules/filesystem/FileEntrySync.idl
+++ /dev/null
@@ -1,36 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=FILE_SYSTEM
-] interface FileEntrySync : EntrySync {
-    File file() raises (FileException);
-    FileWriterSync createWriter() raises (FileException);
-};
diff --git a/Modules/indexeddb/IDBIndex.idl b/Modules/indexeddb/IDBIndex.idl
deleted file mode 100644
index 4cb860e..0000000
--- a/Modules/indexeddb/IDBIndex.idl
+++ /dev/null
@@ -1,57 +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.
- */
-
-[
-    ImplementationLacksVTable
-] interface IDBIndex {
-    readonly attribute DOMString name;
-    readonly attribute IDBObjectStore objectStore;
-    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
-    readonly attribute boolean unique;
-    readonly attribute boolean multiEntry;
-
-    [CallWith=ScriptExecutionContext] IDBRequest openCursor(in [Optional] IDBKeyRange? range, in [Optional] DOMString direction)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest openCursor(in any key, in [Optional] DOMString direction)
-        raises (DOMException);
-
-    [CallWith=ScriptExecutionContext] IDBRequest openKeyCursor(in [Optional] IDBKeyRange? range, in [Optional] DOMString  direction)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest openKeyCursor(in any key, in [Optional] DOMString direction)
-        raises (DOMException);
-
-    [CallWith=ScriptExecutionContext] IDBRequest get(in IDBKeyRange? key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest get(in any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest getKey(in IDBKeyRange? key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest getKey(in any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest count(in [Optional] IDBKeyRange? range)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest count(in any key)
-        raises (DOMException);
-};
diff --git a/Modules/indexeddb/IDBObjectStore.idl b/Modules/indexeddb/IDBObjectStore.idl
deleted file mode 100644
index 700cf17..0000000
--- a/Modules/indexeddb/IDBObjectStore.idl
+++ /dev/null
@@ -1,66 +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.
- */
-
-[
-    ImplementationLacksVTable
-] interface IDBObjectStore {
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
-    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
-    readonly attribute DOMStringList indexNames;
-    readonly attribute IDBTransaction transaction;
-    readonly attribute boolean autoIncrement;
-
-    [CallWith=ScriptState] IDBRequest put(in any value, in [Optional] any key)
-        raises (DOMException);
-    [CallWith=ScriptState] IDBRequest add(in any value, in [Optional] any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction] IDBRequest delete(in IDBKeyRange? keyRange)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction] IDBRequest delete(in any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest clear()
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest get(in IDBKeyRange? key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest get(in any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest openCursor(in [Optional] IDBKeyRange? range, in [Optional] DOMString direction)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest openCursor(in any key, in [Optional] DOMString direction)
-        raises (DOMException);
-
-    [CallWith=ScriptExecutionContext] IDBIndex createIndex(in DOMString name, in sequence<DOMString> keyPath, in [Optional] Dictionary options)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBIndex createIndex(in DOMString name, in DOMString keyPath, in [Optional] Dictionary options)
-        raises (DOMException);
-    IDBIndex index(in DOMString name)
-        raises (DOMException);
-    void deleteIndex(in DOMString name)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest count(in [Optional] IDBKeyRange? range)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBRequest count(in any key)
-        raises (DOMException);
-};
diff --git a/Modules/mediastream/RTCPeerConnection.idl b/Modules/mediastream/RTCPeerConnection.idl
deleted file mode 100644
index a0dc1ce..0000000
--- a/Modules/mediastream/RTCPeerConnection.idl
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 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 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.
- */
-
-[
-    Conditional=MEDIA_STREAM,
-    ActiveDOMObject,
-    Constructor(in Dictionary rtcIceServers, in [Optional] Dictionary mediaConstraints),
-    ConstructorRaisesException,
-    CallWith=ScriptExecutionContext,
-    EventTarget
-] interface RTCPeerConnection {
-    void createOffer(in [Callback] RTCSessionDescriptionCallback successCallback, in [Callback,Optional=DefaultIsUndefined] RTCErrorCallback failureCallback, in [Optional] Dictionary mediaConstraints)
-        raises(DOMException);
-
-    void createAnswer(in [Callback] RTCSessionDescriptionCallback successCallback, in [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback, in [Optional] Dictionary mediaConstraints)
-        raises(DOMException);
-
-    void setLocalDescription(in RTCSessionDescription description, in [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, in [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback)
-        raises(DOMException);
-    readonly attribute RTCSessionDescription localDescription
-        getter raises(DOMException);
-
-    void setRemoteDescription(in RTCSessionDescription description, in [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, in [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback)
-        raises(DOMException);
-    readonly attribute RTCSessionDescription remoteDescription
-        getter raises(DOMException);
-
-    readonly attribute DOMString signalingState;
-
-    void updateIce(in [Optional] Dictionary configuration, in [Optional] Dictionary mediaConstraints)
-        raises(DOMException);
-
-    void addIceCandidate(in RTCIceCandidate candidate)
-        raises(DOMException);
-
-    readonly attribute DOMString iceGatheringState;
-    readonly attribute DOMString iceConnectionState;
-
-    sequence<MediaStream> getLocalStreams();
-    sequence<MediaStream> getRemoteStreams();
-    MediaStream getStreamById(DOMString streamId);
-
-    [StrictTypeChecking] void addStream(in MediaStream stream, in [Optional] Dictionary mediaConstraints)
-        raises(DOMException);
-    [StrictTypeChecking] void removeStream(in MediaStream stream)
-        raises(DOMException);
-
-    void getStats(in [Callback] RTCStatsCallback successCallback, in [Optional=DefaultIsUndefined] MediaStreamTrack selector);
-
-    RTCDataChannel createDataChannel(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString label, in [Optional] Dictionary options)
-         raises(DOMException);
-
-    RTCDTMFSender createDTMFSender(in MediaStreamTrack track)
-         raises(DOMException);
-
-    void close()
-        raises(DOMException);
-
-    attribute EventListener onnegotiationneeded;
-    attribute EventListener onicecandidate;
-    attribute EventListener onsignalingstatechange;
-    attribute EventListener onaddstream;
-    attribute EventListener onremovestream;
-    attribute EventListener oniceconnectionstatechange;
-    attribute EventListener ondatachannel;
-
-    // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
-};
-
diff --git a/Modules/networkinfo/NavigatorNetworkInfoConnection.idl b/Modules/networkinfo/NavigatorNetworkInfoConnection.idl
deleted file mode 100644
index 7cbf556..0000000
--- a/Modules/networkinfo/NavigatorNetworkInfoConnection.idl
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics. 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.
- */
-
-[
-    Conditional=NETWORK_INFO,
-    Supplemental=Navigator
-] interface NavigatorNetworkInfoConnection {
-    readonly attribute NetworkInfoConnection webkitConnection;
-};
-
diff --git a/Modules/networkinfo/NetworkInfoConnection.idl b/Modules/networkinfo/NetworkInfoConnection.idl
deleted file mode 100644
index 61edbe2..0000000
--- a/Modules/networkinfo/NetworkInfoConnection.idl
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics. All Rights Reserved.
- *
- * 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.
- */
-
-// http://dvcs.w3.org/hg/dap/raw-file/tip/network-api/index.html
-[
-    Conditional=NETWORK_INFO,
-    ActiveDOMObject,
-    EventTarget
-] interface NetworkInfoConnection {
-    readonly attribute double bandwidth;
-    readonly attribute boolean metered;
-
-    attribute EventListener onwebkitnetworkinfochange;
-
-    // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
-};
diff --git a/Modules/webaudio/AudioContext.idl b/Modules/webaudio/AudioContext.idl
deleted file mode 100644
index 0d5047d..0000000
--- a/Modules/webaudio/AudioContext.idl
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2010, Google Inc. All rights reserved.
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1.  Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
- */
-
-[
-    Conditional=WEB_AUDIO,
-    ActiveDOMObject,
-    CustomConstructor,
-    ConstructorParameters=0,
-    EventTarget
-] interface AudioContext {
-    // All rendered audio ultimately connects to destination, which represents the audio hardware.
-    readonly attribute AudioDestinationNode destination;
-
-    // All scheduled times are relative to this time in seconds.
-    readonly attribute float currentTime;
-
-    // All AudioNodes in the context run at this sample-rate (in sample-frames per second).
-    readonly attribute float sampleRate;
-
-    // All panning is relative to this listener.
-    readonly attribute AudioListener listener;
-
-    // Number of AudioBufferSourceNodes that are currently playing.
-    readonly attribute unsigned long activeSourceCount;
-    
-    AudioBuffer createBuffer(in unsigned long numberOfChannels, in unsigned long numberOfFrames, in float sampleRate)
-        raises(DOMException);
-    AudioBuffer createBuffer(in ArrayBuffer? buffer, in boolean mixToMono)
-        raises(DOMException);
-
-    // Asynchronous audio file data decoding.
-    void decodeAudioData(in ArrayBuffer audioData, in [Callback] AudioBufferCallback successCallback, in [Optional, Callback] AudioBufferCallback errorCallback)
-        raises(DOMException);
-
-    // Sources
-    AudioBufferSourceNode createBufferSource();
-
-#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
-    MediaElementAudioSourceNode createMediaElementSource(in HTMLMediaElement mediaElement)
-        raises(DOMException);
-#endif
-
-#if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
-    MediaStreamAudioSourceNode createMediaStreamSource(in MediaStream mediaStream)
-        raises(DOMException);
-    MediaStreamAudioDestinationNode createMediaStreamDestination();
-#endif
-
-    // Processing nodes
-    GainNode createGain();
-    DelayNode createDelay(in [Optional] double maxDelayTime) raises(DOMException);
-    BiquadFilterNode createBiquadFilter();
-    WaveShaperNode createWaveShaper();
-    PannerNode createPanner();
-    ConvolverNode createConvolver();
-    DynamicsCompressorNode createDynamicsCompressor();
-    AnalyserNode createAnalyser();
-    ScriptProcessorNode createScriptProcessor(in unsigned long bufferSize, in [Optional] unsigned long numberOfInputChannels, in [Optional] unsigned long numberOfOutputChannels)
-        raises(DOMException);
-    OscillatorNode createOscillator();
-    WaveTable createWaveTable(in Float32Array real, in Float32Array imag)
-        raises(DOMException);
-
-    // Channel splitting and merging
-    ChannelSplitterNode createChannelSplitter(in [Optional] unsigned long numberOfOutputs)
-        raises(DOMException);
-    ChannelMergerNode createChannelMerger(in [Optional] unsigned long numberOfInputs)
-        raises(DOMException);
-
-    // Offline rendering
-    // void prepareOfflineBufferRendering(in unsigned long numberOfChannels, in unsigned long numberOfFrames, in float sampleRate);
-    attribute EventListener oncomplete;
-    void startRendering();
-
-#if defined(ENABLE_LEGACY_WEB_AUDIO) && ENABLE_LEGACY_WEB_AUDIO
-    [V8MeasureAs=LegacyWebAudio, ImplementedAs=createGain] GainNode createGainNode();
-    [V8MeasureAs=LegacyWebAudio, ImplementedAs=createDelay] DelayNode createDelayNode(in [Optional] double maxDelayTime) 
-        raises(DOMException);
-
-    [V8MeasureAs=LegacyWebAudio, ImplementedAs=createScriptProcessor] ScriptProcessorNode createJavaScriptNode(in unsigned long bufferSize, in [Optional] unsigned long numberOfInputChannels, in [Optional] unsigned long numberOfOutputChannels)
-        raises(DOMException);
-#endif
-
-};
diff --git a/Modules/webdatabase/DatabaseCallback.idl b/Modules/webdatabase/DatabaseCallback.idl
deleted file mode 100644
index 1933ff9..0000000
--- a/Modules/webdatabase/DatabaseCallback.idl
+++ /dev/null
@@ -1,35 +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.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    Conditional=SQL_DATABASE,
-    Callback
-] interface DatabaseCallback {
-    boolean handleEvent(in Database database);
-    boolean handleEvent(in DatabaseSync database);
-};
diff --git a/Modules/webdatabase/SQLResultSet.idl b/Modules/webdatabase/SQLResultSet.idl
deleted file mode 100644
index 541d8ca..0000000
--- a/Modules/webdatabase/SQLResultSet.idl
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
-    ImplementationLacksVTable
-] interface SQLResultSet {
-    readonly attribute SQLResultSetRowList rows;
-
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-    readonly attribute long insertId
-        getter raises(DOMException);
-#else
-    // Explicitely choose 'long long' here to avoid a 64bit->32bit shortening warning for us.
-    readonly attribute long long insertId
-        getter raises(DOMException);
-#endif
-    readonly attribute long rowsAffected;
-};
diff --git a/Modules/webdatabase/SQLTransaction.idl b/Modules/webdatabase/SQLTransaction.idl
deleted file mode 100644
index f3a252c..0000000
--- a/Modules/webdatabase/SQLTransaction.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
-    ImplementationLacksVTable
-] interface SQLTransaction {
-    [Custom] void executeSql(in DOMString sqlStatement,
-                             in ObjectArray arguments,
-                             in [Optional, Callback] SQLStatementCallback callback,
-                             in [Optional, Callback] SQLStatementErrorCallback errorCallback);
-};
diff --git a/Modules/webdatabase/SQLTransactionSync.idl b/Modules/webdatabase/SQLTransactionSync.idl
deleted file mode 100644
index 7221c94..0000000
--- a/Modules/webdatabase/SQLTransactionSync.idl
+++ /dev/null
@@ -1,37 +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:
- *
- *     * 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.
- */
-
-[
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
-    ImplementationLacksVTable
-] interface SQLTransactionSync {
-    [Custom] SQLResultSet executeSql(in DOMString sqlStatement, in ObjectArray arguments);
-};
diff --git a/Modules/webdatabase/WorkerContextWebDatabase.idl b/Modules/webdatabase/WorkerContextWebDatabase.idl
deleted file mode 100644
index 90bb521..0000000
--- a/Modules/webdatabase/WorkerContextWebDatabase.idl
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- *
- */
-
-[
-    Conditional=SQL_DATABASE,
-    Supplemental=WorkerContext
-] interface WorkerContextWebDatabase {
-    [V8EnabledAtRuntime] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
-        raises(DOMException);
-
-    [V8EnabledAtRuntime] DatabaseSync openDatabaseSync(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
-        raises(DOMException);
-};
-
diff --git a/README b/README
index 84f6428..fb8e9c0 100644
--- a/README
+++ b/README
@@ -6,4 +6,4 @@
 
 The current version corresponds to:
 URL: http://src.chromium.org/multivm/trunk/webkit
-Current revision: 1177
+Current revision: 1184
diff --git a/WebCore.gyp/scripts/action_csspropertynames.py b/WebCore.gyp/scripts/action_csspropertynames.py
index eabecc4..b95540d 100644
--- a/WebCore.gyp/scripts/action_csspropertynames.py
+++ b/WebCore.gyp/scripts/action_csspropertynames.py
@@ -137,7 +137,7 @@
     # scriptsPath is a Perl include directory, located relative to
     # makepropInput.
     scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makepropInput), os.pardir, 'bindings', 'scripts'))
+        os.path.join(os.path.dirname(makepropInput), os.pardir, 'scripts'))
 
     # Build up the command.
     command = ['perl', '-I', scriptsPath, makepropInput]
diff --git a/WebCore.gyp/scripts/action_cssvaluekeywords.py b/WebCore.gyp/scripts/action_cssvaluekeywords.py
index ccfb4c6..8232fb4 100644
--- a/WebCore.gyp/scripts/action_cssvaluekeywords.py
+++ b/WebCore.gyp/scripts/action_cssvaluekeywords.py
@@ -141,7 +141,7 @@
     # scriptsPath is a Perl include directory, located relative to
     # makevaluesInput.
     scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makevaluesInput), os.pardir, 'bindings', 'scripts'))
+        os.path.join(os.path.dirname(makevaluesInput), os.pardir, 'scripts'))
 
     # Build up the command.
     command = ['perl', '-I', scriptsPath, makevaluesInput]
diff --git a/WebCore.gyp/scripts/action_derivedsourcesallinone.py b/WebCore.gyp/scripts/action_derivedsourcesallinone.py
index bac8081..34b7b7a 100644
--- a/WebCore.gyp/scripts/action_derivedsourcesallinone.py
+++ b/WebCore.gyp/scripts/action_derivedsourcesallinone.py
@@ -41,6 +41,8 @@
 #
 # Note that IDL_FILES_LIST is a text file containing the IDL file paths.
 
+# FIXME: Move to bindings/scripts
+
 import errno
 import os
 import os.path
diff --git a/WebCore.gyp/scripts/action_makenames.py b/WebCore.gyp/scripts/action_makenames.py
index 813b864..4cf45cd 100644
--- a/WebCore.gyp/scripts/action_makenames.py
+++ b/WebCore.gyp/scripts/action_makenames.py
@@ -142,7 +142,7 @@
     # scriptsPath is a Perl include directory, located relative to
     # makeNamesInput.
     scriptsPath = os.path.normpath(
-        os.path.join(os.path.dirname(makeNamesInput), os.pardir, 'bindings', 'scripts'))
+        os.path.join(os.path.dirname(makeNamesInput), os.pardir, 'scripts'))
 
     # Change to the output directory because make_names.pl puts output in its
     # working directory.
diff --git a/bindings/scripts/test/TestCallback.idl b/bindings/scripts/test/TestCallback.idl
deleted file mode 100644
index ed19447..0000000
--- a/bindings/scripts/test/TestCallback.idl
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator with an interface
-// that has the "Callback" attribute and for tracking changes in its ouput.
-[
-    Conditional=SQL_DATABASE,
-    Callback
-] interface TestCallback {
-  boolean callbackWithNoParam();
-  boolean callbackWithClass1Param(in Class1 class1Param);
-  boolean callbackWithClass2Param(in Class2 class2Param, in DOMString strArg);
-  long callbackWithNonBoolReturnType(in Class3 class3Param);
-  [Custom] long customCallback(in Class5 class5Param, in Class6 class6Param);
-  boolean callbackWithStringList(in DOMStringList listParam);
-  boolean callbackWithBoolean(in boolean boolParam);
-  [PassThisToCallback=ThisClass] boolean callbackRequiresThisToPass(in Class8 class8Param, in ThisClass thisClassParam);
-};
diff --git a/bindings/scripts/test/TestCustomNamedGetter.idl b/bindings/scripts/test/TestCustomNamedGetter.idl
deleted file mode 100644
index 18f037b..0000000
--- a/bindings/scripts/test/TestCustomNamedGetter.idl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-[
-    CustomNamedGetter
-] interface TestCustomNamedGetter {
-    void anotherFunction(in DOMString str);
-};
-
diff --git a/bindings/scripts/test/TestDomainSecurity.idl b/bindings/scripts/test/TestDomainSecurity.idl
deleted file mode 100644
index 9447ed9..0000000
--- a/bindings/scripts/test/TestDomainSecurity.idl
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-[
-    CheckSecurity
-] interface TestActiveDOMObject {
-    readonly attribute long excitingAttr;
-    void excitingFunction(in Node nextChild);
-    [DoNotCheckSecurity] void postMessage(in DOMString message);
-};
diff --git a/bindings/scripts/test/TestEventConstructor.idl b/bindings/scripts/test/TestEventConstructor.idl
deleted file mode 100644
index 60e8af0..0000000
--- a/bindings/scripts/test/TestEventConstructor.idl
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-[
-    ConstructorTemplate=Event
-] interface TestEventConstructor {
-    // Attributes
-    readonly attribute DOMString attr1;
-    [InitializedByEventConstructor] readonly attribute DOMString attr2;
-};
diff --git a/bindings/scripts/test/TestEventTarget.idl b/bindings/scripts/test/TestEventTarget.idl
deleted file mode 100644
index c322601..0000000
--- a/bindings/scripts/test/TestEventTarget.idl
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-[
-    EventTarget,
-    IndexedGetter,
-    NamedGetter,
-    MasqueradesAsUndefined
-] interface TestEventTarget {
-
-    Node item(in [IsIndex] unsigned long index);
-
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
-};
-
diff --git a/bindings/scripts/test/TestException.idl b/bindings/scripts/test/TestException.idl
deleted file mode 100644
index cd5773c..0000000
--- a/bindings/scripts/test/TestException.idl
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-exception TestException {
-   readonly attribute DOMString name;
-};
diff --git a/bindings/scripts/test/TestInterface.idl b/bindings/scripts/test/TestInterface.idl
deleted file mode 100644
index f409e84..0000000
--- a/bindings/scripts/test/TestInterface.idl
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-[
-    ActiveDOMObject,
-    CustomNamedSetter,
-    Conditional=Condition1|Condition2,
-    CallWith=ScriptExecutionContext,
-    Constructor(in DOMString str1, in [Optional=DefaultIsUndefined] DOMString str2),
-    ConstructorRaisesException,
-    ConstructorConditional=TEST_INTERFACE
-] interface TestInterface {
-};
diff --git a/bindings/scripts/test/TestMediaQueryListListener.idl b/bindings/scripts/test/TestMediaQueryListListener.idl
deleted file mode 100644
index ed0222c..0000000
--- a/bindings/scripts/test/TestMediaQueryListListener.idl
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// This IDL file is for testing the bindings code generator with an interface
-// that has methods receiving a parameter of the type MediaQueryListListener.
-interface TestMediaQueryListListener {
-    void method(in MediaQueryListListener listener);
-};
diff --git a/bindings/scripts/test/TestNamedConstructor.idl b/bindings/scripts/test/TestNamedConstructor.idl
deleted file mode 100644
index 998efb5..0000000
--- a/bindings/scripts/test/TestNamedConstructor.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-[
-    ActiveDOMObject,
-    NamedConstructor=Audio(in DOMString str1, in [Optional=DefaultIsUndefined] DOMString str2, in [Optional=DefaultIsNullString] DOMString str3),
-    ConstructorRaisesException
-] interface TestNamedConstructor {
-};
diff --git a/bindings/scripts/test/TestNode.idl b/bindings/scripts/test/TestNode.idl
deleted file mode 100644
index 65b0151..0000000
--- a/bindings/scripts/test/TestNode.idl
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009 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.
- */
-
-[
-    EventTarget,
-    Constructor,
-    V8DependentLifetime
-] interface TestNode : Node {
-};
-
diff --git a/bindings/scripts/test/TestObj.idl b/bindings/scripts/test/TestObj.idl
deleted file mode 100644
index 98deed4..0000000
--- a/bindings/scripts/test/TestObj.idl
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (C) 2009 Google Inc. All rights reserved.
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-
-enum TestEnumType { "", "EnumValue1", "EnumValue2", "EnumValue3" };
-
-[
-    Constructor(in [Callback] TestCallback testCallback),
-    InterfaceName=TestObject
-] interface TestObj {
-    // Attributes
-    readonly attribute long            readOnlyLongAttr;
-    readonly attribute DOMString       readOnlyStringAttr;
-    readonly attribute TestObj         readOnlyTestObjAttr;
-    static readonly attribute long     staticReadOnlyLongAttr;
-    static attribute DOMString         staticStringAttr;
-    static readonly attribute TestSubObjConstructor TestSubObj;
-    attribute TestEnumType             enumAttr;
-    attribute short                    shortAttr;
-    attribute unsigned short           unsignedShortAttr;
-    attribute long                     longAttr;
-    attribute long long                longLongAttr;
-    attribute unsigned long long       unsignedLongLongAttr;
-    attribute DOMString                stringAttr;
-    [V8MeasureAs=TestFeature] attribute TestObj testObjAttr;
-
-    // WK_ucfirst, WK_lcfirst exceptional cases.
-    attribute TestObj                  XMLObjAttr;
-    attribute boolean                  create;
-
-    // Reflected DOM attributes
-    [Reflect] attribute DOMString reflectedStringAttr;
-    [Reflect] attribute long reflectedIntegralAttr;
-    [Reflect] attribute unsigned long reflectedUnsignedIntegralAttr;
-    [Reflect] attribute boolean reflectedBooleanAttr;
-    [Reflect, URL] attribute DOMString reflectedURLAttr;
-    [Reflect=customContentStringAttr] attribute DOMString reflectedStringAttr;
-    [Reflect=customContentIntegralAttr] attribute long reflectedCustomIntegralAttr;
-    [Reflect=customContentBooleanAttr] attribute boolean reflectedCustomBooleanAttr;
-    [Reflect=customContentURLAttr, URL] attribute DOMString reflectedCustomURLAttr;
-
-    // TypedArray attribute
-    attribute Float32Array typedArrayAttr;
-
-    // Methods
-    void    voidMethod();
-    void    voidMethodWithArgs(in long longArg, in DOMString strArg, in TestObj objArg);
-    long    longMethod();
-    long    longMethodWithArgs(in long longArg, in DOMString strArg, in TestObj objArg);
-    [V8MeasureAs=TestFeature] TestObj objMethod();
-    TestObj objMethodWithArgs(in long longArg, in DOMString strArg, in TestObj objArg);
-
-    void methodWithSequenceArg(in sequence<ScriptProfile> sequenceArg);
-    sequence<ScriptProfile> methodReturningSequence(in long longArg);
-
-    void methodWithEnumArg(in TestEnumType enumArg);
-    TestObj methodThatRequiresAllArgsAndThrows(in DOMString strArg, in TestObj objArg)
-        raises(DOMException);
-
-    void serializedValue(in SerializedScriptValue serializedArg);
-    void optionsObject(in Dictionary oo, in [Optional] Dictionary ooo);
-
-    // Exceptions
-    void methodWithException() raises(DOMException);
-    attribute long attrWithGetterException getter raises(DOMException);
-    attribute long attrWithSetterException setter raises(DOMException);
-    attribute DOMString stringAttrWithGetterException getter raises(DOMException);
-    attribute DOMString stringAttrWithSetterException setter raises(DOMException);
-
-    // 'Custom' extended attribute
-    [Custom] attribute long            customAttr;
-    [Custom, V8MeasureAs=CustomTestFeature] void customMethod();
-    [Custom] void customMethodWithArgs(in long longArg, in DOMString strArg, in TestObj objArg);
-
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-
-    // 'CallWith' extended attribute
-    [CallWith=ScriptState] void withScriptStateVoid();
-    [CallWith=ScriptState] TestObj withScriptStateObj();
-    [CallWith=ScriptState] void withScriptStateVoidException()
-        raises(DOMException);
-    [CallWith=ScriptState] TestObj withScriptStateObjException()
-        raises(DOMException);
-    [CallWith=ScriptExecutionContext] void withScriptExecutionContext();
-    [CallWith=ScriptExecutionContext|ScriptState] void withScriptExecutionContextAndScriptState();
-    [CallWith=ScriptExecutionContext|ScriptState] TestObj withScriptExecutionContextAndScriptStateObjException()
-        raises(DOMException);
-    [CallWith=  ScriptExecutionContext  |  ScriptState  ] TestObj withScriptExecutionContextAndScriptStateWithSpaces();
-    [CallWith=ScriptArguments|CallStack] void withScriptArgumentsAndCallStack();
-
-    [CallWith=ScriptState] attribute long withScriptStateAttribute;
-    [CallWith=ScriptExecutionContext] attribute TestObj withScriptExecutionContextAttribute;
-    [CallWith=ScriptState] attribute TestObj withScriptStateAttributeRaises
-        getter raises(DOMException);
-    [CallWith=ScriptExecutionContext] attribute TestObj withScriptExecutionContextAttributeRaises
-        getter raises(DOMException);
-    [CallWith=ScriptExecutionContext|ScriptState] attribute TestObj withScriptExecutionContextAndScriptStateAttribute;
-    [CallWith=ScriptExecutionContext|ScriptState] attribute TestObj withScriptExecutionContextAndScriptStateAttributeRaises
-        getter raises(DOMException);
-    [CallWith=  ScriptExecutionContext  |  ScriptState  ] attribute TestObj withScriptExecutionContextAndScriptStateWithSpacesAttribute;
-    [CallWith=ScriptArguments|CallStack] attribute TestObj withScriptArgumentsAndCallStackAttribute;
-
-    // 'Optional' extended attribute
-    void    methodWithOptionalArg(in [Optional] long opt);
-    void    methodWithNonOptionalArgAndOptionalArg(in long nonOpt, in [Optional] long opt);
-    void    methodWithNonOptionalArgAndTwoOptionalArgs(in long nonOpt, in [Optional] long opt1, in [Optional] long opt2);
-    void    methodWithOptionalString(in [Optional] DOMString str);
-    void    methodWithOptionalStringIsUndefined(in [Optional=DefaultIsUndefined] DOMString str);
-    void    methodWithOptionalStringIsNullString(in [Optional=DefaultIsNullString] DOMString str);
-
-#if defined(TESTING_V8) || defined(TESTING_JS)
-    // 'Callback' extended attribute
-    void    methodWithCallbackArg(in [Callback] TestCallback callback);
-    void    methodWithNonCallbackArgAndCallbackArg(in long nonCallback, in [Callback] TestCallback callback);
-    void    methodWithCallbackAndOptionalArg(in [Callback, Optional] TestCallback callback);
-    // static methods with 'Callback' extended attribute
-    static void    staticMethodWithCallbackAndOptionalArg(in [Callback, Optional] TestCallback callback);
-    static void    staticMethodWithCallbackArg(in [Callback] TestCallback callback);
-#endif
-
-#if defined(TESTING_V8)
-    // 'EnforceRange' extended attribute
-    void    methodWithEnforceRangeInt32(in [EnforceRange] long value);
-    void    methodWithEnforceRangeUInt32(in [EnforceRange] unsigned long value);
-    void    methodWithEnforceRangeInt64(in [EnforceRange] long long value);
-    void    methodWithEnforceRangeUInt64(in [EnforceRange] unsigned long long value);
-
-    attribute [EnforceRange] long enforcedRangeLongAttr;
-    attribute [EnforceRange] unsigned long enforcedRangeUnsignedLongAttr;
-    attribute [EnforceRange] long long enforcedRangeLongLongAttr;
-    attribute [EnforceRange] unsigned long long enforcedRangeUnsignedLongLongAttr;
-#endif
-
-    // 'Conditional' extended attribute
-    [Conditional=Condition1] attribute long conditionalAttr1;
-    [Conditional=Condition1&Condition2] attribute long conditionalAttr2;
-    [Conditional=Condition1|Condition2] attribute long conditionalAttr3;
-
-    // 'Conditional' extended method
-    [Conditional=Condition1] DOMString conditionalMethod1();
-    [Conditional=Condition1&Condition2] void conditionalMethod2();
-    [Conditional=Condition1|Condition2] void conditionalMethod3();
-
-    [Conditional=Condition1] attribute TestObjectAConstructor conditionalAttr4;
-    [Conditional=Condition1&Condition2] attribute TestObjectBConstructor conditionalAttr5;
-    [Conditional=Condition1|Condition2] attribute TestObjectCConstructor conditionalAttr6;
-
-    [Conditional=Condition1] const unsigned short CONDITIONAL_CONST = 0;
-
-#if defined(TESTING_V8) || defined(TESTING_JS)
-    [CachedAttribute] readonly attribute any cachedAttribute1;
-    [CachedAttribute] readonly attribute any cachedAttribute2;
-#endif
-    
-    attribute any anyAttribute;
-
-#if defined(TESTING_V8) || defined(TESTING_JS)
-    // Overloads
-    void    overloadedMethod(in TestObj? objArg, in [StrictTypeChecking] DOMString strArg);
-    void    overloadedMethod(in TestObj? objArg, in [Optional] long longArg);
-    void    overloadedMethod(in [StrictTypeChecking] DOMString strArg);
-    void    overloadedMethod(in long longArg);
-    void    overloadedMethod(in [Callback] TestCallback callback);
-    void    overloadedMethod(in DOMStringList? listArg);
-    void    overloadedMethod(in DOMString[]? arrayArg);
-    void    overloadedMethod(in TestObj objArg);
-    void    overloadedMethod(in DOMString[] arrayArg);
-    void    overloadedMethod(in sequence<unsigned long> arrayArg);
-    void    overloadedMethod(in DOMString strArg);
-#endif
-
-    // Class methods within JavaScript (like what's used for IDBKeyRange).
-    static void classMethod();
-    static long classMethodWithOptional(in [Optional] long arg);
-    [Custom] static void classMethod2(in long arg);
-
-    // Static method with conditional on overloaded methods
-    [Conditional=Condition1] static void overloadedMethod1(in long arg);
-    [Conditional=Condition1] static void overloadedMethod1(in [StrictTypeChecking] DOMString type);
-
-    void classMethodWithClamp(in [Clamp] unsigned short objArgsShort, in [Clamp] unsigned long objArgsLong);
-
-#if defined(TESTING_V8)
-    // 'V8EnabledAtRuntime' methods and attributes.
-    [V8EnabledAtRuntime] void enabledAtRuntimeMethod1(in long longArg);
-    [V8EnabledAtRuntime=FeatureName] void enabledAtRuntimeMethod2(in long longArg);
-    [V8EnabledAtRuntime] attribute long enabledAtRuntimeAttr1;
-    [V8EnabledAtRuntime=FeatureName] attribute long enabledAtRuntimeAttr2;
-    // 'V8EnabledPerContext' methods and attributes.
-    [V8EnabledPerContext] void enabledPerContextMethod1(in long longArg);
-    [V8EnabledPerContext=FeatureName] void enabledPerContextMethod2(in long longArg);
-    [V8EnabledPerContext] attribute long enabledPerContextAttr1;
-    [V8EnabledPerContext=FeatureName] attribute long enabledPerContextAttr2;
-#endif
-
-
-#if defined(TESTING_V8)
-    attribute float[]                   floatArray;
-    attribute double[]                  doubleArray;
-#endif
-
-#if defined(TESTING_JS)
-    void methodWithUnsignedLongSequence(in sequence<unsigned long> unsignedLongSequence);
-#endif
-#if defined(TESTING_V8) || defined(TESTING_JS)
-    DOMString[] stringArrayFunction(in DOMString[] values) raises(DOMException);
-    DOMStringList domStringListFunction(in DOMStringList values) raises(DOMException);
-#endif
-
-    [CheckSecurityForNode] readonly attribute Document contentDocument;
-    [CheckSecurityForNode] SVGDocument getSVGDocument()
-        raises(DOMException);
-
-    void convert1(in [TreatReturnedNullStringAs=Null] a value);
-    void convert2(in [TreatReturnedNullStringAs=Undefined] b value);
-    void convert4(in [TreatNullAs=NullString] d value);
-    void convert5(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] e value);
-
-    attribute SVGPoint mutablePoint;
-    [Immutable] attribute SVGPoint immutablePoint;
-    SVGPoint mutablePointFunction();
-    [Immutable] SVGPoint immutablePointFunction();
-
-    [ImplementedAs=banana] void orange();
-    [ImplementedAs=blueberry] attribute long strawberry;
-
-    [StrictTypeChecking] attribute float strictFloat;
-    [StrictTypeChecking] bool strictFunction(in DOMString str, in float a, in long b)
-        raises(DOMException);
-
-    // ObjectiveC reserved words.
-    readonly attribute long      description;
-    attribute long               id;
-    readonly attribute DOMString hash;
-
-    // Check constants and enums.
-    const unsigned short CONST_VALUE_0 = 0;
-    const unsigned short CONST_VALUE_1 = 1;
-    const unsigned short CONST_VALUE_2 = 2;
-    const unsigned short CONST_VALUE_4 = 4;
-    const unsigned short CONST_VALUE_8 = 8;
-    const short CONST_VALUE_9 = -1;
-    const DOMString CONST_VALUE_10 = "my constant string";
-    const unsigned short CONST_VALUE_11 = 0xffffffff;
-    const unsigned short CONST_VALUE_12 = 0x01;
-    const unsigned short CONST_VALUE_13 = 0X20;
-    const unsigned short CONST_VALUE_14 = 0x1abc;
-    [Reflect=CONST_IMPL] const unsigned short CONST_JAVASCRIPT = 15;
-
-    [Replaceable] readonly attribute long replaceableAttribute;
-
-    void variadicStringMethod(in DOMString head, in DOMString... tail);
-    void variadicDoubleMethod(in double head, in double... tail);
-    void variadicNodeMethod(in Node head, in Node... tail);
-
-    // Nullable attributes.
-    readonly attribute double? nullableDoubleAttribute;
-    readonly attribute long? nullableLongAttribute;
-    readonly attribute boolean? nullableBooleanAttribute;
-    readonly attribute DOMString? nullableStringAttribute;
-
-    attribute long? nullableLongSettableAttribute;
-
-    attribute long? nullableStringValue
-        getter raises(DOMException);
-
-#if defined(TESTING_V8)
-    [V8PerWorldBindings] readonly attribute TestObj perWorldReadOnlyAttribute;
-    [V8PerWorldBindings] attribute TestObj perWorldAttribute;
-    [V8PerWorldBindings] void perWorldMethod();
-    [V8PerWorldBindings] void overloadedPerWorldMethod(in long longArg);
-    [V8PerWorldBindings] void overloadedPerWorldMethod(in DOMString strArg, in long longArg);
-#endif
-};
diff --git a/bindings/scripts/test/TestOverloadedConstructors.idl b/bindings/scripts/test/TestOverloadedConstructors.idl
deleted file mode 100644
index 6a386f5..0000000
--- a/bindings/scripts/test/TestOverloadedConstructors.idl
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-[
-    Constructor(in ArrayBuffer arrayBuffer),
-    Constructor(in ArrayBufferView arrayBufferView),
-    Constructor(in Blob blob),
-    Constructor(in DOMString string),
-] interface TestOverloadedConstructors {
-};
diff --git a/bindings/scripts/test/TestSerializedScriptValueInterface.idl b/bindings/scripts/test/TestSerializedScriptValueInterface.idl
deleted file mode 100644
index 687eac5..0000000
--- a/bindings/scripts/test/TestSerializedScriptValueInterface.idl
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-[
-    Conditional=Condition1|Condition2,
-    Constructor(in DOMString hello, in [TransferList=transferList] SerializedScriptValue data, in [Optional=DefaultIsUndefined] Array transferList),
-] interface TestSerializedScriptValueInterface {
-    attribute SerializedScriptValue value;
-    readonly attribute SerializedScriptValue readonlyValue;
-    [CachedAttribute] attribute SerializedScriptValue cachedValue;
-    readonly attribute MessagePortArray ports;
-    [CachedAttribute] readonly attribute SerializedScriptValue cachedReadonlyValue;
-    void acceptTransferList(in [TransferList=transferList] SerializedScriptValue data, in [Optional] Array transferList);
-    void multiTransferList(in [Optional, TransferList=tx] SerializedScriptValue first, in [Optional] Array tx, in [Optional, TransferList=txx] SerializedScriptValue second, in [Optional] Array txx);
-};
diff --git a/bindings/scripts/test/TestSupplemental.idl b/bindings/scripts/test/TestSupplemental.idl
deleted file mode 100644
index d88a6cc..0000000
--- a/bindings/scripts/test/TestSupplemental.idl
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary formstrArg, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIEstrArg, 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.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-[
-    Conditional=Condition11|Condition12,
-    Supplemental=TestInterface
-] interface TestSupplemental {
-    static readonly attribute long supplementalStaticReadOnlyAttr;
-    static attribute DOMString supplementalStaticAttr;
-    readonly attribute DOMString supplementalStr1;
-    attribute DOMString supplementalStr2;
-    [CustomGetter, CustomSetter] attribute DOMString supplementalStr3;
-    attribute Node supplementalNode;
-
-    void supplementalMethod1();
-    [CallWith=ScriptExecutionContext] TestObj supplementalMethod2(in DOMString strArg, in TestObj objArg) raises(DOMException);
-    [Custom] void supplementalMethod3();
-    static void supplementalMethod4();
-
-    const unsigned short SUPPLEMENTALCONSTANT1 = 1;
-    [Reflect=CONST_IMPL] const unsigned short SUPPLEMENTALCONSTANT2 = 2;
-};
diff --git a/bindings/scripts/test/TestTypedArray.idl b/bindings/scripts/test/TestTypedArray.idl
deleted file mode 100644
index 7d41fff..0000000
--- a/bindings/scripts/test/TestTypedArray.idl
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
-    ConstructorTemplate=TypedArray,
-    ConstructorParameters=123,
-    NumericIndexedGetter,
-    CustomIndexedSetter,
-    CustomToJSObject,
-    DoNotCheckConstants,
-    TypedArray=double
-] interface Float64Array : ArrayBufferView {
-    Int32Array foo(in Float32Array array);
-    void set();
-};
diff --git a/bindings/scripts/test/TestTypedefs.idl b/bindings/scripts/test/TestTypedefs.idl
deleted file mode 100644
index 7851089..0000000
--- a/bindings/scripts/test/TestTypedefs.idl
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-// This IDL file is for testing the bindings code generator and for tracking
-// changes in its ouput.
-
-[
-    Constructor(in STRING hello, in TEST_CALLBACK testCallback),
-] interface TestTypedefs {
-    attribute ULONGLONG unsignedLongLongAttr;
-
-    [Immutable] attribute SCRIPT_VALUE immutableSerializedScriptValue;
-    
-    static readonly attribute T TestSubObj;
-
-    [StrictTypeChecking] void func(in [Optional] ARRAY_OF_LONGS x);
-
-    void multiTransferList(in [TransferList=tx] SCRIPT_VALUE first, in [Optional] ARRAY tx, in [Optional] TRANSFER_TXX_SCRIPT_VALUE second, in [Optional] ARRAY txx);
-
-    void setShadow(in DOUBLE width, in DOUBLE height, in float blur, in [StrictTypeChecking] OPTIONAL_STRING color, in [Optional] DOUBLE alpha);
-
-    ULONGLONG methodWithSequenceArg(in sequence<SCRIPT_VALUE> sequenceArg);
-
-    void nullableArrayArg(in ARRAY_OF_STRINGS? arrayArg);
-
-    void funcWithClamp(in ULONGLONG_CLAMP arg1, in [Optional] ULONGLONG_CLAMP arg2);
-
-    [Immutable] SVGPOINT immutablePointFunction();
-
-    ARRAY_OF_STRINGS stringArrayFunction(in ARRAY_OF_STRINGS values) raises(E);
-    STRING[] stringArrayFunction2(in STRING[] values) raises(E);
-
-    // Exceptions
-    void methodWithException() raises(E);
-    attribute long attrWithGetterException getter raises(E);
-    attribute long attrWithSetterException setter raises(E);
-    attribute DOMString stringAttrWithGetterException getter raises(E);
-    attribute DOMString stringAttrWithSetterException setter raises(E);
-};
-
-typedef float                      DOUBLE;
-typedef unsigned long long         ULONGLONG;
-typedef [Clamp] unsigned long long ULONGLONG_CLAMP;
-typedef SerializedScriptValue      SCRIPT_VALUE;
-typedef long[]                     ARRAY_OF_LONGS;
-typedef SVGPoint                   SVGPOINT;
-typedef DOMString                  STRING;
-typedef [Optional] DOMString       OPTIONAL_STRING;
-typedef DOMString[]                ARRAY_OF_STRINGS;
-typedef [Callback] TestCallback    TEST_CALLBACK;
-typedef TestSubObjConstructor      T;
-typedef Array                      ARRAY;
-typedef DOMException               E;
-typedef [TransferList=txx] SerializedScriptValue TRANSFER_TXX_SCRIPT_VALUE;
diff --git a/css/CSSCharsetRule.idl b/css/CSSCharsetRule.idl
index d2386de..a6eab93 100644
--- a/css/CSSCharsetRule.idl
+++ b/css/CSSCharsetRule.idl
@@ -18,13 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in DOM Level 2:
 interface CSSCharsetRule : CSSRule {
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [TreatReturnedNullStringAs=Null] readonly attribute DOMString encoding;
-#else
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString encoding
-                 setter raises(DOMException);
-#endif
+    [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString encoding;
 };
 
diff --git a/css/CSSFontFaceLoadEvent.idl b/css/CSSFontFaceLoadEvent.idl
index fcd9861..54994a1 100644
--- a/css/CSSFontFaceLoadEvent.idl
+++ b/css/CSSFontFaceLoadEvent.idl
@@ -30,9 +30,9 @@
 
 [
     Conditional=FONT_LOAD_EVENTS,
-    V8EnabledAtRuntime=fontLoadEvents,
+    EnabledAtRuntime=fontLoadEvents,
     ConstructorTemplate=Event
 ] interface CSSFontFaceLoadEvent : Event {
-    readonly attribute [InitializedByEventConstructor] CSSFontFaceRule fontface;
-    readonly attribute [InitializedByEventConstructor] DOMError error;
+    [InitializedByEventConstructor] readonly attribute CSSFontFaceRule fontface;
+    [InitializedByEventConstructor] readonly attribute DOMError error;
 };
diff --git a/css/CSSHostRule.idl b/css/CSSHostRule.idl
index 9957978..1d624c4 100644
--- a/css/CSSHostRule.idl
+++ b/css/CSSHostRule.idl
@@ -20,15 +20,12 @@
 
 // Introduced in Shadow DOM spec:
 [
-    Conditional=SHADOW_DOM,
-    V8EnabledAtRuntime=shadowDOM
+    EnabledAtRuntime=shadowDOM
 ] interface CSSHostRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
     
-    unsigned long      insertRule(in [Optional=DefaultIsUndefined] DOMString rule, 
-                                  in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
-    void               deleteRule(in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
+    [RaisesException] unsigned long      insertRule([Optional=DefaultIsUndefined] DOMString rule, 
+                                  [Optional=DefaultIsUndefined] unsigned long index);
+    [RaisesException] void               deleteRule([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/CSSMediaRule.idl b/css/CSSMediaRule.idl
index 10e8b76..5269b07 100644
--- a/css/CSSMediaRule.idl
+++ b/css/CSSMediaRule.idl
@@ -23,10 +23,8 @@
     readonly attribute MediaList media;
     readonly attribute CSSRuleList cssRules;
     
-    [ObjCLegacyUnnamedParameters] unsigned long      insertRule(in [Optional=DefaultIsUndefined] DOMString rule, 
-                                                 in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
-    void               deleteRule(in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
+     [RaisesException] unsigned long      insertRule([Optional=DefaultIsUndefined] DOMString rule, 
+                                                 [Optional=DefaultIsUndefined] unsigned long index);
+    [RaisesException] void               deleteRule([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/CSSPrimitiveValue.idl b/css/CSSPrimitiveValue.idl
index c3bc0b5..e69eccf 100644
--- a/css/CSSPrimitiveValue.idl
+++ b/css/CSSPrimitiveValue.idl
@@ -55,21 +55,14 @@
     
     readonly attribute unsigned short primitiveType;
 
-    [ObjCLegacyUnnamedParameters] void setFloatValue(in [Optional=DefaultIsUndefined] unsigned short unitType,
-                                      in [Optional=DefaultIsUndefined] float floatValue)
-        raises(DOMException);
-    float getFloatValue(in [Optional=DefaultIsUndefined] unsigned short unitType)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters] void setStringValue(in [Optional=DefaultIsUndefined] unsigned short stringType, 
-                                       in [Optional=DefaultIsUndefined] DOMString stringValue)
-        raises(DOMException);
-    DOMString getStringValue()
-        raises(DOMException);
-    Counter getCounterValue()
-        raises(DOMException);
-    Rect getRectValue()
-        raises(DOMException);
-    RGBColor getRGBColorValue()
-        raises(DOMException);
+     [RaisesException] void setFloatValue([Optional=DefaultIsUndefined] unsigned short unitType,
+                                      [Optional=DefaultIsUndefined] float floatValue);
+    [RaisesException] float getFloatValue([Optional=DefaultIsUndefined] unsigned short unitType);
+     [RaisesException] void setStringValue([Optional=DefaultIsUndefined] unsigned short stringType, 
+                                       [Optional=DefaultIsUndefined] DOMString stringValue);
+    [RaisesException] DOMString getStringValue();
+    [RaisesException] Counter getCounterValue();
+    [RaisesException] Rect getRectValue();
+    [RaisesException] RGBColor getRGBColorValue();
 };
 
diff --git a/css/CSSRule.idl b/css/CSSRule.idl
index 2891e33..9766de3 100644
--- a/css/CSSRule.idl
+++ b/css/CSSRule.idl
@@ -21,9 +21,9 @@
 // Introduced in DOM Level 2:
 [
     CustomToJSObject,
-    ObjCPolymorphic,
-    V8DependentLifetime,
-    V8SkipVTableValidation
+
+    DependentLifetime,
+    SkipVTableValidation
 ] interface CSSRule {
 
     // RuleType
@@ -45,20 +45,14 @@
 #if defined(ENABLE_CSS_REGIONS) && ENABLE_CSS_REGIONS
     const unsigned short WEBKIT_REGION_RULE = 16;
 #endif
-#if defined(ENABLE_CSS_SHADERS) && ENABLE_CSS_SHADERS
     const unsigned short WEBKIT_FILTER_RULE = 17;
-#endif
-#if defined(ENABLE_SHADOW_DOM) && ENABLE_SHADOW_DOM
     const unsigned short HOST_RULE = 1001;
-#endif
 
     readonly attribute unsigned short   type;
 
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString        cssText
-                 setter raises (DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString        cssText;
 
     readonly attribute CSSStyleSheet    parentStyleSheet;
     readonly attribute CSSRule          parentRule;
 
 };
-
diff --git a/css/CSSRuleList.idl b/css/CSSRuleList.idl
index ae95487..79fd87c 100644
--- a/css/CSSRuleList.idl
+++ b/css/CSSRuleList.idl
@@ -26,10 +26,10 @@
 // Introduced in DOM Level 2:
 [
     IndexedGetter,
-    V8DependentLifetime,
-    V8SkipVTableValidation
+    DependentLifetime,
+    SkipVTableValidation
 ] interface CSSRuleList {
     readonly attribute unsigned long    length;
-    CSSRule           item(in [Optional=DefaultIsUndefined] unsigned long index);
+    CSSRule           item([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/CSSStyleDeclaration.idl b/css/CSSStyleDeclaration.idl
index 7cb3690..f0e6de4 100644
--- a/css/CSSStyleDeclaration.idl
+++ b/css/CSSStyleDeclaration.idl
@@ -21,33 +21,28 @@
 // Introduced in DOM Level 2:
 [
     CustomNamedSetter,
-#if defined(V8_BINDING) && V8_BINDING
-    NamedGetter,
-#endif
+    CustomNamedGetter,
     IndexedGetter,
     CustomEnumerateProperty,
-    V8DependentLifetime,
-    V8SkipVTableValidation
+    DependentLifetime,
+    SkipVTableValidation
 ] interface CSSStyleDeclaration {
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString        cssText
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString        cssText;
 
-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyValue(in [Optional=DefaultIsUndefined] DOMString propertyName);
-    CSSValue           getPropertyCSSValue(in [Optional=DefaultIsUndefined] DOMString propertyName);
-    [TreatReturnedNullStringAs=Null] DOMString          removeProperty(in [Optional=DefaultIsUndefined] DOMString propertyName)
-        raises(DOMException);
-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyPriority(in [Optional=DefaultIsUndefined] DOMString propertyName);
-    [ObjCLegacyUnnamedParameters] void setProperty(in [Optional=DefaultIsUndefined] DOMString propertyName, 
-                                    in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString value, 
-                                    in [Optional=DefaultIsUndefined] DOMString priority)
-        raises(DOMException);
+    [TreatReturnedNullStringAs=Null] DOMString          getPropertyValue([Optional=DefaultIsUndefined] DOMString propertyName);
+    CSSValue           getPropertyCSSValue([Optional=DefaultIsUndefined] DOMString propertyName);
+    [TreatReturnedNullStringAs=Null, RaisesException] DOMString          removeProperty([Optional=DefaultIsUndefined] DOMString propertyName);
+    [TreatReturnedNullStringAs=Null] DOMString          getPropertyPriority([Optional=DefaultIsUndefined] DOMString propertyName);
+     [RaisesException] void setProperty([Optional=DefaultIsUndefined] DOMString propertyName, 
+                                    [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString value, 
+                                    [Optional=DefaultIsUndefined] DOMString priority);
 
     readonly attribute unsigned long    length;
-    DOMString          item(in [Optional=DefaultIsUndefined] unsigned long index);
+    DOMString          item([Optional=DefaultIsUndefined] unsigned long index);
     readonly attribute CSSRule          parentRule;
 
     // Extensions
-    [TreatReturnedNullStringAs=Null] DOMString          getPropertyShorthand(in [Optional=DefaultIsUndefined] DOMString propertyName);
-    boolean            isPropertyImplicit(in [Optional=DefaultIsUndefined] DOMString propertyName);
+    [TreatReturnedNullStringAs=Null] DOMString          getPropertyShorthand([Optional=DefaultIsUndefined] DOMString propertyName);
+    boolean            isPropertyImplicit([Optional=DefaultIsUndefined] DOMString propertyName);
 };
 
diff --git a/css/CSSStyleSheet.idl b/css/CSSStyleSheet.idl
index 69843e4..04d0844 100644
--- a/css/CSSStyleSheet.idl
+++ b/css/CSSStyleSheet.idl
@@ -20,25 +20,21 @@
 
 // Introduced in DOM Level 2:
 [
-    V8GenerateIsReachable=ImplOwnerNodeRoot
+    GenerateIsReachable=ImplOwnerNodeRoot
 ] interface CSSStyleSheet : StyleSheet {
     readonly attribute CSSRule          ownerRule;
     readonly attribute CSSRuleList      cssRules;
 
-    [ObjCLegacyUnnamedParameters] unsigned long insertRule(in [Optional=DefaultIsUndefined] DOMString rule, 
-                                            in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
-    void               deleteRule(in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
+    [RaisesException] unsigned long insertRule([Optional=DefaultIsUndefined] DOMString rule, 
+                                            [Optional=DefaultIsUndefined] unsigned long index);
+    [RaisesException] void               deleteRule([Optional=DefaultIsUndefined] unsigned long index);
 
     // IE Extensions
     readonly attribute CSSRuleList      rules;
 
-    long addRule(in [Optional=DefaultIsUndefined] DOMString selector,
-                 in [Optional=DefaultIsUndefined] DOMString style,
-                 in [Optional] unsigned long index)
-        raises(DOMException);
-    void removeRule(in [Optional=DefaultIsUndefined] unsigned long index)
-        raises(DOMException);
+    [RaisesException] long addRule([Optional=DefaultIsUndefined] DOMString selector,
+                 [Optional=DefaultIsUndefined] DOMString style,
+                 [Optional] unsigned long index);
+    [RaisesException] void removeRule([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/CSSSupportsRule.idl b/css/CSSSupportsRule.idl
index c533882..4bfc779 100644
--- a/css/CSSSupportsRule.idl
+++ b/css/CSSSupportsRule.idl
@@ -32,8 +32,8 @@
     readonly attribute CSSRuleList cssRules;
     readonly attribute DOMString conditionText;
 
-    unsigned long insertRule(in [Optional=DefaultIsUndefined] DOMString rule,
-                             in [Optional=DefaultIsUndefined] unsigned long index) raises(DOMException);
-    void deleteRule(in [Optional=DefaultIsUndefined] unsigned long index) raises(DOMException);
+    [RaisesException] unsigned long insertRule([Optional=DefaultIsUndefined] DOMString rule,
+                             [Optional=DefaultIsUndefined] unsigned long index);
+    [RaisesException] void deleteRule([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/CSSUnknownRule.idl b/css/CSSUnknownRule.idl
index 0b0ca0c..c06bfed 100644
--- a/css/CSSUnknownRule.idl
+++ b/css/CSSUnknownRule.idl
@@ -20,7 +20,6 @@
 
 // Introduced in DOM Level 2:
 [
-    OmitConstructor
 ] interface CSSUnknownRule : CSSRule {
 };
 
diff --git a/css/CSSValue.idl b/css/CSSValue.idl
index 9d1a034..d668995 100644
--- a/css/CSSValue.idl
+++ b/css/CSSValue.idl
@@ -20,8 +20,8 @@
 
 [
     CustomToJSObject,
-    ObjCPolymorphic,
-    V8DependentLifetime,
+    
+    DependentLifetime,
     ImplementationLacksVTable
 ] interface CSSValue {
 
@@ -31,8 +31,7 @@
     const unsigned short CSS_VALUE_LIST      = 2;
     const unsigned short CSS_CUSTOM          = 3;
 
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString cssText
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString cssText;
 
     readonly attribute unsigned short cssValueType;
 
diff --git a/css/CSSValueList.idl b/css/CSSValueList.idl
index f3c6895..bcbea6a 100644
--- a/css/CSSValueList.idl
+++ b/css/CSSValueList.idl
@@ -29,6 +29,6 @@
     ImplementationLacksVTable
 ] interface CSSValueList : CSSValue {
     readonly attribute unsigned long    length;
-    CSSValue           item(in [Optional=DefaultIsUndefined] unsigned long index);
+    CSSValue           item([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/FontLoader.idl b/css/FontLoader.idl
index 3b1f8a2..cb8b9e6 100644
--- a/css/FontLoader.idl
+++ b/css/FontLoader.idl
@@ -30,7 +30,7 @@
 
 [
     Conditional=FONT_LOAD_EVENTS,
-    V8EnabledAtRuntime=fontLoadEvents,
+    EnabledAtRuntime=fontLoadEvents,
     ActiveDOMObject,
     EventTarget,
     GenerateIsReachable=ImplDocument,
@@ -42,17 +42,16 @@
     attribute EventListener onload;
     attribute EventListener onerror;
 
-    boolean checkFont(in DOMString font, in [Optional=DefaultIsNullString] DOMString text);
-    void loadFont(in Dictionary params);
-    void notifyWhenFontsReady(in [Callback] VoidCallback callback);
+    boolean checkFont(DOMString font, [Optional=DefaultIsNullString] DOMString text);
+    void loadFont(Dictionary params);
+    void notifyWhenFontsReady([Callback] VoidCallback callback);
     readonly attribute boolean loading;
 
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/css/MediaList.idl b/css/MediaList.idl
index 1b10e80..4b5bf84 100644
--- a/css/MediaList.idl
+++ b/css/MediaList.idl
@@ -29,15 +29,12 @@
     ImplementationLacksVTable
 ] interface MediaList {
 
-             [TreatNullAs=NullString, TreatReturnedNullStringAs=Null] attribute DOMString mediaText
-                 setter raises(DOMException);
+             [TreatNullAs=NullString, TreatReturnedNullStringAs=Null, SetterRaisesException] attribute DOMString mediaText;
     readonly attribute unsigned long length;
 
-    [TreatReturnedNullStringAs=Null] DOMString item(in [Optional=DefaultIsUndefined] unsigned long index);
-    void deleteMedium(in [Optional=DefaultIsUndefined] DOMString oldMedium)
-        raises(DOMException);
-    void appendMedium(in [Optional=DefaultIsUndefined] DOMString newMedium)
-        raises(DOMException);
+    [TreatReturnedNullStringAs=Null] DOMString item([Optional=DefaultIsUndefined] unsigned long index);
+    [RaisesException] void deleteMedium([Optional=DefaultIsUndefined] DOMString oldMedium);
+    [RaisesException] void appendMedium([Optional=DefaultIsUndefined] DOMString newMedium);
 
 };
 
diff --git a/css/MediaQueryList.idl b/css/MediaQueryList.idl
index b34aa7e..bbc5255 100644
--- a/css/MediaQueryList.idl
+++ b/css/MediaQueryList.idl
@@ -21,6 +21,6 @@
 ] interface MediaQueryList {
     readonly attribute DOMString media;
     readonly attribute boolean matches;
-    void addListener(in [Optional=DefaultIsUndefined] MediaQueryListListener listener);
-    void removeListener(in [Optional=DefaultIsUndefined] MediaQueryListListener listener);
+    void addListener([Optional=DefaultIsUndefined] MediaQueryListListener listener);
+    void removeListener([Optional=DefaultIsUndefined] MediaQueryListListener listener);
 };
diff --git a/css/MediaQueryListListener.idl b/css/MediaQueryListListener.idl
index 73b70eb..3e7ce16 100644
--- a/css/MediaQueryListListener.idl
+++ b/css/MediaQueryListListener.idl
@@ -18,9 +18,8 @@
  */
 
 [
-    ObjCProtocol,
+    
     CPPPureInterface,
-    OmitConstructor
 ] interface MediaQueryListListener {
-    void queryChanged(in [Optional=DefaultIsUndefined] MediaQueryList list);
+    void queryChanged([Optional=DefaultIsUndefined] MediaQueryList list);
 };
diff --git a/css/RGBColor.idl b/css/RGBColor.idl
index 16744f4..6afcfac 100644
--- a/css/RGBColor.idl
+++ b/css/RGBColor.idl
@@ -18,20 +18,11 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in DOM Level 2:
 [
     ImplementationLacksVTable
 ] interface RGBColor {
     readonly attribute CSSPrimitiveValue  red;
     readonly attribute CSSPrimitiveValue  green;
     readonly attribute CSSPrimitiveValue  blue;
-
-    // WebKit extensions
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    readonly attribute CSSPrimitiveValue  alpha;
-#endif
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    readonly attribute Color              color;
-#endif
 };
 
diff --git a/css/StyleMedia.idl b/css/StyleMedia.idl
index b4e9213..b4e97f4 100644
--- a/css/StyleMedia.idl
+++ b/css/StyleMedia.idl
@@ -26,5 +26,5 @@
 
 interface StyleMedia {
     readonly attribute DOMString type;
-    boolean matchMedium(in [Optional=DefaultIsUndefined] DOMString mediaquery);
+    boolean matchMedium([Optional=DefaultIsUndefined] DOMString mediaquery);
 };
diff --git a/css/StyleSheet.idl b/css/StyleSheet.idl
index fabce52..c078c08 100644
--- a/css/StyleSheet.idl
+++ b/css/StyleSheet.idl
@@ -21,8 +21,7 @@
 // Introduced in DOM Level 2:
 [
     CustomToJSObject,
-    ObjCPolymorphic,
-    V8GenerateIsReachable=ImplOwnerNodeRoot
+    GenerateIsReachable=ImplOwnerNodeRoot
 ] interface StyleSheet {
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString        type;
              attribute boolean          disabled;
@@ -31,11 +30,5 @@
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString        href;
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString        title;
     readonly attribute MediaList        media;
-
-#if defined(LANGUAGE_CPP) && LANGUAGE_CPP
-    // Extra WebCore methods exposed to allowe compile-time casting in C++
-    boolean isCSSStyleSheet();
-#endif
-
 };
 
diff --git a/css/StyleSheetList.idl b/css/StyleSheetList.idl
index 23df1c6..900bede 100644
--- a/css/StyleSheetList.idl
+++ b/css/StyleSheetList.idl
@@ -22,10 +22,10 @@
 [
     GenerateIsReachable=ImplDocument,
     IndexedGetter,
-    NamedGetter,
+    CustomNamedGetter,
     ImplementationLacksVTable
 ] interface StyleSheetList {
     readonly attribute unsigned long    length;
-    StyleSheet         item(in [Optional=DefaultIsUndefined] unsigned long index);
+    StyleSheet         item([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/css/WebKitCSSFilterRule.idl b/css/WebKitCSSFilterRule.idl
index 28e8c76..12bc237 100644
--- a/css/WebKitCSSFilterRule.idl
+++ b/css/WebKitCSSFilterRule.idl
@@ -27,9 +27,7 @@
  * SUCH DAMAGE.
  */
 
-[
-    Conditional=CSS_SHADERS,
-] interface WebKitCSSFilterRule : CSSRule {
+interface WebKitCSSFilterRule : CSSRule {
     readonly attribute CSSStyleDeclaration style;
 
     // FIXME: We should expose the filter name once the CSSOM for the @filter rule is specified.
diff --git a/css/WebKitCSSFilterValue.idl b/css/WebKitCSSFilterValue.idl
index 021ffa6..1ddf7ec 100644
--- a/css/WebKitCSSFilterValue.idl
+++ b/css/WebKitCSSFilterValue.idl
@@ -43,10 +43,7 @@
     const unsigned short CSS_FILTER_CONTRAST = 9;
     const unsigned short CSS_FILTER_BLUR = 10;
     const unsigned short CSS_FILTER_DROP_SHADOW = 11;
-
-#if defined(ENABLE_CSS_SHADERS) && ENABLE_CSS_SHADERS
     const unsigned short CSS_FILTER_CUSTOM = 12;
-#endif
 
     readonly attribute unsigned short operationType;
 };
diff --git a/css/WebKitCSSKeyframesRule.idl b/css/WebKitCSSKeyframesRule.idl
index e1e167d..21e8dcf 100644
--- a/css/WebKitCSSKeyframesRule.idl
+++ b/css/WebKitCSSKeyframesRule.idl
@@ -34,8 +34,8 @@
     [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString name;
     readonly attribute CSSRuleList cssRules;
     
-    void insertRule(in [Optional=DefaultIsUndefined] DOMString rule);
-    void deleteRule(in [Optional=DefaultIsUndefined] DOMString key);
-    WebKitCSSKeyframeRule findRule(in [Optional=DefaultIsUndefined] DOMString key);
+    void insertRule([Optional=DefaultIsUndefined] DOMString rule);
+    void deleteRule([Optional=DefaultIsUndefined] DOMString key);
+    WebKitCSSKeyframeRule findRule([Optional=DefaultIsUndefined] DOMString key);
 };
 
diff --git a/css/WebKitCSSMatrix.idl b/css/WebKitCSSMatrix.idl
index 9bc3f09..28fea09 100644
--- a/css/WebKitCSSMatrix.idl
+++ b/css/WebKitCSSMatrix.idl
@@ -25,8 +25,8 @@
 
 // Introduced in DOM Level ?:
 [
-    Constructor(in [Optional=DefaultIsNullString] DOMString cssValue),
-    ConstructorRaisesException,
+    Constructor([Optional=DefaultIsNullString] DOMString cssValue),
+    RaisesException
 ] interface WebKitCSSMatrix {
 
     // These attributes are simple aliases for certain elements of the 4x4 matrix
@@ -54,49 +54,49 @@
     attribute double m43;
     attribute double m44;
 
-    void setMatrixValue(in [Optional=DefaultIsUndefined] DOMString string) raises (DOMException);
+    [RaisesException] void setMatrixValue([Optional=DefaultIsUndefined] DOMString string);
     
     // Multiply this matrix by secondMatrix, on the right (result = this * secondMatrix)
-    [Immutable] WebKitCSSMatrix multiply(in [Optional=DefaultIsUndefined] WebKitCSSMatrix secondMatrix);
+    [Immutable] WebKitCSSMatrix multiply([Optional=DefaultIsUndefined] WebKitCSSMatrix secondMatrix);
     
     // Return the inverse of this matrix. Throw an exception if the matrix is not invertible
-    [Immutable] WebKitCSSMatrix inverse() raises (DOMException);
+    [Immutable, RaisesException] WebKitCSSMatrix inverse();
     
     // Return this matrix translated by the passed values.
     // Passing a NaN will use a value of 0. This allows the 3D form to used for 2D operations    
-    [Immutable] WebKitCSSMatrix translate(in [Optional=DefaultIsUndefined] double x, 
-                                          in [Optional=DefaultIsUndefined] double y, 
-                                          in [Optional=DefaultIsUndefined] double z);
+    [Immutable] WebKitCSSMatrix translate([Optional=DefaultIsUndefined] double x, 
+                                          [Optional=DefaultIsUndefined] double y, 
+                                          [Optional=DefaultIsUndefined] double z);
     
     // Returns this matrix scaled by the passed values.
     // Passing scaleX or scaleZ as NaN uses a value of 1, but passing scaleY of NaN 
     // makes it the same as scaleX. This allows the 3D form to used for 2D operations
-    [Immutable] WebKitCSSMatrix scale(in [Optional=DefaultIsUndefined] double scaleX, 
-                                      in [Optional=DefaultIsUndefined] double scaleY, 
-                                      in [Optional=DefaultIsUndefined] double scaleZ);
+    [Immutable] WebKitCSSMatrix scale([Optional=DefaultIsUndefined] double scaleX, 
+                                      [Optional=DefaultIsUndefined] double scaleY, 
+                                      [Optional=DefaultIsUndefined] double scaleZ);
     
     // Returns this matrix rotated by the passed values.
     // If rotY and rotZ are NaN, rotate about Z (rotX=0, rotateY=0, rotateZ=rotX).
     // Otherwise use a rotation value of 0 for any passed NaN.    
-    [Immutable] WebKitCSSMatrix rotate(in [Optional=DefaultIsUndefined] double rotX, 
-                                       in [Optional=DefaultIsUndefined] double rotY, 
-                                       in [Optional=DefaultIsUndefined] double rotZ);
+    [Immutable] WebKitCSSMatrix rotate([Optional=DefaultIsUndefined] double rotX, 
+                                       [Optional=DefaultIsUndefined] double rotY, 
+                                       [Optional=DefaultIsUndefined] double rotZ);
     
     // Returns this matrix rotated about the passed axis by the passed angle.
     // Passing a NaN will use a value of 0. If the axis is (0,0,0) use a value
     // of (0,0,1).
-    [Immutable] WebKitCSSMatrix rotateAxisAngle(in [Optional=DefaultIsUndefined] double x, 
-                                                in [Optional=DefaultIsUndefined] double y, 
-                                                in [Optional=DefaultIsUndefined] double z, 
-                                                in [Optional=DefaultIsUndefined] double angle);
+    [Immutable] WebKitCSSMatrix rotateAxisAngle([Optional=DefaultIsUndefined] double x, 
+                                                [Optional=DefaultIsUndefined] double y, 
+                                                [Optional=DefaultIsUndefined] double z, 
+                                                [Optional=DefaultIsUndefined] double angle);
 
     // Returns this matrix skewed along the X axis by the passed values.
     // Passing a NaN will use a value of 0.
-    [Immutable] WebKitCSSMatrix skewX(in [Optional=DefaultIsUndefined] double angle);
+    [Immutable] WebKitCSSMatrix skewX([Optional=DefaultIsUndefined] double angle);
 
     // Returns this matrix skewed along the Y axis by the passed values.
     // Passing a NaN will use a value of 0.
-    [Immutable] WebKitCSSMatrix skewY(in [Optional=DefaultIsUndefined] double angle);
+    [Immutable] WebKitCSSMatrix skewY([Optional=DefaultIsUndefined] double angle);
 
     [NotEnumerable] DOMString toString();
 };
diff --git a/css/WebKitCSSMixFunctionValue.idl b/css/WebKitCSSMixFunctionValue.idl
index 3a7c02f..1ce921e 100644
--- a/css/WebKitCSSMixFunctionValue.idl
+++ b/css/WebKitCSSMixFunctionValue.idl
@@ -28,7 +28,6 @@
  */
 
 [
-    Conditional=CSS_SHADERS,
     ImplementationLacksVTable
 ] interface WebKitCSSMixFunctionValue : CSSValueList {
 };
diff --git a/css/WebKitCSSRegionRule.idl b/css/WebKitCSSRegionRule.idl
index 8192f29..05c3c92 100644
--- a/css/WebKitCSSRegionRule.idl
+++ b/css/WebKitCSSRegionRule.idl
@@ -29,7 +29,7 @@
 
 [
     Conditional=CSS_REGIONS,
-    V8EnabledAtRuntime=cssRegions,
+    EnabledAtRuntime=cssRegions,
 ] interface WebKitCSSRegionRule : CSSRule {
     readonly attribute CSSRuleList cssRules;
 };
diff --git a/dom/WebKitAnimationEvent.idl b/dom/AnimationEvent.idl
similarity index 92%
rename from dom/WebKitAnimationEvent.idl
rename to dom/AnimationEvent.idl
index 6f1844b..46ff164 100644
--- a/dom/WebKitAnimationEvent.idl
+++ b/dom/AnimationEvent.idl
@@ -20,12 +20,13 @@
  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 [
-    ConstructorTemplate=Event
-] interface WebKitAnimationEvent : Event {
+    ConstructorTemplate=Event,
+    InterfaceName=WebKitAnimationEvent
+] interface AnimationEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString animationName;
     [InitializedByEventConstructor] readonly attribute double elapsedTime;
 };
diff --git a/dom/Attr.idl b/dom/Attr.idl
index 0f7b0fb..de9d951 100644
--- a/dom/Attr.idl
+++ b/dom/Attr.idl
@@ -26,8 +26,7 @@
 
     readonly attribute boolean specified;
 
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString value 
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString value;
 
     // DOM Level 2
 
@@ -36,10 +35,5 @@
     // DOM Level 3
 
     readonly attribute boolean isId;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // This extension is no longer needed, but it has to remain available in Objective C, as it's public API.
-    readonly attribute CSSStyleDeclaration style;
-#endif
 };
 
diff --git a/dom/AutocompleteErrorEvent.idl b/dom/AutocompleteErrorEvent.idl
index 43003e9..807ef04 100644
--- a/dom/AutocompleteErrorEvent.idl
+++ b/dom/AutocompleteErrorEvent.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    Conditional=REQUEST_AUTOCOMPLETE,
     ConstructorTemplate=Event
 ] interface AutocompleteErrorEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString reason;
diff --git a/dom/CharacterData.idl b/dom/CharacterData.idl
index bd6265b..15fd1ce 100644
--- a/dom/CharacterData.idl
+++ b/dom/CharacterData.idl
@@ -19,33 +19,25 @@
 
 interface CharacterData : Node {
 
-    [TreatNullAs=NullString] attribute DOMString data
-        setter raises(DOMException);
+    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString data;
 
     readonly attribute unsigned long length;
     
-    [TreatReturnedNullStringAs=Null, ObjCLegacyUnnamedParameters] DOMString substringData(in [IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
-                                                                     in [IsIndex,Optional=DefaultIsUndefined] unsigned long length)
-        raises(DOMException);
+    [TreatReturnedNullStringAs=Null, RaisesException] DOMString substringData([IsIndex,Optional=DefaultIsUndefined] unsigned long offset, [IsIndex,Optional=DefaultIsUndefined] unsigned long length);
 
-    void appendData(in [Optional=DefaultIsUndefined] DOMString data)
-        raises(DOMException);
+    [RaisesException] void appendData([Optional=DefaultIsUndefined] DOMString data);
 
-    [ObjCLegacyUnnamedParameters] void insertData(in [IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
-                                   in [Optional=DefaultIsUndefined] DOMString data)
-        raises(DOMException);
+     [RaisesException] void insertData([IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
+                                   [Optional=DefaultIsUndefined] DOMString data);
 
-    [ObjCLegacyUnnamedParameters] void deleteData(in [IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
-                                   in [IsIndex,Optional=DefaultIsUndefined] unsigned long length)
-        raises(DOMException);
+     [RaisesException] void deleteData([IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
+                                   [IsIndex,Optional=DefaultIsUndefined] unsigned long length);
 
-    [ObjCLegacyUnnamedParameters] void replaceData(in [IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
-                                    in [IsIndex,Optional=DefaultIsUndefined] unsigned long length,
-                                    in [Optional=DefaultIsUndefined] DOMString data)
-        raises(DOMException);
+     [RaisesException] void replaceData([IsIndex,Optional=DefaultIsUndefined] unsigned long offset, 
+                                    [IsIndex,Optional=DefaultIsUndefined] unsigned long length,
+                                    [Optional=DefaultIsUndefined] DOMString data);
 
     // DOM 4
-    void remove()
-        raises(DOMException);
+    [RaisesException] void remove();
 };
 
diff --git a/dom/ClientRectList.idl b/dom/ClientRectList.idl
index d5f60ad..70bac18 100644
--- a/dom/ClientRectList.idl
+++ b/dom/ClientRectList.idl
@@ -29,7 +29,7 @@
     ImplementationLacksVTable
 ] interface ClientRectList {
     readonly attribute unsigned long length;
-    ClientRect item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
+    ClientRect item([IsIndex,Optional=DefaultIsUndefined] unsigned long index);
     // FIXME: Fix list behavior to allow custom exceptions to be thrown.
 };
 
diff --git a/dom/Clipboard.idl b/dom/Clipboard.idl
index 7e092bb..f03ce01 100644
--- a/dom/Clipboard.idl
+++ b/dom/Clipboard.idl
@@ -27,20 +27,18 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface Clipboard {
              [TreatReturnedNullStringAs=Undefined] attribute DOMString dropEffect;
              [TreatReturnedNullStringAs=Undefined] attribute DOMString effectAllowed;
     [CustomGetter] readonly attribute Array types;
     readonly attribute FileList files;
 
-    [Custom] void clearData(in [Optional] DOMString type)
-        raises(DOMException);
-    DOMString getData(in DOMString type);
-    boolean setData(in DOMString type, in DOMString data);
-    [Custom] void setDragImage(in HTMLImageElement image, in long x, in long y)
-        raises(DOMException);
+    [Custom, RaisesException] void clearData([Optional] DOMString type);
+    DOMString getData(DOMString type);
+    boolean setData(DOMString type, DOMString data);
+    [Custom, RaisesException] void setDragImage(HTMLImageElement image, long x, long y);
 
-    [V8EnabledAtRuntime=DataTransferItems] readonly attribute DataTransferItemList items;
+    readonly attribute DataTransferItemList items;
 };
 
diff --git a/dom/CompositionEvent.idl b/dom/CompositionEvent.idl
index 794ec4e..0afbbbb 100644
--- a/dom/CompositionEvent.idl
+++ b/dom/CompositionEvent.idl
@@ -24,17 +24,16 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event
 ] interface CompositionEvent : UIEvent {
 
     [InitializedByEventConstructor] readonly attribute DOMString data;
 
-    void initCompositionEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                              in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                              in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                              in [Optional=DefaultIsUndefined] DOMWindow viewArg, 
-                              in [Optional=DefaultIsUndefined] DOMString dataArg);
+    void initCompositionEvent([Optional=DefaultIsUndefined] DOMString typeArg, 
+                              [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                              [Optional=DefaultIsUndefined] boolean cancelableArg, 
+                              [Optional=DefaultIsUndefined] DOMWindow viewArg, 
+                              [Optional=DefaultIsUndefined] DOMString dataArg);
 
 };
 
diff --git a/dom/CustomElementConstructor.idl b/dom/CustomElementConstructor.idl
index 47c530f..864d40d 100644
--- a/dom/CustomElementConstructor.idl
+++ b/dom/CustomElementConstructor.idl
@@ -24,8 +24,8 @@
 
 [
     Conditional=CUSTOM_ELEMENTS,
-    V8EnabledAtRuntime=customDOMElements,
-    V8WrapAsFunction,
+    EnabledAtRuntime=customDOMElements,
+    WrapAsFunction,
     CustomCall
 ] interface CustomElementConstructor {
 };
diff --git a/dom/CustomEvent.idl b/dom/CustomEvent.idl
index 58b81d3..13263b3 100644
--- a/dom/CustomEvent.idl
+++ b/dom/CustomEvent.idl
@@ -23,17 +23,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-// Introduced in DOM Level 3:
 [
     ConstructorTemplate=Event
 ] interface CustomEvent : Event {
-    [InitializedByEventConstructor, V8Custom] readonly attribute any detail;
+    [InitializedByEventConstructor, Custom] readonly attribute any detail;
 
-    void initCustomEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                         in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                         in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                         in [Optional=DefaultIsUndefined] any detailArg);
+    void initCustomEvent([Optional=DefaultIsUndefined] DOMString typeArg, 
+                         [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                         [Optional=DefaultIsUndefined] boolean cancelableArg, 
+                         [Optional=DefaultIsUndefined] any detailArg);
 };
-#endif
-
diff --git a/dom/DOMCoreException.idl b/dom/DOMCoreException.idl
index 71ec5d5..2b6f16e 100644
--- a/dom/DOMCoreException.idl
+++ b/dom/DOMCoreException.idl
@@ -36,10 +36,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // ExceptionCode
     const unsigned short      INDEX_SIZE_ERR                 = 1;
diff --git a/dom/DOMImplementation.idl b/dom/DOMImplementation.idl
index 7a57cd5..4bcfc63 100644
--- a/dom/DOMImplementation.idl
+++ b/dom/DOMImplementation.idl
@@ -25,28 +25,25 @@
 
     // DOM Level 1
 
-    [ObjCLegacyUnnamedParameters] boolean hasFeature(in [Optional=DefaultIsUndefined] DOMString feature, 
-                                      in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString version);
+     boolean hasFeature([Optional=DefaultIsUndefined] DOMString feature, 
+                                      [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString version);
 
     // DOM Level 2
 
-    [ObjCLegacyUnnamedParameters] DocumentType createDocumentType(in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName,
-                                                   in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString publicId,
-                                                   in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString systemId)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters] Document createDocument(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
-                                           in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName, 
-                                           in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DocumentType doctype)
-        raises(DOMException);
+     [RaisesException] DocumentType createDocumentType([TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName,
+                                                   [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString publicId,
+                                                   [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString systemId);
+     [RaisesException] Document createDocument([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
+                                           [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName, 
+                                           [TreatNullAs=NullString,Optional=DefaultIsUndefined] DocumentType doctype);
 
     // DOMImplementationCSS interface from DOM Level 2 CSS
 
-    [ObjCLegacyUnnamedParameters] CSSStyleSheet createCSSStyleSheet(in [Optional=DefaultIsUndefined] DOMString title,
-                                                     in [Optional=DefaultIsUndefined] DOMString media)
-        raises(DOMException);
+     [RaisesException] CSSStyleSheet createCSSStyleSheet([Optional=DefaultIsUndefined] DOMString title,
+                                                     [Optional=DefaultIsUndefined] DOMString media);
 
     // HTMLDOMImplementation interface from DOM Level 2 HTML
 
-    HTMLDocument createHTMLDocument(in [Optional=DefaultIsNullString] DOMString title);
+    HTMLDocument createHTMLDocument([Optional=DefaultIsNullString] DOMString title);
 };
 
diff --git a/dom/DOMNamedFlowCollection.idl b/dom/DOMNamedFlowCollection.idl
index 60e2689..cc6103c 100644
--- a/dom/DOMNamedFlowCollection.idl
+++ b/dom/DOMNamedFlowCollection.idl
@@ -29,13 +29,13 @@
 
 [
     Conditional=CSS_REGIONS,
-    V8EnabledAtRuntime=cssRegions,
+    EnabledAtRuntime=cssRegions,
     InterfaceName=WebKitNamedFlowCollection,
     IndexedGetter,
     NamedGetter,
     ImplementationLacksVTable
 ] interface DOMNamedFlowCollection {
     readonly attribute unsigned long length;
-    WebKitNamedFlow item(in unsigned long index);
-    WebKitNamedFlow namedItem(in DOMString name);
+    NamedFlow item(unsigned long index);
+    NamedFlow namedItem(DOMString name);
 };
diff --git a/dom/DOMStringList.idl b/dom/DOMStringList.idl
index 6722aa6..1ca73e0 100644
--- a/dom/DOMStringList.idl
+++ b/dom/DOMStringList.idl
@@ -28,7 +28,7 @@
     ImplementationLacksVTable
 ] interface DOMStringList {
     readonly attribute unsigned long length;
-    [TreatReturnedNullStringAs=Null] DOMString item(in [Optional=DefaultIsUndefined] unsigned long index);
-    boolean contains(in [Optional=DefaultIsUndefined] DOMString string);
+    [TreatReturnedNullStringAs=Null] DOMString item([Optional=DefaultIsUndefined] unsigned long index);
+    boolean contains([Optional=DefaultIsUndefined] DOMString string);
 };
 
diff --git a/dom/DOMStringMap.idl b/dom/DOMStringMap.idl
index ff1c4d4..e200cc8 100644
--- a/dom/DOMStringMap.idl
+++ b/dom/DOMStringMap.idl
@@ -25,11 +25,11 @@
 
 [
     GenerateIsReachable=ImplElementRoot,
-    NamedGetter,
+    CustomNamedGetter,
     CustomDeleteProperty,
     CustomEnumerateProperty,
     CustomNamedSetter,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface DOMStringMap {
 };
 
diff --git a/dom/DataTransferItem.idl b/dom/DataTransferItem.idl
index 9be3a45..1131d03 100644
--- a/dom/DataTransferItem.idl
+++ b/dom/DataTransferItem.idl
@@ -34,7 +34,7 @@
     readonly attribute DOMString kind;
     readonly attribute DOMString type;
 
-    void getAsString(in [Callback,Optional=DefaultIsUndefined] StringCallback callback);
+    void getAsString([Callback,Optional=DefaultIsUndefined] StringCallback callback);
     Blob getAsFile();
 };
 
diff --git a/dom/DataTransferItemList.idl b/dom/DataTransferItemList.idl
index 799ea32..67763e9 100644
--- a/dom/DataTransferItemList.idl
+++ b/dom/DataTransferItemList.idl
@@ -30,17 +30,15 @@
 
 [
     IndexedGetter,
-#if defined(V8_BINDING) && V8_BINDING
     CustomDeleteProperty,
-#endif
     ImplementationLacksVTable
 ] interface DataTransferItemList {
     readonly attribute long length;
-    DataTransferItem item(in [Optional=DefaultIsUndefined] unsigned long index);
+    DataTransferItem item([Optional=DefaultIsUndefined] unsigned long index);
 
     void clear();
-    void add(in File? file);
-    void add(in [Optional=DefaultIsUndefined] DOMString data, 
-             in [Optional=DefaultIsUndefined] DOMString type) raises(DOMException);
+    void add(File? file);
+    [RaisesException] void add([Optional=DefaultIsUndefined] DOMString data, 
+             [Optional=DefaultIsUndefined] DOMString type);
 };
 
diff --git a/Modules/indexeddb/IDBAny.idl b/dom/DeviceAcceleration.idl
similarity index 84%
copy from Modules/indexeddb/IDBAny.idl
copy to dom/DeviceAcceleration.idl
index 7960e8f..ad74f17 100644
--- a/Modules/indexeddb/IDBAny.idl
+++ b/dom/DeviceAcceleration.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -24,8 +24,9 @@
  */
 
 [
-    CustomToJSObject,
-    V8NoWrapperCache
-] interface IDBAny {
-    // This space is intentionally left blank.
+    ImplementationLacksVTable
+] interface DeviceAcceleration {
+    readonly attribute double? x;
+    readonly attribute double? y;
+    readonly attribute double? z;
 };
diff --git a/dom/DeviceMotionEvent.idl b/dom/DeviceMotionEvent.idl
index 7c39c2f..4177e11 100644
--- a/dom/DeviceMotionEvent.idl
+++ b/dom/DeviceMotionEvent.idl
@@ -23,19 +23,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-[
-    Conditional=DEVICE_ORIENTATION,
-] interface DeviceMotionEvent : Event {
-    [Custom] readonly attribute Acceleration acceleration;
-    [Custom] readonly attribute Acceleration accelerationIncludingGravity;
-    [Custom] readonly attribute RotationRate rotationRate;
-    [Custom] readonly attribute double interval;
-    [Custom] void initDeviceMotionEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                                        in [Optional=DefaultIsUndefined] boolean bubbles, 
-                                        in [Optional=DefaultIsUndefined] boolean cancelable, 
-                                        in [Optional=DefaultIsUndefined] Acceleration acceleration, 
-                                        in [Optional=DefaultIsUndefined] Acceleration accelerationIncludingGravity, 
-                                        in [Optional=DefaultIsUndefined] RotationRate rotationRate, 
-                                        in [Optional=DefaultIsUndefined] double interval);
+interface DeviceMotionEvent : Event {
+    readonly attribute DeviceAcceleration acceleration;
+    readonly attribute DeviceAcceleration accelerationIncludingGravity;
+    readonly attribute DeviceRotationRate rotationRate;
+    readonly attribute double? interval;
+    [Custom] void initDeviceMotionEvent([Optional=DefaultIsUndefined] DOMString type, 
+                                        [Optional=DefaultIsUndefined] boolean bubbles, 
+                                        [Optional=DefaultIsUndefined] boolean cancelable, 
+                                        [Optional=DefaultIsUndefined] Acceleration acceleration, 
+                                        [Optional=DefaultIsUndefined] Acceleration accelerationIncludingGravity, 
+                                        [Optional=DefaultIsUndefined] RotationRate rotationRate, 
+                                        [Optional=DefaultIsUndefined] double interval);
 };
-
diff --git a/dom/DeviceOrientationEvent.idl b/dom/DeviceOrientationEvent.idl
index e826503..65bd538 100644
--- a/dom/DeviceOrientationEvent.idl
+++ b/dom/DeviceOrientationEvent.idl
@@ -23,19 +23,16 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=DEVICE_ORIENTATION,
-] interface DeviceOrientationEvent : Event {
-    [Custom] readonly attribute double alpha;
-    [Custom] readonly attribute double beta;
-    [Custom] readonly attribute double gamma;
-    [Custom] readonly attribute boolean absolute;
-    [Custom] void initDeviceOrientationEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                                             in [Optional=DefaultIsUndefined] boolean bubbles, 
-                                             in [Optional=DefaultIsUndefined] boolean cancelable, 
-                                             in [Optional=DefaultIsUndefined] double alpha, 
-                                             in [Optional=DefaultIsUndefined] double beta, 
-                                             in [Optional=DefaultIsUndefined] double gamma,
-                                             in [Optional=DefaultIsUndefined] boolean absolute);
+interface DeviceOrientationEvent : Event {
+    readonly attribute double? alpha;
+    readonly attribute double? beta;
+    readonly attribute double? gamma;
+    readonly attribute boolean? absolute;
+    [Custom] void initDeviceOrientationEvent([Optional=DefaultIsUndefined] DOMString type, 
+                                             [Optional=DefaultIsUndefined] boolean bubbles, 
+                                             [Optional=DefaultIsUndefined] boolean cancelable, 
+                                             [Optional=DefaultIsUndefined] double alpha, 
+                                             [Optional=DefaultIsUndefined] double beta, 
+                                             [Optional=DefaultIsUndefined] double gamma,
+                                             [Optional=DefaultIsUndefined] boolean absolute);
 };
-
diff --git a/Modules/indexeddb/IDBAny.idl b/dom/DeviceRotationRate.idl
similarity index 84%
copy from Modules/indexeddb/IDBAny.idl
copy to dom/DeviceRotationRate.idl
index 7960e8f..d599c97 100644
--- a/Modules/indexeddb/IDBAny.idl
+++ b/dom/DeviceRotationRate.idl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2010 Google Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -24,8 +24,9 @@
  */
 
 [
-    CustomToJSObject,
-    V8NoWrapperCache
-] interface IDBAny {
-    // This space is intentionally left blank.
+    ImplementationLacksVTable
+] interface DeviceRotationRate {
+    readonly attribute double? alpha;
+    readonly attribute double? beta;
+    readonly attribute double? gamma;
 };
diff --git a/dom/Document.idl b/dom/Document.idl
index 2f0a2a9..2884c1b 100644
--- a/dom/Document.idl
+++ b/dom/Document.idl
@@ -27,67 +27,44 @@
     readonly attribute DOMImplementation implementation;
     readonly attribute Element documentElement;
 
-    [ReturnNewObject, V8DeliverCustomElementCallbacks, V8PerWorldBindings]
-    Element createElement(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString tagName)
-        raises (DOMException);
+    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, RaisesException] Element createElement([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString tagName);
     DocumentFragment   createDocumentFragment();
-    [ReturnNewObject, V8PerWorldBindings] Text createTextNode(in [Optional=DefaultIsUndefined] DOMString data);
-    [ReturnNewObject] Comment createComment(in [Optional=DefaultIsUndefined] DOMString data);
-    [ReturnNewObject] CDATASection createCDATASection(in [Optional=DefaultIsUndefined] DOMString data)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters, ReturnNewObject] ProcessingInstruction createProcessingInstruction(in [Optional=DefaultIsUndefined] DOMString target,
-                                                                                 in [Optional=DefaultIsUndefined] DOMString data)
-        raises (DOMException);
-    [ReturnNewObject] Attr createAttribute(in [Optional=DefaultIsUndefined] DOMString name)
-        raises (DOMException);
-    [ReturnNewObject] EntityReference createEntityReference(in [Optional=DefaultIsUndefined] DOMString name)
-        raises(DOMException);
-    [V8PerWorldBindings] NodeList           getElementsByTagName(in [Optional=DefaultIsUndefined] DOMString tagname);
+    [ReturnNewObject, PerWorldBindings] Text createTextNode([Optional=DefaultIsUndefined] DOMString data);
+    [ReturnNewObject] Comment createComment([Optional=DefaultIsUndefined] DOMString data);
+    [ReturnNewObject, RaisesException] CDATASection createCDATASection([Optional=DefaultIsUndefined] DOMString data);
+    [ReturnNewObject, RaisesException] ProcessingInstruction createProcessingInstruction([Optional=DefaultIsUndefined] DOMString target,
+                                                                                 [Optional=DefaultIsUndefined] DOMString data);
+    [ReturnNewObject, RaisesException] Attr createAttribute([Optional=DefaultIsUndefined] DOMString name);
+    [ReturnNewObject, RaisesException] EntityReference createEntityReference([Optional=DefaultIsUndefined] DOMString name);
+    [PerWorldBindings] NodeList           getElementsByTagName([Optional=DefaultIsUndefined] DOMString tagname);
 
     // Introduced in DOM Level 2:
 
-    [ObjCLegacyUnnamedParameters, ReturnNewObject, V8DeliverCustomElementCallbacks]
-    Node importNode(in [Optional=DefaultIsUndefined] Node importedNode,
-                    in [Optional] boolean deep)
-        raises (DOMException);
-    [ObjCLegacyUnnamedParameters, ReturnNewObject, V8DeliverCustomElementCallbacks]
-    Element createElementNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                            in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName)
-        raises (DOMException);
-    [ObjCLegacyUnnamedParameters, ReturnNewObject] Attr createAttributeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                                                          in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName)
-        raises (DOMException);
-    [ObjCLegacyUnnamedParameters] NodeList getElementsByTagNameNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                                   in [Optional=DefaultIsUndefined] DOMString localName);
-    [V8PerWorldBindings] Element            getElementById(in [Optional=DefaultIsUndefined] DOMString elementId);
+    [ReturnNewObject, DeliverCustomElementCallbacks, RaisesException] Node importNode([Optional=DefaultIsUndefined] Node importedNode,
+                    [Optional] boolean deep);
+    [ReturnNewObject, DeliverCustomElementCallbacks, RaisesException] Element createElementNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                            [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName);
+    [ReturnNewObject, RaisesException] Attr createAttributeNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                                                          [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString qualifiedName);
+     NodeList getElementsByTagNameNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                                   [Optional=DefaultIsUndefined] DOMString localName);
+    [PerWorldBindings] Element            getElementById([Optional=DefaultIsUndefined] DOMString elementId);
 
     // DOM Level 3 Core
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString inputEncoding;
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString xmlEncoding;
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString xmlVersion
-                setter raises (DOMException);
-             attribute boolean xmlStandalone
-                setter raises (DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlVersion;
+             [SetterRaisesException] attribute boolean xmlStandalone;
 
-    Node               adoptNode(in [Optional=DefaultIsUndefined] Node source)
-        raises (DOMException);
+    [RaisesException] Node               adoptNode([Optional=DefaultIsUndefined] Node source);
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C || defined(LANGUAGE_GOBJECT) && LANGUAGE_GOBJECT
-    // document.documentURI was writable in DOM3 Core, but is read-only in DOM4
-    // (see http://www.w3.org/TR/2011/WD-dom-20110915/#document). We need to keep
-    // the writable version around for Objective C clients, but are moving to
-    // read-only for other clients.
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString documentURI;
-#else
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString documentURI;
-#endif
 
     // DOM Level 2 Events (DocumentEvents interface)
 
-    Event              createEvent(in [Optional=DefaultIsUndefined] DOMString eventType)
-        raises(DOMException);
+    [RaisesException] Event              createEvent([Optional=DefaultIsUndefined] DOMString eventType);
 
     // DOM Level 2 Tranversal and Range (DocumentRange interface)
 
@@ -95,16 +72,14 @@
 
     // DOM Level 2 Tranversal and Range (DocumentTraversal interface)
 
-    [ObjCLegacyUnnamedParameters] NodeIterator createNodeIterator(in [Optional=DefaultIsUndefined] Node root,
-                                                   in [Optional=DefaultIsUndefined] unsigned long whatToShow,
-                                                   in [Optional=DefaultIsUndefined] NodeFilter filter,
-                                                   in [Optional=DefaultIsUndefined] boolean expandEntityReferences)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters] TreeWalker createTreeWalker(in [Optional=DefaultIsUndefined] Node root,
-                                               in [Optional=DefaultIsUndefined] unsigned long whatToShow,
-                                               in [Optional=DefaultIsUndefined] NodeFilter filter,
-                                               in [Optional=DefaultIsUndefined] boolean expandEntityReferences)
-        raises(DOMException);
+     [RaisesException] NodeIterator createNodeIterator([Optional=DefaultIsUndefined] Node root,
+                                                   [Optional=DefaultIsUndefined] unsigned long whatToShow,
+                                                   [Optional=DefaultIsUndefined] NodeFilter filter,
+                                                   [Optional=DefaultIsUndefined] boolean expandEntityReferences);
+     [RaisesException] TreeWalker createTreeWalker([Optional=DefaultIsUndefined] Node root,
+                                               [Optional=DefaultIsUndefined] unsigned long whatToShow,
+                                               [Optional=DefaultIsUndefined] NodeFilter filter,
+                                               [Optional=DefaultIsUndefined] boolean expandEntityReferences);
 
     // DOM Level 2 Abstract Views (DocumentView interface)
 
@@ -116,58 +91,41 @@
 
     // DOM Level 2 Style (DocumentCSS interface)
 
-    [ObjCLegacyUnnamedParameters] CSSStyleDeclaration getOverrideStyle(in [Optional=DefaultIsUndefined] Element element,
-                                                        in [Optional=DefaultIsUndefined] DOMString pseudoElement);
+     CSSStyleDeclaration getOverrideStyle([Optional=DefaultIsUndefined] Element element,
+                                                        [Optional=DefaultIsUndefined] DOMString pseudoElement);
 
     // DOM Level 3 XPath (XPathEvaluator interface)
-    [ObjCLegacyUnnamedParameters] XPathExpression createExpression(in [Optional=DefaultIsUndefined] DOMString expression,
-                                                    in [Optional=DefaultIsUndefined] XPathNSResolver resolver)
-        raises(DOMException);
-    XPathNSResolver    createNSResolver(in Node nodeResolver);
-    [ObjCLegacyUnnamedParameters, V8Custom] XPathResult evaluate(in [Optional=DefaultIsUndefined] DOMString expression,
-                                                  in [Optional=DefaultIsUndefined] Node contextNode,
-                                                  in [Optional=DefaultIsUndefined] XPathNSResolver resolver,
-                                                  in [Optional=DefaultIsUndefined] unsigned short type,
-                                                  in [Optional=DefaultIsUndefined] XPathResult inResult)
-        raises(DOMException);
+     [RaisesException] XPathExpression createExpression([Optional=DefaultIsUndefined] DOMString expression,
+                                                    [Optional=DefaultIsUndefined] XPathNSResolver resolver);
+    XPathNSResolver    createNSResolver(Node nodeResolver);
+    [Custom, RaisesException] XPathResult evaluate([Optional=DefaultIsUndefined] DOMString expression,
+                                                  [Optional=DefaultIsUndefined] Node contextNode,
+                                                  [Optional=DefaultIsUndefined] XPathNSResolver resolver,
+                                                  [Optional=DefaultIsUndefined] unsigned short type,
+                                                  [Optional=DefaultIsUndefined] XPathResult inResult);
 
     // Common extensions
-    [V8DeliverCustomElementCallbacks]
-    boolean            execCommand(in [Optional=DefaultIsUndefined] DOMString command,
-                                   in [Optional=DefaultIsUndefined] boolean userInterface,
-                                   in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString value);
+    [DeliverCustomElementCallbacks]
+    boolean            execCommand([Optional=DefaultIsUndefined] DOMString command,
+                                   [Optional=DefaultIsUndefined] boolean userInterface,
+                                   [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString value);
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // FIXME: remove the these two versions once [Optional] is implemented for Objective-C.
-    boolean            execCommand(in DOMString command,
-                                   in boolean userInterface);
-    boolean            execCommand(in DOMString command);
-#endif
-
-    boolean            queryCommandEnabled(in [Optional=DefaultIsUndefined] DOMString command);
-    boolean            queryCommandIndeterm(in [Optional=DefaultIsUndefined] DOMString command);
-    boolean            queryCommandState(in [Optional=DefaultIsUndefined] DOMString command);
-    boolean            queryCommandSupported(in [Optional=DefaultIsUndefined] DOMString command);
-    DOMString          queryCommandValue(in [Optional=DefaultIsUndefined] DOMString command);
+    boolean            queryCommandEnabled([Optional=DefaultIsUndefined] DOMString command);
+    boolean            queryCommandIndeterm([Optional=DefaultIsUndefined] DOMString command);
+    boolean            queryCommandState([Optional=DefaultIsUndefined] DOMString command);
+    boolean            queryCommandSupported([Optional=DefaultIsUndefined] DOMString command);
+    DOMString          queryCommandValue([Optional=DefaultIsUndefined] DOMString command);
 
     // Moved down from HTMLDocument
 
              [TreatNullAs=NullString] attribute DOMString title;
     readonly attribute DOMString referrer;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-             [TreatNullAs=NullString] attribute DOMString domain
-                 setter raises (DOMException);
-#else
-    readonly attribute DOMString domain;
-#endif
+             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString domain;
     readonly attribute DOMString URL;
 
-             [TreatNullAs=NullString] attribute DOMString cookie
-                 setter raises (DOMException),
-                 getter raises (DOMException);
+             [TreatNullAs=NullString, GetterRaisesException, SetterRaisesException] attribute DOMString cookie;
 
-             attribute HTMLElement body
-                 setter raises (DOMException);
+             [SetterRaisesException] attribute HTMLElement body;
 
     readonly attribute HTMLHeadElement head;
     readonly attribute HTMLCollection images;
@@ -177,15 +135,13 @@
     readonly attribute HTMLCollection anchors;
     readonly attribute DOMString lastModified;
 
-    [V8PerWorldBindings] NodeList getElementsByName(in [Optional=DefaultIsUndefined] DOMString elementName);
+    [PerWorldBindings] NodeList getElementsByName([Optional=DefaultIsUndefined] DOMString elementName);
 
 #if defined(ENABLE_MICRODATA) && ENABLE_MICRODATA
-    NodeList getItems(in [TreatNullAs=NullString, TreatUndefinedAs=NullString, Optional=DefaultIsUndefined] DOMString typeNames);
+    NodeList getItems([TreatNullAs=NullString, TreatUndefinedAs=NullString, Optional=DefaultIsUndefined] DOMString typeNames);
 #endif
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-             [Custom] attribute Location location;
-#endif
+    [Custom] attribute Location location;
 
     // IE extensions
 
@@ -193,15 +149,13 @@
     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString defaultCharset;
     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString readyState;
 
-    Element            elementFromPoint(in [Optional=DefaultIsUndefined] long x, 
-                                        in [Optional=DefaultIsUndefined] long y);
-    Range              caretRangeFromPoint(in [Optional=DefaultIsUndefined] long x, 
-                                           in [Optional=DefaultIsUndefined] long y);
+    Element            elementFromPoint([Optional=DefaultIsUndefined] long x, 
+                                        [Optional=DefaultIsUndefined] long y);
+    Range              caretRangeFromPoint([Optional=DefaultIsUndefined] long x, 
+                                           [Optional=DefaultIsUndefined] long y);
 
     // Mozilla extensions
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     DOMSelection       getSelection();
-#endif
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString characterSet;
 
     // WebKit extensions
@@ -209,63 +163,35 @@
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString preferredStylesheetSet;
              [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString selectedStylesheetSet;
 
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    CSSStyleDeclaration createCSSStyleDeclaration();
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // DOM Level 2 Style Interface
-    [ObjCLegacyUnnamedParameters, ObjCUseDefaultView] CSSStyleDeclaration getComputedStyle(in Element element,
-                                                                  in DOMString pseudoElement);
-
-    // WebKit extension
-    // FIXME: remove the first version once [Optional] is implemented for Objective-C.
-    [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(in Element element,
-                                              in DOMString pseudoElement);
-    [ObjCUseDefaultView] CSSRuleList getMatchedCSSRules(in Element element,
-                                              in DOMString pseudoElement,
-                                              in [Optional] boolean authorOnly);
-                                              
-#endif
-
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
-    CanvasRenderingContext getCSSCanvasContext(in DOMString contextId, in DOMString name, in long width, in long height);
-#endif
-#endif
+    CanvasRenderingContext getCSSCanvasContext(DOMString contextId, DOMString name, long width, long height);
 
     // HTML 5
-    NodeList getElementsByClassName(in [Optional=DefaultIsUndefined] DOMString tagname);
+    NodeList getElementsByClassName([Optional=DefaultIsUndefined] DOMString tagname);
 
     readonly attribute DOMString compatMode;
 
     // NodeSelector - Selector API
-    Element querySelector(in DOMString selectors)
-        raises(DOMException);
-    NodeList querySelectorAll(in DOMString selectors)
-        raises(DOMException);
+    [RaisesException] Element querySelector(DOMString selectors);
+    [RaisesException] NodeList querySelectorAll(DOMString selectors);
 
     // Mozilla version
-    [V8EnabledAtRuntime] readonly attribute boolean webkitIsFullScreen;
-    [V8EnabledAtRuntime] readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
-    [V8EnabledAtRuntime] readonly attribute Element webkitCurrentFullScreenElement;
-    [V8EnabledAtRuntime] void webkitCancelFullScreen();
+    [EnabledAtRuntime] readonly attribute boolean webkitIsFullScreen;
+    [EnabledAtRuntime] readonly attribute boolean webkitFullScreenKeyboardInputAllowed;
+    [EnabledAtRuntime] readonly attribute Element webkitCurrentFullScreenElement;
+    [EnabledAtRuntime] void webkitCancelFullScreen();
 
     // W3C version
-    [V8EnabledAtRuntime] readonly attribute boolean webkitFullscreenEnabled;
-    [V8EnabledAtRuntime] readonly attribute Element webkitFullscreenElement;
-    [V8EnabledAtRuntime] void webkitExitFullscreen();
+    [EnabledAtRuntime] readonly attribute boolean webkitFullscreenEnabled;
+    [EnabledAtRuntime] readonly attribute Element webkitFullscreenElement;
+    [EnabledAtRuntime] void webkitExitFullscreen();
 
-    [Conditional=POINTER_LOCK] void webkitExitPointerLock();
-    [Conditional=POINTER_LOCK] readonly attribute Element webkitPointerLockElement;
+    void webkitExitPointerLock();
+    readonly attribute Element webkitPointerLockElement;
 
-    [Conditional=CSS_REGIONS, V8EnabledAtRuntime=cssRegions] DOMNamedFlowCollection webkitGetNamedFlows();
+    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] DOMNamedFlowCollection webkitGetNamedFlows();
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [Conditional=FONT_LOAD_EVENTS, V8EnabledAtRuntime=fontLoadEvents] readonly attribute FontLoader fontloader;
-#endif
+    [Conditional=FONT_LOAD_EVENTS, EnabledAtRuntime=fontLoadEvents] readonly attribute FontLoader fontloader;
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // Event handler DOM attributes
     [NotEnumerable] attribute EventListener onabort;
     [NotEnumerable] attribute EventListener onblur;
@@ -332,47 +258,36 @@
     [NotEnumerable] attribute EventListener onsearch;
     [NotEnumerable] attribute EventListener onselectstart;
     [NotEnumerable] attribute EventListener onselectionchange;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] attribute EventListener ontouchstart;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] attribute EventListener ontouchmove;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] attribute EventListener ontouchend;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] attribute EventListener ontouchcancel;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchstart;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchmove;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchend;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchcancel;
     [NotEnumerable] attribute EventListener onwebkitfullscreenchange;
     [NotEnumerable] attribute EventListener onwebkitfullscreenerror;
-    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onwebkitpointerlockchange;
-    [NotEnumerable, Conditional=POINTER_LOCK] attribute EventListener onwebkitpointerlockerror;
-    [NotEnumerable, V8EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute EventListener onsecuritypolicyviolation;
-#endif
+    [NotEnumerable] attribute EventListener onwebkitpointerlockchange;
+    [NotEnumerable] attribute EventListener onwebkitpointerlockerror;
+    [NotEnumerable, EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute EventListener onsecuritypolicyviolation;
 
 #if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
-    [ReturnNewObject, V8EnabledAtRuntime=touch] Touch createTouch(in [Optional=DefaultIsUndefined] DOMWindow window,
-                                                     in [Optional=DefaultIsUndefined] EventTarget target,
-                                                     in [Optional=DefaultIsUndefined] long identifier,
-                                                     in [Optional=DefaultIsUndefined] long pageX,
-                                                     in [Optional=DefaultIsUndefined] long pageY,
-                                                     in [Optional=DefaultIsUndefined] long screenX,
-                                                     in [Optional=DefaultIsUndefined] long screenY,
-                                                     in [Optional=DefaultIsUndefined] long webkitRadiusX,
-                                                     in [Optional=DefaultIsUndefined] long webkitRadiusY,
-                                                     in [Optional=DefaultIsUndefined] float webkitRotationAngle,
-                                                     in [Optional=DefaultIsUndefined] float webkitForce)
-        raises (DOMException);
-    [ReturnNewObject, V8EnabledAtRuntime=touch, Custom] TouchList createTouchList()
-        raises (DOMException);
+    [ReturnNewObject, EnabledAtRuntime=touch, RaisesException] Touch createTouch([Optional=DefaultIsUndefined] DOMWindow window,
+                                                     [Optional=DefaultIsUndefined] EventTarget target,
+                                                     [Optional=DefaultIsUndefined] long identifier,
+                                                     [Optional=DefaultIsUndefined] long pageX,
+                                                     [Optional=DefaultIsUndefined] long pageY,
+                                                     [Optional=DefaultIsUndefined] long screenX,
+                                                     [Optional=DefaultIsUndefined] long screenY,
+                                                     [Optional=DefaultIsUndefined] long webkitRadiusX,
+                                                     [Optional=DefaultIsUndefined] long webkitRadiusY,
+                                                     [Optional=DefaultIsUndefined] float webkitRotationAngle,
+                                                     [Optional=DefaultIsUndefined] float webkitForce);
+    [ReturnNewObject, EnabledAtRuntime=touch, Custom, RaisesException] TouchList createTouchList();
 #endif
 
 #if defined(ENABLE_CUSTOM_ELEMENTS) && ENABLE_CUSTOM_ELEMENTS
-    [V8EnabledAtRuntime=customDOMElements, Conditional=CUSTOM_ELEMENTS, ImplementedAs=registerElement, CallWith=ScriptState, V8DeliverCustomElementCallbacks]
-    CustomElementConstructor webkitRegister(in DOMString name, in [Optional] Dictionary options) raises(DOMException);
-    [ReturnNewObject, V8DeliverCustomElementCallbacks, V8PerWorldBindings]
-    Element createElement(in DOMString localName, in [TreatNullAs=NullString] DOMString typeExtension) raises (DOMException);
-    [ReturnNewObject, V8DeliverCustomElementCallbacks]
-    Element createElementNS(in [TreatNullAs=NullString] DOMString namespaceURI, in DOMString qualifiedName,
-                            in [TreatNullAs=NullString] DOMString typeExtension) raises (DOMException);
-#endif
-
-#if defined(LANGUAGE_CPP) && LANGUAGE_CPP
-    // Extra WebCore methods exposed to allow compile-time casting in C++
-    boolean isHTMLDocument();
+    [EnabledAtRuntime=customDOMElements, Conditional=CUSTOM_ELEMENTS, ImplementedAs=registerElement, CallWith=ScriptState, DeliverCustomElementCallbacks, RaisesException] CustomElementConstructor webkitRegister(DOMString name, [Optional] Dictionary options);
+    [ReturnNewObject, DeliverCustomElementCallbacks, PerWorldBindings, RaisesException] Element createElement(DOMString localName, [TreatNullAs=NullString] DOMString typeExtension);
+    [ReturnNewObject, DeliverCustomElementCallbacks, RaisesException] Element createElementNS([TreatNullAs=NullString] DOMString namespaceURI, DOMString qualifiedName,
+                            [TreatNullAs=NullString] DOMString typeExtension);
 #endif
 
     // Page visibility API.
@@ -380,7 +295,7 @@
     readonly attribute boolean webkitHidden;
 
     // Security Policy API: http://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html#script-interfaces
-    [V8EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] readonly attribute DOMSecurityPolicy securityPolicy;
+    [EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] readonly attribute DOMSecurityPolicy securityPolicy;
 
 };
 
diff --git a/dom/DocumentFragment.idl b/dom/DocumentFragment.idl
index 191311e..e8cd287 100644
--- a/dom/DocumentFragment.idl
+++ b/dom/DocumentFragment.idl
@@ -18,12 +18,10 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface DocumentFragment : Node {
     // NodeSelector - Selector API
-    Element querySelector(in DOMString selectors)
-        raises(DOMException);
-    NodeList querySelectorAll(in DOMString selectors)
-        raises(DOMException);
+    [RaisesException] Element querySelector(DOMString selectors);
+    [RaisesException] NodeList querySelectorAll(DOMString selectors);
 };
 
diff --git a/dom/DocumentType.idl b/dom/DocumentType.idl
index 10fc1f3..5cd61a9 100644
--- a/dom/DocumentType.idl
+++ b/dom/DocumentType.idl
@@ -32,7 +32,6 @@
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString internalSubset;        
 
     // DOM 4
-    void remove()
-        raises(DOMException);
+    [RaisesException] void remove();
 };
 
diff --git a/dom/Element.idl b/dom/Element.idl
index 35f3379..b734d48 100644
--- a/dom/Element.idl
+++ b/dom/Element.idl
@@ -19,175 +19,152 @@
  */
 
 [
-    V8CustomToJSObject,
-    V8SkipVTableValidation
+    CustomToJSObject,
+    SkipVTableValidation
 ] interface Element : Node {
 
     // DOM Level 1 Core
 
-    [TreatReturnedNullStringAs=Null, V8PerWorldBindings] readonly attribute DOMString tagName;
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString tagName;
 
-    [TreatReturnedNullStringAs=Null] DOMString getAttribute(in [Optional=DefaultIsUndefined] DOMString name);
-    [ObjCLegacyUnnamedParameters] void setAttribute(in [Optional=DefaultIsUndefined] DOMString name,
-                                     in [Optional=DefaultIsUndefined] DOMString value)
-        raises(DOMException);
-    void removeAttribute(in [Optional=DefaultIsUndefined] DOMString name);
-    Attr getAttributeNode(in [Optional=DefaultIsUndefined] DOMString name);
-    Attr setAttributeNode(in [Optional=DefaultIsUndefined] Attr newAttr)
-        raises(DOMException);
-    Attr removeAttributeNode(in [Optional=DefaultIsUndefined] Attr oldAttr)
-        raises(DOMException);
-    [V8PerWorldBindings] NodeList getElementsByTagName(in [Optional=DefaultIsUndefined] DOMString name);
+    [TreatReturnedNullStringAs=Null] DOMString getAttribute([Optional=DefaultIsUndefined] DOMString name);
+     [RaisesException] void setAttribute([Optional=DefaultIsUndefined] DOMString name,
+                                     [Optional=DefaultIsUndefined] DOMString value);
+    void removeAttribute([Optional=DefaultIsUndefined] DOMString name);
+    Attr getAttributeNode([Optional=DefaultIsUndefined] DOMString name);
+    [RaisesException] Attr setAttributeNode([Optional=DefaultIsUndefined] Attr newAttr);
+    [RaisesException] Attr removeAttributeNode([Optional=DefaultIsUndefined] Attr oldAttr);
+    [PerWorldBindings] NodeList getElementsByTagName([Optional=DefaultIsUndefined] DOMString name);
 
-#if !defined(LANGUAGE_OBJECTIVE_C)
     // For ObjC this is defined on Node for legacy support.
-    [V8PerWorldBindings] readonly attribute NamedNodeMap     attributes;
+    [PerWorldBindings] readonly attribute NamedNodeMap     attributes;
     boolean            hasAttributes();
-#endif
 
     // DOM Level 2 Core
 
-    [ObjCLegacyUnnamedParameters] DOMString getAttributeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                            in [Optional=DefaultIsUndefined] DOMString localName);
-    [ObjCLegacyUnnamedParameters] void setAttributeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                       in [Optional=DefaultIsUndefined] DOMString qualifiedName, 
-                                       in [Optional=DefaultIsUndefined] DOMString value)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters] void removeAttributeNS(in [TreatNullAs=NullString] DOMString namespaceURI,
-                                          in DOMString localName);
-    [ObjCLegacyUnnamedParameters] NodeList getElementsByTagNameNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                                   in [Optional=DefaultIsUndefined] DOMString localName);
-    [ObjCLegacyUnnamedParameters] Attr getAttributeNodeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                           in [Optional=DefaultIsUndefined] DOMString localName);
-    Attr setAttributeNodeNS(in [Optional=DefaultIsUndefined] Attr newAttr)
-        raises(DOMException);
-    boolean hasAttribute(in DOMString name);
-    [ObjCLegacyUnnamedParameters] boolean hasAttributeNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                          in [Optional=DefaultIsUndefined] DOMString localName);
+     DOMString getAttributeNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                            [Optional=DefaultIsUndefined] DOMString localName);
+     [RaisesException] void setAttributeNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                       [Optional=DefaultIsUndefined] DOMString qualifiedName, 
+                                       [Optional=DefaultIsUndefined] DOMString value);
+     void removeAttributeNS([TreatNullAs=NullString] DOMString namespaceURI,
+                                          DOMString localName);
+     NodeList getElementsByTagNameNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                                   [Optional=DefaultIsUndefined] DOMString localName);
+     Attr getAttributeNodeNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                           [Optional=DefaultIsUndefined] DOMString localName);
+    [RaisesException] Attr setAttributeNodeNS([Optional=DefaultIsUndefined] Attr newAttr);
+    boolean hasAttribute(DOMString name);
+     boolean hasAttributeNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                          [Optional=DefaultIsUndefined] DOMString localName);
 
-    [V8PerWorldBindings] readonly attribute CSSStyleDeclaration style;
+    [PerWorldBindings] readonly attribute CSSStyleDeclaration style;
 
     // Common extensions
 
-    [V8PerWorldBindings] readonly attribute long offsetLeft;
-    [V8PerWorldBindings] readonly attribute long offsetTop;
-    [V8PerWorldBindings] readonly attribute long offsetWidth;
-    [V8PerWorldBindings] readonly attribute long offsetHeight;
-    [ImplementedAs=bindingsOffsetParent, V8PerWorldBindings] readonly attribute Element offsetParent;
-    [V8PerWorldBindings] readonly attribute long clientLeft;
-    [V8PerWorldBindings] readonly attribute long clientTop;
-    [V8PerWorldBindings] readonly attribute long clientWidth;
-    [V8PerWorldBindings] readonly attribute long clientHeight;
-             [V8PerWorldBindings] attribute long scrollLeft;
-             [V8PerWorldBindings] attribute long scrollTop;
-    [V8PerWorldBindings] readonly attribute long scrollWidth;
-    [V8PerWorldBindings] readonly attribute long scrollHeight;
+    [PerWorldBindings] readonly attribute long offsetLeft;
+    [PerWorldBindings] readonly attribute long offsetTop;
+    [PerWorldBindings] readonly attribute long offsetWidth;
+    [PerWorldBindings] readonly attribute long offsetHeight;
+    [ImplementedAs=bindingsOffsetParent, PerWorldBindings] readonly attribute Element offsetParent;
+    [PerWorldBindings] readonly attribute long clientLeft;
+    [PerWorldBindings] readonly attribute long clientTop;
+    [PerWorldBindings] readonly attribute long clientWidth;
+    [PerWorldBindings] readonly attribute long clientHeight;
+             [PerWorldBindings] attribute long scrollLeft;
+             [PerWorldBindings] attribute long scrollTop;
+    [PerWorldBindings] readonly attribute long scrollWidth;
+    [PerWorldBindings] readonly attribute long scrollHeight;
 
     void focus();
     void blur();
-    void scrollIntoView(in [Optional] boolean alignWithTop);
+    void scrollIntoView([Optional] boolean alignWithTop);
 
     // WebKit extensions
 
-    void scrollIntoViewIfNeeded(in [Optional] boolean centerIfNeeded);
-    void scrollByLines(in [Optional=DefaultIsUndefined] long lines);
-    void scrollByPages(in [Optional=DefaultIsUndefined] long pages);
+    void scrollIntoViewIfNeeded([Optional] boolean centerIfNeeded);
+    void scrollByLines([Optional=DefaultIsUndefined] long lines);
+    void scrollByPages([Optional=DefaultIsUndefined] long pages);
 
     // HTML 5
-    NodeList getElementsByClassName(in [Optional=DefaultIsUndefined] DOMString name);
+    NodeList getElementsByClassName([Optional=DefaultIsUndefined] DOMString name);
 
-    [Reflect=class, V8PerWorldBindings] attribute DOMString className;
-    [V8PerWorldBindings] readonly attribute DOMTokenList classList;
+    [Reflect=class, PerWorldBindings] attribute DOMString className;
+    [PerWorldBindings] readonly attribute DOMTokenList classList;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [V8PerWorldBindings] readonly attribute DOMStringMap dataset;
-#endif
+    [PerWorldBindings] readonly attribute DOMStringMap dataset;
 
     // NodeSelector - Selector API
-    Element querySelector(in DOMString selectors)
-        raises(DOMException);
-    NodeList querySelectorAll(in DOMString selectors)
-        raises(DOMException);
+    [RaisesException] Element querySelector(DOMString selectors);
+    [RaisesException] NodeList querySelectorAll(DOMString selectors);
 
     // WebKit extension, pending specification.
-    boolean webkitMatchesSelector(in [Optional=DefaultIsUndefined] DOMString selectors)
-        raises(DOMException);
+    [RaisesException] boolean webkitMatchesSelector([Optional=DefaultIsUndefined] DOMString selectors);
 
     // ElementTraversal API
-    [V8PerWorldBindings] readonly attribute Element firstElementChild;
-    [V8PerWorldBindings] readonly attribute Element lastElementChild;
-    [V8PerWorldBindings] readonly attribute Element previousElementSibling;
-    [V8PerWorldBindings] readonly attribute Element nextElementSibling;
-    [V8PerWorldBindings] readonly attribute unsigned long childElementCount;
+    [PerWorldBindings] readonly attribute Element firstElementChild;
+    [PerWorldBindings] readonly attribute Element lastElementChild;
+    [PerWorldBindings] readonly attribute Element previousElementSibling;
+    [PerWorldBindings] readonly attribute Element nextElementSibling;
+    [PerWorldBindings] readonly attribute unsigned long childElementCount;
 
     // ShadowAware API
-#if defined(ENABLE_SHADOW_DOM) && ENABLE_SHADOW_DOM && defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [Reflect=pseudo, V8EnabledAtRuntime=shadowDOM, ImplementedAs=pseudo, V8PerWorldBindings] attribute DOMString webkitPseudo;
-    [V8EnabledAtRuntime=shadowDOM, ImplementedAs=createShadowRoot] ShadowRoot webkitCreateShadowRoot() raises(DOMException);
-    [V8EnabledAtRuntime=shadowDOM, ImplementedAs=shadowRoot, V8PerWorldBindings] readonly attribute ShadowRoot webkitShadowRoot;
-    [V8EnabledAtRuntime=shadowDOM, ImplementedAs=insertionParentForBinding, V8PerWorldBindings] readonly attribute Node webkitInsertionParent;
-#endif
+    [Reflect=pseudo, EnabledAtRuntime=shadowDOM, ImplementedAs=pseudo, PerWorldBindings] attribute DOMString webkitPseudo;
+    [EnabledAtRuntime=shadowDOM, ImplementedAs=createShadowRoot, RaisesException] ShadowRoot webkitCreateShadowRoot();
+    [EnabledAtRuntime=shadowDOM, ImplementedAs=shadowRoot, PerWorldBindings] readonly attribute ShadowRoot webkitShadowRoot;
+    [EnabledAtRuntime=shadowDOM, ImplementedAs=insertionParentForBinding, PerWorldBindings] readonly attribute Node webkitInsertionParent;
 
     // DOM 4
-    void remove()
-        raises(DOMException);
+    [RaisesException] void remove();
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // CSSOM View Module API
     ClientRectList getClientRects();
     ClientRect getBoundingClientRect();
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extensions
-    [V8PerWorldBindings] readonly attribute DOMString innerText;
-#endif
 
     // Mozilla version
     const unsigned short ALLOW_KEYBOARD_INPUT = 1;
-    [V8EnabledAtRuntime] void webkitRequestFullScreen(in [Optional=DefaultIsUndefined] unsigned short flags);
+    [EnabledAtRuntime] void webkitRequestFullScreen([Optional=DefaultIsUndefined] unsigned short flags);
 
     // W3C version
-    [V8EnabledAtRuntime] void webkitRequestFullscreen();
+    [EnabledAtRuntime] void webkitRequestFullscreen();
 
-    [Conditional=POINTER_LOCK] void webkitRequestPointerLock();
+    void webkitRequestPointerLock();
 
     // CSS Regions API
-    [Conditional=CSS_REGIONS, V8EnabledAtRuntime=cssRegions, V8PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
-    [Conditional=CSS_REGIONS, V8EnabledAtRuntime=cssRegions] sequence<Range> webkitGetRegionFlowRanges();
+    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions, PerWorldBindings] readonly attribute DOMString webkitRegionOverset;
+    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] sequence<Range> webkitGetRegionFlowRanges();
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // Event handler DOM attributes
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onabort;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onblur;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onchange;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onclick;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener oncontextmenu;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondblclick;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondrag;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondragend;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondragenter;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondragleave;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondragover;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondragstart;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener ondrop;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onerror;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onfocus;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener oninput;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener oninvalid;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onkeydown;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onkeypress;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onkeyup;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onload;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmousedown;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmousemove;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmouseout;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmouseover;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmouseup;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onmousewheel;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onscroll;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onselect;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onsubmit;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onabort;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onblur;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onchange;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onclick;
+    [NotEnumerable, PerWorldBindings] attribute EventListener oncontextmenu;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondblclick;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondrag;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondragend;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondragenter;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondragleave;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondragover;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondragstart;
+    [NotEnumerable, PerWorldBindings] attribute EventListener ondrop;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onerror;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onfocus;
+    [NotEnumerable, PerWorldBindings] attribute EventListener oninput;
+    [NotEnumerable, PerWorldBindings] attribute EventListener oninvalid;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onkeydown;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onkeypress;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onkeyup;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onload;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmousedown;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmousemove;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmouseout;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmouseover;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmouseup;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onmousewheel;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onscroll;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onselect;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onsubmit;
 
     // attribute [NotEnumerable] EventListener oncanplay;
     // attribute [NotEnumerable] EventListener oncanplaythrough;
@@ -213,21 +190,20 @@
     // attribute [NotEnumerable] EventListener onwaiting;
 
     // WebKit extensions
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onbeforecut;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener oncut;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onbeforecopy;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener oncopy;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onbeforepaste;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onpaste;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onreset;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onsearch;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onselectstart;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch, V8PerWorldBindings] attribute EventListener ontouchstart;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch, V8PerWorldBindings] attribute EventListener ontouchmove;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch, V8PerWorldBindings] attribute EventListener ontouchend;
-    [NotEnumerable,Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch, V8PerWorldBindings] attribute EventListener ontouchcancel;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onwebkitfullscreenchange;
-    [NotEnumerable, V8PerWorldBindings] attribute EventListener onwebkitfullscreenerror;
-#endif
+    [NotEnumerable, PerWorldBindings] attribute EventListener onbeforecut;
+    [NotEnumerable, PerWorldBindings] attribute EventListener oncut;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onbeforecopy;
+    [NotEnumerable, PerWorldBindings] attribute EventListener oncopy;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onbeforepaste;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onpaste;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onreset;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onsearch;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onselectstart;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch, PerWorldBindings] attribute EventListener ontouchstart;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch, PerWorldBindings] attribute EventListener ontouchmove;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch, PerWorldBindings] attribute EventListener ontouchend;
+    [NotEnumerable,Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch, PerWorldBindings] attribute EventListener ontouchcancel;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onwebkitfullscreenchange;
+    [NotEnumerable, PerWorldBindings] attribute EventListener onwebkitfullscreenerror;
 };
 
diff --git a/dom/Event.idl b/dom/Event.idl
index 1e5df64..2ba9cd1 100644
--- a/dom/Event.idl
+++ b/dom/Event.idl
@@ -22,8 +22,8 @@
 [
     CustomToJSObject,
     ConstructorTemplate=Event,
-    ObjCPolymorphic,
-    V8SkipVTableValidation
+    
+    SkipVTableValidation
 ] interface Event {
 
     // DOM PhaseType
@@ -32,7 +32,6 @@
     const unsigned short AT_TARGET           = 2;
     const unsigned short BUBBLING_PHASE      = 3;
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // Reverse-engineered from Netscape
     const unsigned short MOUSEDOWN           = 1;
     const unsigned short MOUSEUP             = 2;
@@ -50,7 +49,6 @@
     const unsigned short BLUR                = 8192;
     const unsigned short SELECT              = 16384;
     const unsigned short CHANGE              = 32768;
-#endif
 
     readonly attribute DOMString        type;
     readonly attribute EventTarget      target;
@@ -62,9 +60,9 @@
 
     void               stopPropagation();
     void               preventDefault();
-    [ObjCLegacyUnnamedParameters] void initEvent(in [Optional=DefaultIsUndefined] DOMString eventTypeArg, 
-                                  in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                                  in [Optional=DefaultIsUndefined] boolean cancelableArg);
+     void initEvent([Optional=DefaultIsUndefined] DOMString eventTypeArg, 
+                                  [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                                  [Optional=DefaultIsUndefined] boolean cancelableArg);
 
     // DOM Level 3 Additions.
     readonly attribute boolean defaultPrevented;
@@ -75,15 +73,6 @@
              attribute boolean          returnValue;
              attribute boolean          cancelBubble;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [Custom] readonly attribute Clipboard        clipboardData;
-#endif
-
-#if defined(LANGUAGE_CPP) && LANGUAGE_CPP
-    // Extra WebCore methods exposed to allow compile-time casting in C++
-    boolean isMouseEvent();
-    boolean isUIEvent();
-#endif
-
 };
 
diff --git a/dom/EventException.idl b/dom/EventException.idl
index cb89cdb..cde7100 100644
--- a/dom/EventException.idl
+++ b/dom/EventException.idl
@@ -36,10 +36,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // EventExceptionCode
     const unsigned short UNSPECIFIED_EVENT_TYPE_ERR = 0;
diff --git a/dom/EventListener.idl b/dom/EventListener.idl
index 9bf715a..9d17453 100644
--- a/dom/EventListener.idl
+++ b/dom/EventListener.idl
@@ -18,12 +18,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in DOM Level 2:
 [
-    ObjCProtocol,
-    CPPPureInterface,
-    OmitConstructor
 ] interface EventListener {
-    void               handleEvent(in Event evt);
+    void               handleEvent(Event evt);
 };
 
diff --git a/dom/EventTarget.idl b/dom/EventTarget.idl
index 30c5b23..adffe23 100644
--- a/dom/EventTarget.idl
+++ b/dom/EventTarget.idl
@@ -18,22 +18,17 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in DOM Level 2:
 [
-    ObjCProtocol,
-    CPPPureInterface,
-    OmitConstructor,
     CustomToJSObject,
-    V8NoWrapperCache,
+    NoWrapperCache,
     EventTarget
 ] interface EventTarget {
-    [ObjCLegacyUnnamedParameters] void addEventListener(in DOMString type, 
-                                         in EventListener listener, 
-                                         in [Optional] boolean useCapture);
-    [ObjCLegacyUnnamedParameters] void removeEventListener(in DOMString type, 
-                                            in EventListener listener, 
-                                            in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                                         EventListener listener, 
+                                         [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                                         EventListener listener, 
+                                         [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/dom/FocusEvent.idl b/dom/FocusEvent.idl
index fc422c3..659e576 100644
--- a/dom/FocusEvent.idl
+++ b/dom/FocusEvent.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event
 ] interface FocusEvent : UIEvent {
     [InitializedByEventConstructor] readonly attribute EventTarget relatedTarget;
diff --git a/dom/HashChangeEvent.idl b/dom/HashChangeEvent.idl
index da8f71b..fc30c10 100644
--- a/dom/HashChangeEvent.idl
+++ b/dom/HashChangeEvent.idl
@@ -21,11 +21,11 @@
 [
     ConstructorTemplate=Event
 ] interface HashChangeEvent : Event {
-    void initHashChangeEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                             in [Optional=DefaultIsUndefined] boolean canBubble, 
-                             in [Optional=DefaultIsUndefined] boolean cancelable, 
-                             in [Optional=DefaultIsUndefined] DOMString oldURL, 
-                             in [Optional=DefaultIsUndefined] DOMString newURL); 
+    void initHashChangeEvent([Optional=DefaultIsUndefined] DOMString type, 
+                             [Optional=DefaultIsUndefined] boolean canBubble, 
+                             [Optional=DefaultIsUndefined] boolean cancelable, 
+                             [Optional=DefaultIsUndefined] DOMString oldURL, 
+                             [Optional=DefaultIsUndefined] DOMString newURL); 
     [InitializedByEventConstructor] readonly attribute DOMString oldURL;
     [InitializedByEventConstructor] readonly attribute DOMString newURL;
 };
diff --git a/dom/KeyboardEvent.idl b/dom/KeyboardEvent.idl
index 69796e5..c9b30ce 100644
--- a/dom/KeyboardEvent.idl
+++ b/dom/KeyboardEvent.idl
@@ -19,18 +19,9 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event
 ] interface KeyboardEvent : UIEvent {
 
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    // KeyLocationCode
-    const unsigned long       KEY_LOCATION_STANDARD      = 0x00;
-    const unsigned long       KEY_LOCATION_LEFT          = 0x01;
-    const unsigned long       KEY_LOCATION_RIGHT         = 0x02;
-    const unsigned long       KEY_LOCATION_NUMPAD        = 0x03;
-#endif
-
     [InitializedByEventConstructor] readonly attribute DOMString        keyIdentifier;
     [InitializedByEventConstructor] readonly attribute unsigned long    keyLocation;
     [InitializedByEventConstructor] readonly attribute boolean          ctrlKey;
@@ -39,39 +30,17 @@
     [InitializedByEventConstructor] readonly attribute boolean          metaKey;
     readonly attribute boolean          altGraphKey;
 
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    boolean getModifierState(in [Optional=DefaultIsUndefined] DOMString keyIdentifierArg);
-#endif
-
     // FIXME: this does not match the version in the DOM spec.
-    void initKeyboardEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                           in [Optional=DefaultIsUndefined] boolean canBubble, 
-                           in [Optional=DefaultIsUndefined] boolean cancelable, 
-                           in [Optional=DefaultIsUndefined] DOMWindow view, 
-                           in [Optional=DefaultIsUndefined] DOMString keyIdentifier,
-                           in [Optional=DefaultIsUndefined] unsigned long keyLocation,
-                           in [Optional=DefaultIsUndefined] boolean ctrlKey,
-                           in [Optional=DefaultIsUndefined] boolean altKey,
-                           in [Optional=DefaultIsUndefined] boolean shiftKey,
-                           in [Optional=DefaultIsUndefined] boolean metaKey,
-                           in [Optional=DefaultIsUndefined] boolean altGraphKey);
-
-    // WebKit Extensions
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    readonly attribute long             keyCode;
-    readonly attribute long             charCode;
-    
-    void initKeyboardEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                           in [Optional=DefaultIsUndefined] boolean canBubble, 
-                           in [Optional=DefaultIsUndefined] boolean cancelable, 
-                           in [Optional=DefaultIsUndefined] DOMWindow view, 
-                           in [Optional=DefaultIsUndefined] DOMString keyIdentifier,
-                           in [Optional=DefaultIsUndefined] unsigned long keyLocation,
-                           in [Optional=DefaultIsUndefined] boolean ctrlKey,
-                           in [Optional=DefaultIsUndefined] boolean altKey,
-                           in [Optional=DefaultIsUndefined] boolean shiftKey,
-                           in [Optional=DefaultIsUndefined] boolean metaKey);
-#endif
-
+    void initKeyboardEvent([Optional=DefaultIsUndefined] DOMString type, 
+                           [Optional=DefaultIsUndefined] boolean canBubble, 
+                           [Optional=DefaultIsUndefined] boolean cancelable, 
+                           [Optional=DefaultIsUndefined] DOMWindow view, 
+                           [Optional=DefaultIsUndefined] DOMString keyIdentifier,
+                           [Optional=DefaultIsUndefined] unsigned long keyLocation,
+                           [Optional=DefaultIsUndefined] boolean ctrlKey,
+                           [Optional=DefaultIsUndefined] boolean altKey,
+                           [Optional=DefaultIsUndefined] boolean shiftKey,
+                           [Optional=DefaultIsUndefined] boolean metaKey,
+                           [Optional=DefaultIsUndefined] boolean altGraphKey);
 };
 
diff --git a/dom/MessageChannel.idl b/dom/MessageChannel.idl
index fe565c2..c81bd4c 100644
--- a/dom/MessageChannel.idl
+++ b/dom/MessageChannel.idl
@@ -27,7 +27,7 @@
 [
     Constructor,
     CallWith=ScriptExecutionContext,
-    V8CustomConstructor,
+    CustomConstructor,
     ImplementationLacksVTable
 ] interface MessageChannel {
 
diff --git a/dom/MessageEvent.idl b/dom/MessageEvent.idl
index 1225e56..fc8688d 100644
--- a/dom/MessageEvent.idl
+++ b/dom/MessageEvent.idl
@@ -31,44 +31,25 @@
     [InitializedByEventConstructor] readonly attribute DOMString origin;
     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
     [InitializedByEventConstructor] readonly attribute DOMWindow source;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any data;
     [InitializedByEventConstructor, CustomGetter] readonly attribute Array ports;
 
-    [Custom] void initMessageEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                                   in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                                   in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                                   in [Optional=DefaultIsUndefined] any dataArg, 
-                                   in [Optional=DefaultIsUndefined] DOMString originArg, 
-                                   in [Optional=DefaultIsUndefined] DOMString lastEventIdArg, 
-                                   in [Optional=DefaultIsUndefined] DOMWindow sourceArg, 
-                                   in [Optional=DefaultIsUndefined] Array messagePorts);
+    [Custom] void initMessageEvent([Optional=DefaultIsUndefined] DOMString typeArg, 
+                                   [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                                   [Optional=DefaultIsUndefined] boolean cancelableArg, 
+                                   [Optional=DefaultIsUndefined] any dataArg, 
+                                   [Optional=DefaultIsUndefined] DOMString originArg, 
+                                   [Optional=DefaultIsUndefined] DOMString lastEventIdArg, 
+                                   [Optional=DefaultIsUndefined] DOMWindow sourceArg, 
+                                   [Optional=DefaultIsUndefined] Array messagePorts);
 
-    [Custom] void webkitInitMessageEvent(in [Optional=DefaultIsUndefined] DOMString typeArg,
-                                         in [Optional=DefaultIsUndefined] boolean canBubbleArg,
-                                         in [Optional=DefaultIsUndefined] boolean cancelableArg,
-                                         in [Optional=DefaultIsUndefined] any dataArg,
-                                         in [Optional=DefaultIsUndefined] DOMString originArg,
-                                         in [Optional=DefaultIsUndefined] DOMString lastEventIdArg,
-                                         in [Optional=DefaultIsUndefined] DOMWindow sourceArg,
-                                         in [Optional=DefaultIsUndefined] Array transferables);
-#else
-    // Code generator for ObjC bindings does not support custom bindings, thus there is no good way to
-    // return a variant value. As workaround, expose the data attribute as SerializedScriptValue.
-    readonly attribute SerializedScriptValue data;
-
-    // There's no good way to expose an array via the ObjC bindings, so for now just expose a single port.
-    readonly attribute MessagePort messagePort;
-
-    void initMessageEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                          in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                          in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                          in [Optional=DefaultIsUndefined] SerializedScriptValue dataArg, 
-                          in [Optional=DefaultIsUndefined] DOMString originArg, 
-                          in [Optional=DefaultIsUndefined] DOMString lastEventIdArg, 
-                          in [Optional=DefaultIsUndefined] DOMWindow sourceArg, 
-                          in [Optional=DefaultIsUndefined] MessagePort messagePort);
-#endif
-
+    [Custom] void webkitInitMessageEvent([Optional=DefaultIsUndefined] DOMString typeArg,
+                                         [Optional=DefaultIsUndefined] boolean canBubbleArg,
+                                         [Optional=DefaultIsUndefined] boolean cancelableArg,
+                                         [Optional=DefaultIsUndefined] any dataArg,
+                                         [Optional=DefaultIsUndefined] DOMString originArg,
+                                         [Optional=DefaultIsUndefined] DOMString lastEventIdArg,
+                                         [Optional=DefaultIsUndefined] DOMWindow sourceArg,
+                                         [Optional=DefaultIsUndefined] Array transferables);
 };
 
diff --git a/dom/MessagePort.idl b/dom/MessagePort.idl
index b851ec7..270b4e4 100644
--- a/dom/MessagePort.idl
+++ b/dom/MessagePort.idl
@@ -31,9 +31,7 @@
 ] interface MessagePort {
 // We need to have something as an ObjC binding, because MessagePort is used in MessageEvent, which already has one,
 // but we don't want to actually expose the API while it is in flux.
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [Custom] void postMessage(in any message, in [Optional] Array messagePorts)
-        raises(DOMException);
+    [Custom, RaisesException] void postMessage(any message, [Optional] Array messagePorts);
 
     void start();
     void close();
@@ -42,14 +40,12 @@
     attribute EventListener onmessage;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
-#endif
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/dom/MouseEvent.idl b/dom/MouseEvent.idl
index bb523fb..da60d42 100644
--- a/dom/MouseEvent.idl
+++ b/dom/MouseEvent.idl
@@ -18,9 +18,8 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface MouseEvent : UIEvent {
     [InitializedByEventConstructor] readonly attribute long             screenX;
     [InitializedByEventConstructor] readonly attribute long             screenY;
@@ -32,24 +31,24 @@
     [InitializedByEventConstructor] readonly attribute boolean          metaKey;
     [InitializedByEventConstructor] readonly attribute unsigned short   button;
     [InitializedByEventConstructor] readonly attribute EventTarget      relatedTarget;
-    [Conditional=POINTER_LOCK]      readonly attribute long             webkitMovementX;
-    [Conditional=POINTER_LOCK]      readonly attribute long             webkitMovementY;
+                                    readonly attribute long             webkitMovementX;
+                                    readonly attribute long             webkitMovementY;
     
-    [ObjCLegacyUnnamedParameters] void initMouseEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                                       in [Optional=DefaultIsUndefined] boolean canBubble, 
-                                       in [Optional=DefaultIsUndefined] boolean cancelable, 
-                                       in [Optional=DefaultIsUndefined] DOMWindow view, 
-                                       in [Optional=DefaultIsUndefined] long detail, 
-                                       in [Optional=DefaultIsUndefined] long screenX, 
-                                       in [Optional=DefaultIsUndefined] long screenY, 
-                                       in [Optional=DefaultIsUndefined] long clientX, 
-                                       in [Optional=DefaultIsUndefined] long clientY, 
-                                       in [Optional=DefaultIsUndefined] boolean ctrlKey, 
-                                       in [Optional=DefaultIsUndefined] boolean altKey, 
-                                       in [Optional=DefaultIsUndefined] boolean shiftKey, 
-                                       in [Optional=DefaultIsUndefined] boolean metaKey, 
-                                       in [Optional=DefaultIsUndefined] unsigned short button, 
-                                       in [Optional=DefaultIsUndefined] EventTarget relatedTarget);
+     void initMouseEvent([Optional=DefaultIsUndefined] DOMString type, 
+                                       [Optional=DefaultIsUndefined] boolean canBubble, 
+                                       [Optional=DefaultIsUndefined] boolean cancelable, 
+                                       [Optional=DefaultIsUndefined] DOMWindow view, 
+                                       [Optional=DefaultIsUndefined] long detail, 
+                                       [Optional=DefaultIsUndefined] long screenX, 
+                                       [Optional=DefaultIsUndefined] long screenY, 
+                                       [Optional=DefaultIsUndefined] long clientX, 
+                                       [Optional=DefaultIsUndefined] long clientY, 
+                                       [Optional=DefaultIsUndefined] boolean ctrlKey, 
+                                       [Optional=DefaultIsUndefined] boolean altKey, 
+                                       [Optional=DefaultIsUndefined] boolean shiftKey, 
+                                       [Optional=DefaultIsUndefined] boolean metaKey, 
+                                       [Optional=DefaultIsUndefined] unsigned short button, 
+                                       [Optional=DefaultIsUndefined] EventTarget relatedTarget);
 
     // extensions
     readonly attribute long             offsetX;
@@ -59,8 +58,6 @@
     readonly attribute Node             fromElement;
     readonly attribute Node             toElement;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     readonly attribute Clipboard        dataTransfer;
-#endif
 };
 
diff --git a/dom/MutationEvent.idl b/dom/MutationEvent.idl
index 0550cba..ad3afae 100644
--- a/dom/MutationEvent.idl
+++ b/dom/MutationEvent.idl
@@ -31,14 +31,14 @@
     readonly attribute DOMString      attrName;
     readonly attribute unsigned short attrChange;
 
-    [ObjCLegacyUnnamedParameters] void initMutationEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                                          in [Optional=DefaultIsUndefined] boolean canBubble, 
-                                          in [Optional=DefaultIsUndefined] boolean cancelable, 
-                                          in [Optional=DefaultIsUndefined] Node relatedNode, 
-                                          in [Optional=DefaultIsUndefined] DOMString prevValue, 
-                                          in [Optional=DefaultIsUndefined] DOMString newValue, 
-                                          in [Optional=DefaultIsUndefined] DOMString attrName, 
-                                          in [Optional=DefaultIsUndefined] unsigned short attrChange);
+     void initMutationEvent([Optional=DefaultIsUndefined] DOMString type, 
+                                          [Optional=DefaultIsUndefined] boolean canBubble, 
+                                          [Optional=DefaultIsUndefined] boolean cancelable, 
+                                          [Optional=DefaultIsUndefined] Node relatedNode, 
+                                          [Optional=DefaultIsUndefined] DOMString prevValue, 
+                                          [Optional=DefaultIsUndefined] DOMString newValue, 
+                                          [Optional=DefaultIsUndefined] DOMString attrName, 
+                                          [Optional=DefaultIsUndefined] unsigned short attrChange);
 
 };
 
diff --git a/dom/MutationObserver.idl b/dom/MutationObserver.idl
index 54ffd61..29aa06e 100644
--- a/dom/MutationObserver.idl
+++ b/dom/MutationObserver.idl
@@ -30,11 +30,9 @@
 
 [
     CustomConstructor,
-    ConstructorParameters=1,
     ImplementationLacksVTable
 ] interface MutationObserver {
-    void observe(in Node target, in Dictionary options)
-        raises(DOMException);
+    [RaisesException] void observe(Node target, Dictionary options);
     sequence<MutationRecord> takeRecords();
     void disconnect();
 };
diff --git a/dom/MutationRecord.idl b/dom/MutationRecord.idl
index bb9ea05..2002d1d 100644
--- a/dom/MutationRecord.idl
+++ b/dom/MutationRecord.idl
@@ -29,7 +29,7 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface MutationRecord {
     readonly attribute DOMString type;
     readonly attribute Node target;
diff --git a/dom/WebKitNamedFlow.idl b/dom/NamedFlow.idl
similarity index 76%
rename from dom/WebKitNamedFlow.idl
rename to dom/NamedFlow.idl
index 23d50d8..6471ed2 100644
--- a/dom/WebKitNamedFlow.idl
+++ b/dom/NamedFlow.idl
@@ -29,22 +29,22 @@
 
 [
     EventTarget,
+    InterfaceName=WebKitNamedFlow,
     GenerateIsReachable=ImplOwnerNodeRoot
-] interface WebKitNamedFlow {
+] interface NamedFlow {
     readonly attribute DOMString name;
     readonly attribute boolean overset;
     readonly attribute long firstEmptyRegionIndex;
-    NodeList getRegionsByContent(in Node contentNode);
+    NodeList getRegionsByContent(Node contentNode);
     NodeList getRegions();
     NodeList getContent();
-    
+
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
diff --git a/dom/NamedNodeMap.idl b/dom/NamedNodeMap.idl
index 8e04793..b1da75d 100644
--- a/dom/NamedNodeMap.idl
+++ b/dom/NamedNodeMap.idl
@@ -21,37 +21,32 @@
 [
     GenerateIsReachable=ImplElementRoot,
     IndexedGetter,
-    NamedGetter,
-    V8CustomIndexedGetter,
+    CustomNamedGetter,
+    CustomIndexedGetter,
     ImplementationLacksVTable
 ] interface NamedNodeMap {
 
-    Node getNamedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    Node getNamedItem([Optional=DefaultIsUndefined] DOMString name);
 
-    Node setNamedItem(in [Optional=DefaultIsUndefined] Node node)
-        raises(DOMException);
+    [RaisesException] Node setNamedItem([Optional=DefaultIsUndefined] Node node);
 
-    Node removeNamedItem(in [Optional=DefaultIsUndefined] DOMString name)
-        raises(DOMException);
+    [RaisesException] Node removeNamedItem([Optional=DefaultIsUndefined] DOMString name);
 
-    Node item(in [Optional=DefaultIsUndefined] unsigned long index);
+    Node item([Optional=DefaultIsUndefined] unsigned long index);
     
     readonly attribute unsigned long length;
 
 
     // Introduced in DOM Level 2:
 
-    [ObjCLegacyUnnamedParameters] Node getNamedItemNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
-                                       in [Optional=DefaultIsUndefined] DOMString localName)
-        // FIXME: the implementation does take an exceptioncode parameter.
-        /*raises(DOMException)*/;
+    // FIXME: the implementation does take an exceptioncode parameter.
+    /*[RaisesException]*/ Node getNamedItemNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
+                                              [Optional=DefaultIsUndefined] DOMString localName);
 
-    Node setNamedItemNS(in [Optional=DefaultIsUndefined] Node node)
-        raises(DOMException);
+    [RaisesException] Node setNamedItemNS([Optional=DefaultIsUndefined] Node node);
 
-    [ObjCLegacyUnnamedParameters] Node removeNamedItemNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
-                                          in [Optional=DefaultIsUndefined] DOMString localName)
-        raises(DOMException);
+     [RaisesException] Node removeNamedItemNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI, 
+                                          [Optional=DefaultIsUndefined] DOMString localName);
 
 };
 
diff --git a/dom/Node.idl b/dom/Node.idl
index 2a8416c..6838afc 100644
--- a/dom/Node.idl
+++ b/dom/Node.idl
@@ -18,16 +18,12 @@
  * Boston, MA 02110-1301, USA.
  */
 
+// FIXME: Node should inherit EventTarget.
 [
     CustomToJSObject,
     EventTarget,
-    ObjCPolymorphic,
-    V8DependentLifetime
-] interface Node
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    : Object, EventTarget
-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
- {
+    DependentLifetime
+] interface Node {
     // NodeType
     const unsigned short      ELEMENT_NODE                   = 1;
     const unsigned short      ATTRIBUTE_NODE                 = 2;
@@ -42,66 +38,49 @@
     const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;
     const unsigned short      NOTATION_NODE                  = 12;
 
-    readonly attribute [TreatReturnedNullStringAs=Null, V8PerWorldBindings] DOMString        nodeName;
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString        nodeName;
 
              // FIXME: the spec says this can also raise on retrieval.
-             attribute [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, V8PerWorldBindings] DOMString        nodeValue
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString        nodeValue;
 
-    readonly attribute [V8PerWorldBindings] unsigned short   nodeType;
-    readonly attribute [V8PerWorldBindings] Node             parentNode;
-    readonly attribute [V8PerWorldBindings] NodeList         childNodes;
-    readonly attribute [V8PerWorldBindings] Node             firstChild;
-    readonly attribute [V8PerWorldBindings] Node             lastChild;
-    readonly attribute [V8PerWorldBindings] Node             previousSibling;
-    readonly attribute [V8PerWorldBindings] Node             nextSibling;
-    readonly attribute [V8PerWorldBindings] Document         ownerDocument;
+    [PerWorldBindings] readonly attribute unsigned short   nodeType;
+    [PerWorldBindings] readonly attribute Node             parentNode;
+    [PerWorldBindings] readonly attribute NodeList         childNodes;
+    [PerWorldBindings] readonly attribute Node             firstChild;
+    [PerWorldBindings] readonly attribute Node             lastChild;
+    [PerWorldBindings] readonly attribute Node             previousSibling;
+    [PerWorldBindings] readonly attribute Node             nextSibling;
+    [PerWorldBindings] readonly attribute Document         ownerDocument;
 
-    [ObjCLegacyUnnamedParameters, Custom, V8PerWorldBindings] Node insertBefore(in [CustomReturn] Node newChild,
-                                                            in Node refChild)
-        raises(DOMException);
-    [ObjCLegacyUnnamedParameters, Custom] Node replaceChild(in Node newChild,
-                                                            in [CustomReturn] Node oldChild)
-        raises(DOMException);
-    [Custom, V8PerWorldBindings] Node removeChild(in [CustomReturn] Node oldChild)
-        raises(DOMException);
-    [Custom, V8PerWorldBindings] Node appendChild(in [CustomReturn] Node newChild)
-        raises(DOMException);
+    [Custom, PerWorldBindings, RaisesException] Node insertBefore(Node newChild, Node refChild);
+    [Custom, RaisesException] Node replaceChild(Node newChild, Node oldChild);
+    [Custom, PerWorldBindings, RaisesException] Node removeChild(Node oldChild);
+    [Custom, PerWorldBindings, RaisesException] Node appendChild(Node newChild);
 
     boolean            hasChildNodes();
-    [V8DeliverCustomElementCallbacks, V8PerWorldBindings]
-    Node               cloneNode(in [Optional=DefaultIsUndefined] boolean deep);
+    [DeliverCustomElementCallbacks, PerWorldBindings]
+    Node               cloneNode([Optional=DefaultIsUndefined] boolean deep);
     void               normalize();
 
     // Introduced in DOM Level 2:
+     boolean isSupported([Optional=DefaultIsUndefined] DOMString feature, 
+                                       [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString version);
 
-    [ObjCLegacyUnnamedParameters] boolean isSupported(in [Optional=DefaultIsUndefined] DOMString feature, 
-                                       in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString version);
-
-    readonly attribute [TreatReturnedNullStringAs=Null, V8PerWorldBindings] DOMString        namespaceURI;
-             attribute [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, V8PerWorldBindings] DOMString        prefix
-                 setter raises(DOMException);
-    readonly attribute [TreatReturnedNullStringAs=Null, V8PerWorldBindings] DOMString        localName;
-
-#if defined(LANGUAGE_OBJECTIVE_C)
-    readonly attribute [V8PerWorldBindings] NamedNodeMap     attributes;
-    boolean            hasAttributes();
-#endif
-
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString        namespaceURI;
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString        prefix;
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString        localName;
 
     // Introduced in DOM Level 3:
-
-    readonly attribute [TreatReturnedNullStringAs=Null, V8PerWorldBindings] DOMString       baseURI;
+    [TreatReturnedNullStringAs=Null, PerWorldBindings] readonly attribute DOMString       baseURI;
 
              // FIXME: the spec says this can also raise on retrieval.
-             attribute [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, V8PerWorldBindings] DOMString       textContent
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, PerWorldBindings, SetterRaisesException] attribute DOMString       textContent;
 
-    boolean            isSameNode(in [Optional=DefaultIsUndefined] Node other);
-    boolean            isEqualNode(in [Optional=DefaultIsUndefined] Node other);
-    [TreatReturnedNullStringAs=Null] DOMString          lookupPrefix(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI);
-    boolean            isDefaultNamespace(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI);
-    [TreatReturnedNullStringAs=Null] DOMString          lookupNamespaceURI(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString prefix);
+    boolean            isSameNode([Optional=DefaultIsUndefined] Node other);
+    boolean            isEqualNode([Optional=DefaultIsUndefined] Node other);
+    [TreatReturnedNullStringAs=Null] DOMString          lookupPrefix([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI);
+    boolean            isDefaultNamespace([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI);
+    [TreatReturnedNullStringAs=Null] DOMString          lookupNamespaceURI([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString prefix);
 
     // DocumentPosition
     const unsigned short      DOCUMENT_POSITION_DISCONNECTED = 0x01;
@@ -111,44 +90,19 @@
     const unsigned short      DOCUMENT_POSITION_CONTAINED_BY = 0x10;
     const unsigned short      DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
 
-    unsigned short     compareDocumentPosition(in [Optional=DefaultIsUndefined] Node other);
+    unsigned short     compareDocumentPosition([Optional=DefaultIsUndefined] Node other);
 
     // Introduced in DOM4
-    boolean contains(in [Optional=DefaultIsUndefined] Node other);
+    boolean contains([Optional=DefaultIsUndefined] Node other);
 
     // IE extensions
-    readonly attribute [V8PerWorldBindings] Element          parentElement;
+    [PerWorldBindings] readonly attribute Element          parentElement;
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extensions
-    readonly attribute [V8PerWorldBindings] boolean          isContentEditable;
-
-    void inspect();
-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
-
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
-#endif
-#endif
-
-#if defined(LANGUAGE_CPP) && LANGUAGE_CPP
-    [Custom] void addEventListener(in DOMString type, 
-                                      in EventListener listener, 
-                                      in boolean useCapture);
-    [Custom] void removeEventListener(in DOMString type, 
-                                         in EventListener listener, 
-                                         in boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
-#endif
-
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
-
diff --git a/dom/NodeFilter.idl b/dom/NodeFilter.idl
index 5a3dccf..3d22c8d 100644
--- a/dom/NodeFilter.idl
+++ b/dom/NodeFilter.idl
@@ -18,10 +18,7 @@
  * Boston, MA 02110-1301, USA.
  */
 
-// Introduced in DOM Level 2:
 [
-    ObjCProtocol,
-    CPPPureInterface,
     ImplementationLacksVTable
 ] interface NodeFilter {
     // Constants returned by acceptNode
@@ -44,7 +41,7 @@
     const unsigned long       SHOW_DOCUMENT_FRAGMENT         = 0x00000400;
     const unsigned long       SHOW_NOTATION                  = 0x00000800;
 
-    [CallWith=ScriptState] short acceptNode(in [Optional=DefaultIsUndefined] Node n);
+    [CallWith=ScriptState] short acceptNode([Optional=DefaultIsUndefined] Node n);
 
 };
 
diff --git a/dom/NodeIterator.idl b/dom/NodeIterator.idl
index 4e316d5..3101322 100644
--- a/dom/NodeIterator.idl
+++ b/dom/NodeIterator.idl
@@ -29,10 +29,8 @@
     readonly attribute Node referenceNode;
     readonly attribute boolean pointerBeforeReferenceNode;
 
-    [CallWith=ScriptState] Node nextNode() 
-        raises (DOMException);
-    [CallWith=ScriptState] Node previousNode()
-        raises (DOMException);
+    [CallWith=ScriptState, RaisesException] Node nextNode();
+    [CallWith=ScriptState, RaisesException] Node previousNode();
     void detach();
 };
 
diff --git a/dom/NodeList.idl b/dom/NodeList.idl
index 9a71212..6e6537c 100644
--- a/dom/NodeList.idl
+++ b/dom/NodeList.idl
@@ -21,12 +21,12 @@
 [
     CustomIsReachable,
     IndexedGetter,
-    NamedGetter,
-    V8DependentLifetime,
-    V8SkipVTableValidation
+    CustomNamedGetter,
+    DependentLifetime,
+    SkipVTableValidation
 ] interface NodeList {
 
-    Node item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
+    Node item([IsIndex,Optional=DefaultIsUndefined] unsigned long index);
 
     readonly attribute unsigned long length;
 
diff --git a/dom/OverflowEvent.idl b/dom/OverflowEvent.idl
index cc52f3d..04a86c8 100644
--- a/dom/OverflowEvent.idl
+++ b/dom/OverflowEvent.idl
@@ -33,11 +33,5 @@
     [InitializedByEventConstructor] readonly attribute unsigned short orient;
     [InitializedByEventConstructor] readonly attribute boolean horizontalOverflow;
     [InitializedByEventConstructor] readonly attribute boolean verticalOverflow;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    void initOverflowEvent(in [Optional=DefaultIsUndefined] unsigned short orient,
-                           in [Optional=DefaultIsUndefined] boolean horizontalOverflow,
-                           in [Optional=DefaultIsUndefined] boolean verticalOverflow);
-#endif
 };
 
diff --git a/dom/PopStateEvent.idl b/dom/PopStateEvent.idl
index 04d9409..c4153f6 100644
--- a/dom/PopStateEvent.idl
+++ b/dom/PopStateEvent.idl
@@ -24,11 +24,8 @@
  *
  */
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
 [
     ConstructorTemplate=Event
 ] interface PopStateEvent : Event {
     [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any state;
 };
-#endif
-
diff --git a/dom/ProcessingInstruction.idl b/dom/ProcessingInstruction.idl
index 55599de..03530e2 100644
--- a/dom/ProcessingInstruction.idl
+++ b/dom/ProcessingInstruction.idl
@@ -23,8 +23,7 @@
     // DOM Level 1
 
     [TreatReturnedNullStringAs=Null] readonly attribute DOMString target;
-             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString] attribute DOMString data
-                 setter raises(DOMException);
+             [TreatReturnedNullStringAs=Null, TreatNullAs=NullString, SetterRaisesException] attribute DOMString data;
 
     // interface LinkStyle from DOM Level 2 Style Sheets
     readonly attribute StyleSheet sheet;
diff --git a/dom/PropertyNodeList.idl b/dom/PropertyNodeList.idl
index 297ff87..85ba9d6 100644
--- a/dom/PropertyNodeList.idl
+++ b/dom/PropertyNodeList.idl
@@ -34,7 +34,7 @@
 ] interface PropertyNodeList : NodeList {
 
     sequence<MicroDataItemValue> getValues();
-    Node item(in unsigned long index);
+    Node item(unsigned long index);
 
     readonly attribute unsigned long length;
 };
diff --git a/dom/Range.idl b/dom/Range.idl
index 940fc8c..9f38059 100644
--- a/dom/Range.idl
+++ b/dom/Range.idl
@@ -23,39 +23,24 @@
     ImplementationLacksVTable
 ] interface Range {
 
-    readonly attribute Node startContainer
-        getter raises(DOMException);
-    readonly attribute long startOffset
-        getter raises(DOMException);
-    readonly attribute Node endContainer
-        getter raises(DOMException);
-    readonly attribute long endOffset
-        getter raises(DOMException);
-    readonly attribute boolean collapsed
-        getter raises(DOMException);
-    readonly attribute Node commonAncestorContainer
-        getter raises(DOMException);
+    [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;
 
-    [ObjCLegacyUnnamedParameters] void setStart(in [Optional=DefaultIsUndefined] Node refNode, 
-                                 in [Optional=DefaultIsUndefined] long offset)
-        raises(RangeException, DOMException);
-    [ObjCLegacyUnnamedParameters] void setEnd(in [Optional=DefaultIsUndefined] Node refNode, 
-                               in [Optional=DefaultIsUndefined] long offset)
-        raises(RangeException, DOMException);
-    void setStartBefore(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
-    void setStartAfter(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
-    void setEndBefore(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
-    void setEndAfter(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
-    void collapse(in [Optional=DefaultIsUndefined] boolean toStart)
-        raises(DOMException);
-    void selectNode(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
-    void selectNodeContents(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
+     [RaisesException] void setStart([Optional=DefaultIsUndefined] Node refNode, 
+                                 [Optional=DefaultIsUndefined] long offset);
+     [RaisesException] void setEnd([Optional=DefaultIsUndefined] Node refNode, 
+                               [Optional=DefaultIsUndefined] long offset);
+    [RaisesException] void setStartBefore([Optional=DefaultIsUndefined] Node refNode);
+    [RaisesException] void setStartAfter([Optional=DefaultIsUndefined] Node refNode);
+    [RaisesException] void setEndBefore([Optional=DefaultIsUndefined] Node refNode);
+    [RaisesException] void setEndAfter([Optional=DefaultIsUndefined] Node refNode);
+    [RaisesException] void collapse([Optional=DefaultIsUndefined] boolean toStart);
+    [RaisesException] void selectNode([Optional=DefaultIsUndefined] Node refNode);
+    [RaisesException] void selectNodeContents([Optional=DefaultIsUndefined] Node refNode);
 
     // CompareHow
     const unsigned short START_TO_START = 0;
@@ -63,47 +48,33 @@
     const unsigned short END_TO_END     = 2;
     const unsigned short END_TO_START   = 3;
 
-    [ObjCLegacyUnnamedParameters] short compareBoundaryPoints(in [Optional=DefaultIsUndefined] CompareHow how,
-                                               in [Optional=DefaultIsUndefined] Range sourceRange)
-        raises(DOMException);
+     [RaisesException] short compareBoundaryPoints([Optional=DefaultIsUndefined] CompareHow how,
+                                               [Optional=DefaultIsUndefined] Range sourceRange);
 
-    void deleteContents()
-        raises(DOMException);
-    DocumentFragment extractContents()
-        raises(DOMException);
-    DocumentFragment cloneContents()
-        raises(DOMException);
-    void insertNode(in [Optional=DefaultIsUndefined] Node newNode)
-        raises(DOMException, RangeException);
-    void surroundContents(in [Optional=DefaultIsUndefined] Node newParent)
-        raises(DOMException, RangeException);
-    Range cloneRange()
-        raises(DOMException);
-    DOMString toString()
-        raises(DOMException);
+    [RaisesException] void deleteContents();
+    [RaisesException] DocumentFragment extractContents();
+    [RaisesException] DocumentFragment cloneContents();
+    [RaisesException] void insertNode([Optional=DefaultIsUndefined] Node newNode);
+    [RaisesException] void surroundContents([Optional=DefaultIsUndefined] Node newParent);
+    [RaisesException] Range cloneRange();
+    [RaisesException] DOMString toString();
 
-    void detach()
-        raises(DOMException);
+    [RaisesException] void detach();
 
-#if defined(LANGUAGE_JAVASCRIPT) || LANGUAGE_JAVASCRIPT
     // CSSOM View Module API extensions
 
     ClientRectList getClientRects();
     ClientRect getBoundingClientRect();
-#endif
 
     // extensions
 
-    DocumentFragment createContextualFragment(in [Optional=DefaultIsUndefined] DOMString html)
-        raises(DOMException);
+    [RaisesException] DocumentFragment createContextualFragment([Optional=DefaultIsUndefined] DOMString html);
 
     // WebKit extensions
 
-    boolean intersectsNode(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
+    [RaisesException] boolean intersectsNode([Optional=DefaultIsUndefined] Node refNode);
 
-    short compareNode(in [Optional=DefaultIsUndefined] Node refNode)
-        raises(RangeException, DOMException);
+    [RaisesException] short compareNode([Optional=DefaultIsUndefined] Node refNode);
 
     // CompareResults
     const unsigned short NODE_BEFORE           = 0;
@@ -111,19 +82,12 @@
     const unsigned short NODE_BEFORE_AND_AFTER = 2;
     const unsigned short NODE_INSIDE           = 3;
 
-    short comparePoint(in [Optional=DefaultIsUndefined] Node refNode, 
-                       in [Optional=DefaultIsUndefined] long offset)
-        raises(RangeException, DOMException);
+    [RaisesException] short comparePoint([Optional=DefaultIsUndefined] Node refNode, 
+                       [Optional=DefaultIsUndefined] long offset);
 
-    boolean isPointInRange(in [Optional=DefaultIsUndefined] Node refNode, 
-                           in [Optional=DefaultIsUndefined] long offset)
-        raises(RangeException, DOMException);
+    [RaisesException] boolean isPointInRange([Optional=DefaultIsUndefined] Node refNode, 
+                           [Optional=DefaultIsUndefined] long offset);
 
-    void expand(in [Optional=DefaultIsUndefined] DOMString unit)
-        raises(RangeException, DOMException);
-
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    readonly attribute DOMString text;
-#endif
+    [RaisesException] void expand([Optional=DefaultIsUndefined] DOMString unit);
 };
 
diff --git a/dom/RangeException.idl b/dom/RangeException.idl
index 7cc310e..df58c81 100644
--- a/dom/RangeException.idl
+++ b/dom/RangeException.idl
@@ -26,9 +26,7 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [NotEnumerable] DOMString toString();
-#endif
 
     // DOM Level 2
 
diff --git a/dom/RequestAnimationFrameCallback.idl b/dom/RequestAnimationFrameCallback.idl
index b4347cf..790bb6e 100644
--- a/dom/RequestAnimationFrameCallback.idl
+++ b/dom/RequestAnimationFrameCallback.idl
@@ -30,14 +30,8 @@
 
 [
     Callback,
-    Conditional=REQUEST_ANIMATION_FRAME,
 ] interface RequestAnimationFrameCallback{
     // highResTime is passed as high resolution timestamp, see
     // http://www.w3.org/TR/hr-time/ for details.
-#if defined(V8_BINDING) && V8_BINDING
-    boolean handleEvent(in double highResTime);
-#else
-    [Custom] boolean handleEvent(in double highResTime);
-#endif
-
+    boolean handleEvent(double highResTime);
 };
diff --git a/dom/ShadowRoot.idl b/dom/ShadowRoot.idl
index 4304e9b..220d4a1 100644
--- a/dom/ShadowRoot.idl
+++ b/dom/ShadowRoot.idl
@@ -24,26 +24,21 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=SHADOW_DOM
-] interface ShadowRoot : DocumentFragment {
+interface ShadowRoot : DocumentFragment {
     readonly attribute Element activeElement;
     attribute boolean applyAuthorStyles;
     attribute boolean resetStyleInheritance;
 
-    [TreatNullAs=NullString, V8DeliverCustomElementCallbacks]
-    attribute DOMString innerHTML setter raises(DOMException);
+    [TreatNullAs=NullString, DeliverCustomElementCallbacks, SetterRaisesException] attribute DOMString innerHTML;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    Node cloneNode(in [Optional=DefaultIsUndefined] boolean deep) raises(DOMException);
-#endif
+    [RaisesException] Node cloneNode([Optional=DefaultIsUndefined] boolean deep);
     DOMSelection getSelection();
-    Element getElementById(in [Optional=DefaultIsUndefined] DOMString elementId);
-    NodeList getElementsByClassName(in [Optional=DefaultIsUndefined] DOMString className);
-    NodeList getElementsByTagName(in [Optional=DefaultIsUndefined] DOMString tagName);
-    NodeList getElementsByTagNameNS(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
-                                    in [Optional=DefaultIsUndefined] DOMString localName);
+    Element getElementById([Optional=DefaultIsUndefined] DOMString elementId);
+    NodeList getElementsByClassName([Optional=DefaultIsUndefined] DOMString className);
+    NodeList getElementsByTagName([Optional=DefaultIsUndefined] DOMString tagName);
+    NodeList getElementsByTagNameNS([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString namespaceURI,
+                                    [Optional=DefaultIsUndefined] DOMString localName);
 
-    Element elementFromPoint(in [Optional=DefaultIsUndefined] long x, 
-                             in [Optional=DefaultIsUndefined] long y);
+    Element elementFromPoint([Optional=DefaultIsUndefined] long x, 
+                             [Optional=DefaultIsUndefined] long y);
 };
diff --git a/dom/StringCallback.idl b/dom/StringCallback.idl
index a26831b..9ed416f 100644
--- a/dom/StringCallback.idl
+++ b/dom/StringCallback.idl
@@ -31,5 +31,5 @@
 [
     Callback
 ] interface StringCallback {
-    boolean handleEvent(in DOMString data);
+    boolean handleEvent(DOMString data);
 };
diff --git a/dom/Text.idl b/dom/Text.idl
index b8e602b..630c85b 100644
--- a/dom/Text.idl
+++ b/dom/Text.idl
@@ -17,22 +17,18 @@
  * Boston, MA 02110-1301, USA.
  */
 [ 
-    V8SkipVTableValidation,
+    SkipVTableValidation,
 ] interface Text : CharacterData {
 
     // DOM Level 1
 
-    Text splitText(in [IsIndex,Optional=DefaultIsUndefined] unsigned long offset)
-        raises (DOMException);
+    [RaisesException] Text splitText([IsIndex,Optional=DefaultIsUndefined] unsigned long offset);
 
     // Introduced in DOM Level 3:
     readonly attribute DOMString       wholeText;
-    Text               replaceWholeText(in [Optional=DefaultIsUndefined] DOMString content)
-                                        raises(DOMException);
+    [RaisesException] Text               replaceWholeText([Optional=DefaultIsUndefined] DOMString content);
     // ShadowAware API
-#if defined(ENABLE_SHADOW_DOM) && ENABLE_SHADOW_DOM && defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [V8EnabledAtRuntime=shadowDOM, ImplementedAs=insertionParentForBinding, V8PerWorldBindings] readonly attribute Node webkitInsertionParent;
-#endif
+    [EnabledAtRuntime=shadowDOM, ImplementedAs=insertionParentForBinding, PerWorldBindings] readonly attribute Node webkitInsertionParent;
 
 };
 
diff --git a/dom/TextEvent.idl b/dom/TextEvent.idl
index 709500a..fe72de0 100644
--- a/dom/TextEvent.idl
+++ b/dom/TextEvent.idl
@@ -28,11 +28,11 @@
 
     readonly attribute DOMString data;
 
-    void initTextEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                       in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                       in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                       in [Optional=DefaultIsUndefined] DOMWindow viewArg, 
-                       in [Optional=DefaultIsUndefined] DOMString dataArg);
+    void initTextEvent([Optional=DefaultIsUndefined] DOMString typeArg, 
+                       [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                       [Optional=DefaultIsUndefined] boolean cancelableArg, 
+                       [Optional=DefaultIsUndefined] DOMWindow viewArg, 
+                       [Optional=DefaultIsUndefined] DOMString dataArg);
 
 };
 
diff --git a/dom/TouchEvent.idl b/dom/TouchEvent.idl
index 4712f9e..a33c1a0 100644
--- a/dom/TouchEvent.idl
+++ b/dom/TouchEvent.idl
@@ -34,17 +34,17 @@
     readonly attribute boolean altKey;
     readonly attribute boolean metaKey;
 
-    void initTouchEvent(in [Optional=DefaultIsUndefined] TouchList touches,
-                        in [Optional=DefaultIsUndefined] TouchList targetTouches,
-                        in [Optional=DefaultIsUndefined] TouchList changedTouches,
-                        in [Optional=DefaultIsUndefined] DOMString type,
-                        in [Optional=DefaultIsUndefined] DOMWindow view,
-                        in [Optional=DefaultIsUndefined] long screenX, 
-                        in [Optional=DefaultIsUndefined] long screenY, 
-                        in [Optional=DefaultIsUndefined] long clientX, 
-                        in [Optional=DefaultIsUndefined] long clientY,
-                        in [Optional=DefaultIsUndefined] boolean ctrlKey,
-                        in [Optional=DefaultIsUndefined] boolean altKey,
-                        in [Optional=DefaultIsUndefined] boolean shiftKey,
-                        in [Optional=DefaultIsUndefined] boolean metaKey);
+    void initTouchEvent([Optional=DefaultIsUndefined] TouchList touches,
+                        [Optional=DefaultIsUndefined] TouchList targetTouches,
+                        [Optional=DefaultIsUndefined] TouchList changedTouches,
+                        [Optional=DefaultIsUndefined] DOMString type,
+                        [Optional=DefaultIsUndefined] DOMWindow view,
+                        [Optional=DefaultIsUndefined] long screenX, 
+                        [Optional=DefaultIsUndefined] long screenY, 
+                        [Optional=DefaultIsUndefined] long clientX, 
+                        [Optional=DefaultIsUndefined] long clientY,
+                        [Optional=DefaultIsUndefined] boolean ctrlKey,
+                        [Optional=DefaultIsUndefined] boolean altKey,
+                        [Optional=DefaultIsUndefined] boolean shiftKey,
+                        [Optional=DefaultIsUndefined] boolean metaKey);
 };
diff --git a/dom/TouchList.idl b/dom/TouchList.idl
index 0ec3b0d..811e0a7 100644
--- a/dom/TouchList.idl
+++ b/dom/TouchList.idl
@@ -30,5 +30,5 @@
 ] interface TouchList {
     readonly attribute unsigned long length;
 
-    Touch item(in unsigned long index);
+    Touch item(unsigned long index);
 };
diff --git a/dom/TreeWalker.idl b/dom/TreeWalker.idl
index 7898df4..7a81fec 100644
--- a/dom/TreeWalker.idl
+++ b/dom/TreeWalker.idl
@@ -26,8 +26,7 @@
     readonly attribute unsigned long whatToShow;
     readonly attribute NodeFilter filter;
     readonly attribute boolean expandEntityReferences;        
-             attribute Node currentNode
-                 setter raises(DOMException);
+             [SetterRaisesException] attribute Node currentNode;
 
     [CallWith=ScriptState] Node parentNode();
     [CallWith=ScriptState] Node firstChild();
diff --git a/dom/UIEvent.idl b/dom/UIEvent.idl
index 1b9c6ed..c7e1fab 100644
--- a/dom/UIEvent.idl
+++ b/dom/UIEvent.idl
@@ -18,17 +18,16 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event
 ] interface UIEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMWindow view;
     [InitializedByEventConstructor] readonly attribute long detail;
     
-    [ObjCLegacyUnnamedParameters] void initUIEvent(in [Optional=DefaultIsUndefined] DOMString type, 
-                                    in [Optional=DefaultIsUndefined] boolean canBubble, 
-                                    in [Optional=DefaultIsUndefined] boolean cancelable, 
-                                    in [Optional=DefaultIsUndefined] DOMWindow view, 
-                                    in [Optional=DefaultIsUndefined] long detail);
+     void initUIEvent([Optional=DefaultIsUndefined] DOMString type, 
+                                    [Optional=DefaultIsUndefined] boolean canBubble, 
+                                    [Optional=DefaultIsUndefined] boolean cancelable, 
+                                    [Optional=DefaultIsUndefined] DOMWindow view, 
+                                    [Optional=DefaultIsUndefined] long detail);
 
     // extensions
     readonly attribute long                 keyCode;
diff --git a/dom/WebKitTransitionEvent.idl b/dom/WebKitTransitionEvent.idl
deleted file mode 100644
index 4e21030..0000000
--- a/dom/WebKitTransitionEvent.idl
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-[
-    ConstructorTemplate=Event
-] interface WebKitTransitionEvent : Event {
-    [InitializedByEventConstructor] readonly attribute DOMString propertyName;
-    [InitializedByEventConstructor] readonly attribute double elapsedTime;
-    [InitializedByEventConstructor] readonly attribute DOMString pseudoElement;
-};
-
diff --git a/dom/WheelEvent.idl b/dom/WheelEvent.idl
index 7ba9cf4..44a6845 100644
--- a/dom/WheelEvent.idl
+++ b/dom/WheelEvent.idl
@@ -19,7 +19,6 @@
  */
 
 [
-    ConstructorConditional=DOM4_EVENTS_CONSTRUCTOR,
     ConstructorTemplate=Event
 ] interface WheelEvent : MouseEvent {
     const unsigned long              DOM_DELTA_PIXEL = 0x00;
@@ -35,35 +34,15 @@
     // WebKit Extension
     readonly attribute boolean webkitDirectionInvertedFromDevice;
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    readonly attribute boolean isHorizontal;
-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
-
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    void initWheelEvent(in [Optional=DefaultIsUndefined] long wheelDeltaX,
-                        in [Optional=DefaultIsUndefined] long wheelDeltaY, 
-                        in [Optional=DefaultIsUndefined] DOMWindow view, 
-                        in [Optional=DefaultIsUndefined] long screenX,
-                        in [Optional=DefaultIsUndefined] long screenY,
-                        in [Optional=DefaultIsUndefined] long clientX,
-                        in [Optional=DefaultIsUndefined] long clientY,
-                        in [Optional=DefaultIsUndefined] boolean ctrlKey,
-                        in [Optional=DefaultIsUndefined] boolean altKey,
-                        in [Optional=DefaultIsUndefined] boolean shiftKey,
-                        in [Optional=DefaultIsUndefined] boolean metaKey);
-#endif /* !defined(LANGUAGE_JAVASCRIPT) */
-
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    void initWebKitWheelEvent(in [Optional=DefaultIsUndefined] long wheelDeltaX,
-                              in [Optional=DefaultIsUndefined] long wheelDeltaY, 
-                              in [Optional=DefaultIsUndefined] DOMWindow view, 
-                              in [Optional=DefaultIsUndefined] long screenX,
-                              in [Optional=DefaultIsUndefined] long screenY,
-                              in [Optional=DefaultIsUndefined] long clientX,
-                              in [Optional=DefaultIsUndefined] long clientY,
-                              in [Optional=DefaultIsUndefined] boolean ctrlKey,
-                              in [Optional=DefaultIsUndefined] boolean altKey,
-                              in [Optional=DefaultIsUndefined] boolean shiftKey,
-                              in [Optional=DefaultIsUndefined] boolean metaKey);
-#endif /* defined(LANGUAGE_JAVASCRIPT) */
+    void initWebKitWheelEvent([Optional=DefaultIsUndefined] long wheelDeltaX,
+                              [Optional=DefaultIsUndefined] long wheelDeltaY, 
+                              [Optional=DefaultIsUndefined] DOMWindow view, 
+                              [Optional=DefaultIsUndefined] long screenX,
+                              [Optional=DefaultIsUndefined] long screenY,
+                              [Optional=DefaultIsUndefined] long clientX,
+                              [Optional=DefaultIsUndefined] long clientY,
+                              [Optional=DefaultIsUndefined] boolean ctrlKey,
+                              [Optional=DefaultIsUndefined] boolean altKey,
+                              [Optional=DefaultIsUndefined] boolean shiftKey,
+                              [Optional=DefaultIsUndefined] boolean metaKey);
 };
diff --git a/fileapi/Blob.idl b/fileapi/Blob.idl
index ac35f85..4ac641b 100644
--- a/fileapi/Blob.idl
+++ b/fileapi/Blob.idl
@@ -30,16 +30,11 @@
 
 [
     CustomToJSObject,
-    CustomConstructor,
-    ConstructorParameters=2
+    CustomConstructor
 ] interface Blob {
     readonly attribute unsigned long long size;
     readonly attribute DOMString type;
 
-#if !defined(LANGUAGE_OBJECTIVE_C)
-#if defined(ENABLE_BLOB) && ENABLE_BLOB
-    Blob slice(in [Optional] long long start, in [Optional] long long end, in [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString contentType);
-#endif
-#endif
+    Blob slice([Optional] long long start, [Optional] long long end, [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString contentType);
 };
 
diff --git a/fileapi/File.idl b/fileapi/File.idl
index 6bce28f..40e3d0d 100644
--- a/fileapi/File.idl
+++ b/fileapi/File.idl
@@ -25,9 +25,7 @@
 
 interface File : Blob {
     readonly attribute DOMString name;
-#if !defined(LANGUAGE_GOBJECT) || !LANGUAGE_GOBJECT
     readonly attribute Date lastModifiedDate;
-#endif
 #if defined(ENABLE_DIRECTORY_UPLOAD) && ENABLE_DIRECTORY_UPLOAD
     readonly attribute DOMString webkitRelativePath;
 #endif
diff --git a/fileapi/FileError.idl b/fileapi/FileError.idl
index 16a8cc2..7116324 100644
--- a/fileapi/FileError.idl
+++ b/fileapi/FileError.idl
@@ -29,10 +29,8 @@
  */
 
 [
-    Conditional=BLOB|FILE_SYSTEM,
     ImplementationLacksVTable
 ] interface FileError {
-#if !defined(LANGUAGE_OBJECTIVE_C)
     // FIXME: Some of constant names are already defined in DOMException.h for Objective-C binding and we cannot have the same names here (they are translated into a enum in the same namespace).
     const unsigned short NOT_FOUND_ERR = 1;
     const unsigned short SECURITY_ERR = 2;
@@ -46,6 +44,5 @@
     const unsigned short QUOTA_EXCEEDED_ERR = 10;
     const unsigned short TYPE_MISMATCH_ERR = 11;
     const unsigned short PATH_EXISTS_ERR = 12;
-#endif
     readonly attribute unsigned short code;
 };
diff --git a/fileapi/FileException.idl b/fileapi/FileException.idl
index 81c6b7f..b6221df 100644
--- a/fileapi/FileException.idl
+++ b/fileapi/FileException.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=BLOB|FILE_SYSTEM,
     DoNotCheckConstants,
     ImplementationLacksVTable
 ] exception FileException {
@@ -38,10 +37,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // FileExceptionCode
     const unsigned short NOT_FOUND_ERR = 1;
diff --git a/fileapi/FileList.idl b/fileapi/FileList.idl
index 59fa393..9086f1c 100644
--- a/fileapi/FileList.idl
+++ b/fileapi/FileList.idl
@@ -28,6 +28,6 @@
     ImplementationLacksVTable
 ] interface FileList {
     readonly attribute unsigned long length;
-    File item(in unsigned long index);
+    File item(unsigned long index);
 };
 
diff --git a/fileapi/FileReader.idl b/fileapi/FileReader.idl
index 02b7e0d..ad74a14 100644
--- a/fileapi/FileReader.idl
+++ b/fileapi/FileReader.idl
@@ -30,7 +30,6 @@
  */
 
 [
-    Conditional=BLOB,
     ActiveDOMObject,
     Constructor,
     CallWith=ScriptExecutionContext,
@@ -43,14 +42,10 @@
     readonly attribute unsigned short readyState;
 
     // async read methods
-    void readAsArrayBuffer(in Blob blob)
-        raises(DOMException);
-    void readAsBinaryString(in Blob blob)
-        raises(DOMException);
-    void readAsText(in Blob blob, in [Optional] DOMString encoding)
-        raises(DOMException);
-    void readAsDataURL(in Blob blob)
-        raises(DOMException);
+    [RaisesException] void readAsArrayBuffer(Blob blob);
+    [RaisesException] void readAsBinaryString(Blob blob);
+    [RaisesException] void readAsText(Blob blob, [Optional] DOMString encoding);
+    [RaisesException] void readAsDataURL(Blob blob);
 
     void abort();
 
@@ -60,14 +55,13 @@
     readonly attribute FileError error;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 
     attribute EventListener onloadstart;
     attribute EventListener onprogress;
diff --git a/fileapi/FileReaderSync.idl b/fileapi/FileReaderSync.idl
index b0182aa..4fe6270 100644
--- a/fileapi/FileReaderSync.idl
+++ b/fileapi/FileReaderSync.idl
@@ -29,15 +29,10 @@
  */
 
 [
-    Conditional=BLOB,
     Constructor
 ] interface FileReaderSync {
-    [CallWith=ScriptExecutionContext] ArrayBuffer readAsArrayBuffer(in Blob blob)
-        raises(FileException);
-    [CallWith=ScriptExecutionContext] DOMString readAsBinaryString(in Blob blob)
-        raises(FileException);
-    [CallWith=ScriptExecutionContext] DOMString readAsText(in Blob blob, in [Optional] DOMString encoding)
-        raises(FileException);
-    [CallWith=ScriptExecutionContext] DOMString readAsDataURL(in Blob blob)
-        raises(FileException);
+    [CallWith=ScriptExecutionContext, RaisesException] ArrayBuffer readAsArrayBuffer(Blob blob);
+    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsBinaryString(Blob blob);
+    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsText(Blob blob, [Optional] DOMString encoding);
+    [CallWith=ScriptExecutionContext, RaisesException] DOMString readAsDataURL(Blob blob);
 };
diff --git a/html/DOMFormData.idl b/html/DOMFormData.idl
index d1a0148..206a76c 100644
--- a/html/DOMFormData.idl
+++ b/html/DOMFormData.idl
@@ -30,14 +30,13 @@
 
 [
     CustomConstructor,
-    ConstructorParameters=1,
     InterfaceName=FormData,
     ImplementationLacksVTable
 ] interface DOMFormData {
     // void append(DOMString name, DOMString value);
     // void append(DOMString name, Blob value, optional DOMString filename);
-    [Custom] void append(in [Optional=DefaultIsUndefined] DOMString name, 
-                         in [Optional=DefaultIsUndefined] DOMString value,
-                         in [Optional=DefaultIsUndefined] DOMString filename);
+    [Custom] void append([Optional=DefaultIsUndefined] DOMString name, 
+                         [Optional=DefaultIsUndefined] DOMString value,
+                         [Optional=DefaultIsUndefined] DOMString filename);
 };
 
diff --git a/html/DOMSettableTokenList.idl b/html/DOMSettableTokenList.idl
index ceb8d29..5bde9cd 100644
--- a/html/DOMSettableTokenList.idl
+++ b/html/DOMSettableTokenList.idl
@@ -24,7 +24,7 @@
 
 [
     IndexedGetter,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface DOMSettableTokenList : DOMTokenList {
     attribute DOMString value;
 };
diff --git a/html/DOMTokenList.idl b/html/DOMTokenList.idl
index 5689dfa..cc1ddcd 100644
--- a/html/DOMTokenList.idl
+++ b/html/DOMTokenList.idl
@@ -25,17 +25,14 @@
 [
     GenerateIsReachable=ImplElementRoot,
     IndexedGetter,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface DOMTokenList {
     readonly attribute unsigned long length;
-    [TreatReturnedNullStringAs=Null] DOMString item(in unsigned long index);
-    boolean contains(in DOMString token) raises(DOMException);
-    void add(in DOMString... tokens) raises(DOMException);
-    void remove(in DOMString... tokens) raises(DOMException);
-    boolean toggle(in DOMString token, in [Optional] boolean force) raises(DOMException);
-
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
+    [TreatReturnedNullStringAs=Null] DOMString item(unsigned long index);
+    [RaisesException] boolean contains(DOMString token);
+    [RaisesException] void add(DOMString... tokens);
+    [RaisesException] void remove(DOMString... tokens);
+    [RaisesException] boolean toggle(DOMString token, [Optional] boolean force);
     [NotEnumerable] DOMString toString();
-#endif
 };
 
diff --git a/html/DOMURL.idl b/html/DOMURL.idl
index 35fab08..65c1895 100644
--- a/html/DOMURL.idl
+++ b/html/DOMURL.idl
@@ -25,15 +25,14 @@
  */
 
 [
-    Conditional=BLOB,
     Constructor,
     InterfaceName=URL,
     ImplementationLacksVTable
 ] interface DOMURL {
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaSource? source);
+    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaSource? source);
 #if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in MediaStream? stream);
+    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(MediaStream? stream);
 #endif
-    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(in Blob? blob);
-    [CallWith=ScriptExecutionContext] static void revokeObjectURL(in DOMString url);
+    [CallWith=ScriptExecutionContext,TreatReturnedNullStringAs=Null] static DOMString createObjectURL(Blob? blob);
+    [CallWith=ScriptExecutionContext] static void revokeObjectURL(DOMString url);
 };
diff --git a/html/HTMLAllCollection.idl b/html/HTMLAllCollection.idl
index fff6335..be05d36 100644
--- a/html/HTMLAllCollection.idl
+++ b/html/HTMLAllCollection.idl
@@ -25,16 +25,16 @@
 
 [
     IndexedGetter,
-    NamedGetter,
+    CustomNamedGetter,
     CustomCall,
     MasqueradesAsUndefined,
     GenerateIsReachable=ImplOwnerNodeRoot,
-    V8DependentLifetime,
+    DependentLifetime,
 ] interface HTMLAllCollection {
     readonly attribute unsigned long length;
-    [Custom] Node item(in [Optional=DefaultIsUndefined] unsigned long index);
-    [Custom] Node namedItem(in DOMString name);
+    [Custom] Node item([Optional=DefaultIsUndefined] unsigned long index);
+    [Custom] Node namedItem(DOMString name);
     // FIXME: This should return an HTMLAllCollection.
-    NodeList tags(in DOMString name);
+    NodeList tags(DOMString name);
 };
 
diff --git a/html/HTMLAnchorElement.idl b/html/HTMLAnchorElement.idl
index df68362..e0c7068 100644
--- a/html/HTMLAnchorElement.idl
+++ b/html/HTMLAnchorElement.idl
@@ -21,7 +21,7 @@
 interface HTMLAnchorElement : HTMLElement {
     [Reflect] attribute DOMString charset;
     [Reflect] attribute DOMString coords;
-    [Conditional=DOWNLOAD_ATTRIBUTE, Reflect] attribute DOMString download;
+    [Reflect] attribute DOMString download;
     [Reflect, URL] attribute DOMString href;
     [Reflect] attribute DOMString hreflang;
     [Reflect] attribute DOMString name;
@@ -32,19 +32,6 @@
     [Reflect] attribute DOMString target;
     [Reflect] attribute DOMString type;
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    readonly attribute DOMString hash;
-    readonly attribute DOMString host;
-    readonly attribute DOMString hostname;
-    readonly attribute DOMString pathname;
-    readonly attribute DOMString port;
-    readonly attribute DOMString protocol;
-    readonly attribute DOMString search;
-#else
     [TreatNullAs=NullString] attribute DOMString hash;
     [TreatNullAs=NullString] attribute DOMString host;
     [TreatNullAs=NullString] attribute DOMString hostname;
@@ -54,17 +41,9 @@
     [TreatNullAs=NullString] attribute DOMString search;
 
     [TreatNullAs=NullString] readonly attribute DOMString origin;
-#endif
 
     readonly attribute DOMString text;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [NotEnumerable] DOMString toString();
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute URL absoluteLinkURL;
-#endif
 };
 
diff --git a/html/HTMLAppletElement.idl b/html/HTMLAppletElement.idl
index 4a1470c..c42e5e9 100644
--- a/html/HTMLAppletElement.idl
+++ b/html/HTMLAppletElement.idl
@@ -20,7 +20,7 @@
 
 [
     CustomNamedSetter,
-    V8CustomIndexedGetter,
+    CustomIndexedGetter,
     CustomCall
 ] interface HTMLAppletElement : HTMLElement {
     [Reflect] attribute DOMString align;
@@ -29,18 +29,10 @@
     [Reflect] attribute DOMString code;
     [Reflect] attribute DOMString codeBase;
     [Reflect] attribute DOMString height;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [Reflect] attribute DOMString hspace;
-#else
-    [Reflect] attribute long hspace;
-#endif
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString object;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [Reflect] attribute DOMString vspace;
-#else
-    [Reflect] attribute long vspace;
-#endif
     [Reflect] attribute DOMString width;
 };
 
diff --git a/html/HTMLAreaElement.idl b/html/HTMLAreaElement.idl
index d025052..a9c1fa7 100644
--- a/html/HTMLAreaElement.idl
+++ b/html/HTMLAreaElement.idl
@@ -27,9 +27,6 @@
     [Reflect] attribute DOMString shape;
     [Reflect] attribute DOMString target;
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
     // IE Extensions
     readonly attribute DOMString hash;
     readonly attribute DOMString host;
@@ -38,10 +35,5 @@
     readonly attribute DOMString port;
     readonly attribute DOMString protocol;
     readonly attribute DOMString search;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute URL absoluteLinkURL;
-#endif
 };
 
diff --git a/html/HTMLAudioElement.idl b/html/HTMLAudioElement.idl
index d0feced..1e86817 100644
--- a/html/HTMLAudioElement.idl
+++ b/html/HTMLAudioElement.idl
@@ -25,6 +25,6 @@
 
 [
     Conditional=VIDEO,
-    NamedConstructor=Audio(in [Optional=DefaultIsNullString] DOMString src)
+    NamedConstructor=Audio([Optional=DefaultIsNullString] DOMString src)
 ] interface HTMLAudioElement : HTMLMediaElement {
 };
diff --git a/html/HTMLBaseFontElement.idl b/html/HTMLBaseFontElement.idl
index 99bb330..b885a05 100644
--- a/html/HTMLBaseFontElement.idl
+++ b/html/HTMLBaseFontElement.idl
@@ -20,9 +20,5 @@
 interface HTMLBaseFontElement : HTMLElement {
     [Reflect] attribute DOMString color;
     [Reflect] attribute DOMString face;
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString size; // this changed to a long, but our existing API is a string
-#else
     [Reflect] attribute long size;
-#endif
 };
diff --git a/html/HTMLBodyElement.idl b/html/HTMLBodyElement.idl
index 8ffcf10..f65097a 100644
--- a/html/HTMLBodyElement.idl
+++ b/html/HTMLBodyElement.idl
@@ -26,7 +26,6 @@
     [Reflect] attribute DOMString text;
     [Reflect] attribute DOMString vLink;
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // Event handler attributes
     [NotEnumerable] attribute EventListener onbeforeunload;
     [NotEnumerable] attribute EventListener onhashchange;
@@ -51,6 +50,5 @@
     // attribute [NotEnumerable] EventListener onbeforeprint;
     // attribute [NotEnumerable] EventListener onredo;
     // attribute [NotEnumerable] EventListener onundo;
-#endif
 };
 
diff --git a/html/HTMLButtonElement.idl b/html/HTMLButtonElement.idl
index 252a422..eb3832f 100644
--- a/html/HTMLButtonElement.idl
+++ b/html/HTMLButtonElement.idl
@@ -35,15 +35,7 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    void click();
-#endif
 };
diff --git a/html/HTMLCanvasElement.idl b/html/HTMLCanvasElement.idl
index c4ed862..aa5269b 100644
--- a/html/HTMLCanvasElement.idl
+++ b/html/HTMLCanvasElement.idl
@@ -29,15 +29,9 @@
     attribute long width;
     attribute long height;
 
-    [Custom] DOMString toDataURL(in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString type)
-        raises(DOMException);
+    [Custom, RaisesException] DOMString toDataURL([TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString type);
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // The custom binding is needed to handle context creation attributes.
-    [Custom] any getContext(in [Optional=DefaultIsUndefined] DOMString contextId);
-#endif
-#endif
-
+    [Custom] any getContext([Optional=DefaultIsUndefined] DOMString contextId);
 };
 
diff --git a/html/HTMLCollection.idl b/html/HTMLCollection.idl
index dd5acbc..da28cc7 100644
--- a/html/HTMLCollection.idl
+++ b/html/HTMLCollection.idl
@@ -20,19 +20,15 @@
 
 [
     IndexedGetter,
-    NamedGetter,
+    CustomNamedGetter,
     CustomToJSObject,
     GenerateIsReachable=ImplOwnerNodeRoot,
-    V8DependentLifetime,
-    ObjCPolymorphic,
-    V8SkipVTableValidation
+    DependentLifetime,
+    
+    SkipVTableValidation
 ] interface HTMLCollection {
     readonly attribute unsigned long length;
-    Node item(in [Optional=DefaultIsUndefined] unsigned long index);
-    Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    NodeList tags(in [Optional=DefaultIsUndefined] DOMString name);
-#endif
+    Node item([Optional=DefaultIsUndefined] unsigned long index);
+    Node namedItem([Optional=DefaultIsUndefined] DOMString name);
 };
 
diff --git a/html/HTMLDialogElement.idl b/html/HTMLDialogElement.idl
index edc2ac2..13b494e 100644
--- a/html/HTMLDialogElement.idl
+++ b/html/HTMLDialogElement.idl
@@ -25,11 +25,11 @@
 
 [
     Conditional=DIALOG_ELEMENT,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLDialogElement : HTMLElement {
     [Reflect] attribute boolean open;
-    void close() raises(DOMException);
+    [RaisesException] void close();
     void show();
-    void showModal() raises(DOMException);
+    [RaisesException] void showModal();
 };
 
diff --git a/html/HTMLDivElement.idl b/html/HTMLDivElement.idl
index 5dd9acd..dd17326 100644
--- a/html/HTMLDivElement.idl
+++ b/html/HTMLDivElement.idl
@@ -18,7 +18,7 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLDivElement : HTMLElement {
     [Reflect] attribute DOMString align;
 };
diff --git a/html/HTMLDocument.idl b/html/HTMLDocument.idl
index 6f2169d..7fdcf55 100644
--- a/html/HTMLDocument.idl
+++ b/html/HTMLDocument.idl
@@ -20,13 +20,13 @@
 
 [
     CustomNamedGetter,
-    V8CustomToJSObject,
-    V8SkipVTableValidation
+    CustomToJSObject,
+    SkipVTableValidation
 ] interface HTMLDocument : Document {
-    [V8Custom] void open();
+    [Custom] void open();
     void close();
-    [Custom] void write(in [Optional=DefaultIsUndefined] DOMString text);
-    [Custom] void writeln(in [Optional=DefaultIsUndefined] DOMString text);
+    [Custom] void write([Optional=DefaultIsUndefined] DOMString text);
+    [Custom] void writeln([Optional=DefaultIsUndefined] DOMString text);
 
     readonly attribute HTMLCollection embeds;
     readonly attribute HTMLCollection plugins;
@@ -34,10 +34,7 @@
 
     // Extensions
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    // FIXME: This should eventually be available (if they are wanted) for all languages.
-    [Replaceable, Deletable] attribute HTMLAllCollection all;
-#endif
+    [Replaceable] attribute HTMLAllCollection all;
 
     void clear();
 
diff --git a/html/HTMLElement.idl b/html/HTMLElement.idl
index def5a48..d39c72d 100644
--- a/html/HTMLElement.idl
+++ b/html/HTMLElement.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    V8CustomToJSObject,
-    V8SkipVTableValidation
+    CustomToJSObject,
+    SkipVTableValidation
 ] interface HTMLElement : Element {
              // iht.com relies on id returning the empty string when no id is present. 
              // Other browsers do this as well. So we don't convert null to JS null.
@@ -37,35 +37,25 @@
              [Reflect] attribute DOMString accessKey;
 
     // Extensions
-             [TreatNullAs=NullString, V8DeliverCustomElementCallbacks] attribute DOMString innerHTML
-                 setter raises(DOMException);
-             [TreatNullAs=NullString] attribute DOMString innerText
-                 setter raises(DOMException);
-             [TreatNullAs=NullString, V8DeliverCustomElementCallbacks] attribute DOMString outerHTML
-                 setter raises(DOMException);
-             [TreatNullAs=NullString] attribute DOMString outerText
-                 setter raises(DOMException);
+             [TreatNullAs=NullString, DeliverCustomElementCallbacks, SetterRaisesException] attribute DOMString innerHTML;
+             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString innerText;
+             [TreatNullAs=NullString, DeliverCustomElementCallbacks, SetterRaisesException] attribute DOMString outerHTML;
+             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString outerText;
 
-    Element insertAdjacentElement(in [Optional=DefaultIsUndefined] DOMString where,
-                                  in [Optional=DefaultIsUndefined] Element element)
-        raises(DOMException);
-    [V8DeliverCustomElementCallbacks]
-    void insertAdjacentHTML(in [Optional=DefaultIsUndefined] DOMString where,
-                            in [Optional=DefaultIsUndefined] DOMString html)
-        raises(DOMException);
-    void insertAdjacentText(in [Optional=DefaultIsUndefined] DOMString where,
-                            in [Optional=DefaultIsUndefined] DOMString text)
-        raises(DOMException);
+    [RaisesException] Element insertAdjacentElement([Optional=DefaultIsUndefined] DOMString where,
+                                  [Optional=DefaultIsUndefined] Element element);
+    [DeliverCustomElementCallbacks, RaisesException] void insertAdjacentHTML([Optional=DefaultIsUndefined] DOMString where,
+                            [Optional=DefaultIsUndefined] DOMString html);
+    [RaisesException] void insertAdjacentText([Optional=DefaultIsUndefined] DOMString where,
+                            [Optional=DefaultIsUndefined] DOMString text);
 
     readonly attribute HTMLCollection children;
 
-             [TreatNullAs=NullString] attribute DOMString contentEditable
-                 setter raises(DOMException);
+             [TreatNullAs=NullString, SetterRaisesException] attribute DOMString contentEditable;
     readonly attribute boolean isContentEditable;
 
              attribute boolean spellcheck;
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C // No Objective-C bindings yet.
              [Conditional=MICRODATA, Reflect] attribute boolean itemScope;
     [Conditional=MICRODATA] readonly attribute DOMSettableTokenList itemType;
              [Conditional=MICRODATA, Reflect, URL] attribute DOMString itemId;
@@ -76,18 +66,8 @@
 #if defined(ENABLE_MICRODATA) && ENABLE_MICRODATA
     [Conditional=MICRODATA] readonly attribute HTMLPropertiesCollection properties;
 #endif
-#endif
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
-             [Conditional=MICRODATA, Custom] attribute any itemValue
-                 setter raises(DOMException);
-#endif
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    readonly attribute DOMString titleDisplayString;
-#endif
+    [Conditional=MICRODATA, Custom, SetterRaisesException] attribute any itemValue;
 
     void click();
 };
diff --git a/html/HTMLEmbedElement.idl b/html/HTMLEmbedElement.idl
index ea62e2b..7f74cb3 100644
--- a/html/HTMLEmbedElement.idl
+++ b/html/HTMLEmbedElement.idl
@@ -21,28 +21,18 @@
 [
     CustomNamedSetter,
     CustomCall,
-    V8CustomIndexedGetter,
-    V8SkipVTableValidation
+    CustomIndexedGetter,
+    SkipVTableValidation
 ] interface HTMLEmbedElement : HTMLElement {
-attribute [Reflect] DOMString align;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-attribute [Reflect] DOMString height;
-#else
-attribute [Reflect] long height;
-#endif
-attribute [Reflect] DOMString name;
-attribute [Reflect, URL] DOMString src;
-attribute [Reflect] DOMString type;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-attribute [Reflect] DOMString width;
-#else
-attribute [Reflect] long width;
-#endif
+[Reflect] attribute DOMString align;
+[Reflect] attribute DOMString height;
+[Reflect] attribute DOMString name;
+[Reflect, URL] attribute DOMString src;
+[Reflect] attribute DOMString type;
+[Reflect] attribute DOMString width;
 
 #if defined(ENABLE_SVG) && ENABLE_SVG
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
-[CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
-#endif
+[CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
 #endif
 };
 
diff --git a/html/HTMLFieldSetElement.idl b/html/HTMLFieldSetElement.idl
index 5f3b4f3..4e77da9 100644
--- a/html/HTMLFieldSetElement.idl
+++ b/html/HTMLFieldSetElement.idl
@@ -30,5 +30,5 @@
     readonly attribute ValidityState   validity;
     readonly attribute DOMString       validationMessage;
     boolean  checkValidity();
-    void     setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void     setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 };
diff --git a/html/HTMLFormControlsCollection.idl b/html/HTMLFormControlsCollection.idl
index 001a3ee..9c0ecd9 100644
--- a/html/HTMLFormControlsCollection.idl
+++ b/html/HTMLFormControlsCollection.idl
@@ -20,9 +20,9 @@
 
 [
     IndexedGetter,
-    NamedGetter,
+    CustomNamedGetter,
     GenerateIsReachable=ImplOwnerNodeRoot,
-    V8DependentLifetime,
+    DependentLifetime,
 ] interface HTMLFormControlsCollection : HTMLCollection {
-    [Custom] Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    [Custom] Node namedItem([Optional=DefaultIsUndefined] DOMString name);
 };
diff --git a/html/HTMLFormElement.idl b/html/HTMLFormElement.idl
index c57d859..24703c6 100644
--- a/html/HTMLFormElement.idl
+++ b/html/HTMLFormElement.idl
@@ -20,7 +20,7 @@
 
 [
     IndexedGetter,
-    V8CustomIndexedGetter,
+    CustomIndexedGetter,
     CustomNamedGetter
 ] interface HTMLFormElement : HTMLElement {
     [Reflect=accept_charset] attribute DOMString acceptCharset;
@@ -36,17 +36,11 @@
     readonly attribute HTMLCollection elements;
     readonly attribute long length;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [ImplementedAs=submitFromJavaScript] void submit();
-#else
-    void submit();
-#endif
     void reset();
     boolean checkValidity();
 
-#if defined(ENABLE_REQUEST_AUTOCOMPLETE) && ENABLE_REQUEST_AUTOCOMPLETE
-    [V8EnabledAtRuntime=requestAutocomplete] void requestAutocomplete();
-    [V8EnabledAtRuntime=requestAutocomplete,NotEnumerable] attribute EventListener onautocomplete;
-    [V8EnabledAtRuntime=requestAutocomplete,NotEnumerable] attribute EventListener onautocompleteerror;
-#endif
+    [EnabledAtRuntime=requestAutocomplete] void requestAutocomplete();
+    [EnabledAtRuntime=requestAutocomplete,NotEnumerable] attribute EventListener onautocomplete;
+    [EnabledAtRuntime=requestAutocomplete,NotEnumerable] attribute EventListener onautocompleteerror;
 };
diff --git a/html/HTMLFrameElement.idl b/html/HTMLFrameElement.idl
index e3747da..4991428 100644
--- a/html/HTMLFrameElement.idl
+++ b/html/HTMLFrameElement.idl
@@ -36,10 +36,7 @@
     readonly attribute DOMWindow contentWindow;
 
 #if defined(ENABLE_SVG) && ENABLE_SVG
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
-    [CheckSecurityForNode] SVGDocument getSVGDocument()
-        raises(DOMException);
-#endif
+    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
 #endif
 
     [TreatNullAs=NullString, CustomSetter] attribute DOMString location;
diff --git a/html/HTMLFrameSetElement.idl b/html/HTMLFrameSetElement.idl
index 993126c..348251c 100644
--- a/html/HTMLFrameSetElement.idl
+++ b/html/HTMLFrameSetElement.idl
@@ -24,7 +24,6 @@
     [Reflect] attribute DOMString cols;
     [Reflect] attribute DOMString rows;
 
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
     // Event handler attributes
     [NotEnumerable] attribute EventListener onbeforeunload;
     [NotEnumerable] attribute EventListener onhashchange;
@@ -49,6 +48,5 @@
     // attribute [NotEnumerable] EventListener onbeforeprint;
     // attribute [NotEnumerable] EventListener onredo;
     // attribute [NotEnumerable] EventListener onundo;
-#endif
 };
 
diff --git a/html/HTMLIFrameElement.idl b/html/HTMLIFrameElement.idl
index 5eb83a9..aa54d7e 100644
--- a/html/HTMLIFrameElement.idl
+++ b/html/HTMLIFrameElement.idl
@@ -27,7 +27,7 @@
     [Reflect] attribute DOMString marginWidth;
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString sandbox;
-    [Reflect, V8EnabledAtRuntime=seamlessIFrames] attribute boolean seamless;
+    [Reflect, EnabledAtRuntime=seamlessIFrames] attribute boolean seamless;
     [Reflect] attribute DOMString scrolling;
     [Reflect, URL] attribute DOMString src;
     [Reflect] attribute DOMString srcdoc;
@@ -40,10 +40,7 @@
     readonly attribute DOMWindow contentWindow;
 
 #if defined(ENABLE_SVG) && ENABLE_SVG
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
-    [CheckSecurityForNode] SVGDocument getSVGDocument()
-        raises(DOMException);
-#endif
+    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
 #endif
 };
 
diff --git a/html/HTMLImageElement.idl b/html/HTMLImageElement.idl
index c3fe26f..3287fd6 100644
--- a/html/HTMLImageElement.idl
+++ b/html/HTMLImageElement.idl
@@ -19,7 +19,7 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLImageElement : HTMLElement {
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString align;
@@ -42,11 +42,5 @@
     readonly attribute long naturalWidth;
     readonly attribute long x;
     readonly attribute long y;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute DOMString altDisplayString;
-    readonly attribute URL absoluteImageURL;
-#endif
 };
 
diff --git a/html/HTMLInputElement.idl b/html/HTMLInputElement.idl
index 2e03551..fcbc10f 100644
--- a/html/HTMLInputElement.idl
+++ b/html/HTMLInputElement.idl
@@ -20,7 +20,7 @@
  */
 
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLInputElement : HTMLElement {
     [Reflect] attribute DOMString accept;
     [Reflect] attribute DOMString alt;
@@ -41,7 +41,7 @@
     attribute boolean indeterminate;
     [Conditional=DATALIST_ELEMENT] readonly attribute HTMLElement list;
     [Reflect] attribute DOMString max;
-    attribute long maxLength setter raises(DOMException);
+    [SetterRaisesException] attribute long maxLength;
     [Reflect] attribute DOMString min;
     [Reflect] attribute boolean multiple;
     [Reflect] attribute DOMString name;
@@ -49,35 +49,25 @@
     [Reflect] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
     [Reflect] attribute boolean required;
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [ObjCImplementedAsUnsignedLong] attribute DOMString size; // DOM level 2 changed this to a long, but ObjC API is a string
-#else
-    attribute unsigned long size setter raises(DOMException); // Changed string -> long -> unsigned long
-#endif
+    [SetterRaisesException] attribute unsigned long size; // Changed string -> long -> unsigned long
     [Reflect, URL] attribute DOMString src;
     [Reflect] attribute DOMString step;
     [TreatNullAs=NullString] attribute DOMString type; // readonly dropped as part of DOM level 2
     [TreatNullAs=NullString] attribute DOMString defaultValue;
     // See the discussion in https://bugs.webkit.org/show_bug.cgi?id=100085
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [TreatNullAs=NullString] attribute DOMString value setter raises(DOMException);
-#else
-    [TreatNullAs=NullString] attribute DOMString value;
-#endif
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-    attribute Date valueAsDate setter raises(DOMException);
-#endif
-    attribute double valueAsNumber setter raises(DOMException);
+    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString value;
+    [SetterRaisesException] attribute Date valueAsDate;
+    [SetterRaisesException] attribute double valueAsNumber;
 
-    void stepUp(in [Optional] long n) raises(DOMException);
-    void stepDown(in [Optional] long n) raises(DOMException);
+    [RaisesException] void stepUp([Optional] long n);
+    [RaisesException] void stepDown([Optional] long n);
 
     attribute unsigned long width;
     readonly attribute boolean willValidate;
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
 
@@ -86,47 +76,25 @@
     [Custom] attribute long selectionEnd;
     [Custom] attribute DOMString selectionDirection;
 
-    void setRangeText(in DOMString replacement) raises(DOMException);
-    void setRangeText(in DOMString replacement,
-                        in unsigned long start,
-                        in unsigned long end,
-                        in [Optional=DefaultIsNullString] DOMString selectionMode) raises(DOMException);
+    [RaisesException] void setRangeText(DOMString replacement);
+    [RaisesException] void setRangeText(DOMString replacement,
+                        unsigned long start,
+                        unsigned long end,
+                        [Optional=DefaultIsNullString] DOMString selectionMode);
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Custom] void setSelectionRange(in long start, in long end);
-#else
-    [Custom] void setSelectionRange(in [Optional=DefaultIsUndefined] long start, 
-                                    in [Optional=DefaultIsUndefined] long end, 
-                                    in [Optional] DOMString direction);
-#endif
+    [Custom] void setSelectionRange([Optional=DefaultIsUndefined] long start, 
+                                    [Optional=DefaultIsUndefined] long end, 
+                                    [Optional] DOMString direction);
 
     // Non-standard attributes
     [Reflect] attribute DOMString align;
     [Conditional=DIRECTORY_UPLOAD, Reflect] attribute boolean webkitdirectory;
     [Reflect] attribute DOMString useMap;
     [Reflect] attribute boolean incremental;
-    [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] attribute boolean webkitSpeech;
-    [Conditional=INPUT_SPEECH, Reflect, V8EnabledAtRuntime] attribute boolean webkitGrammar;
+    [Conditional=INPUT_SPEECH, Reflect, EnabledAtRuntime] attribute boolean webkitSpeech;
+    [Conditional=INPUT_SPEECH, Reflect, EnabledAtRuntime] attribute boolean webkitGrammar;
     [Conditional=INPUT_SPEECH, NotEnumerable] attribute EventListener onwebkitspeechchange;
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    void click();
-#endif
-
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    void setValueForUser(in [TreatNullAs=NullString] DOMString value);
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute DOMString altDisplayString;
-    readonly attribute URL absoluteImageURL;
-#endif
-
     // See http://www.w3.org/TR/html-media-capture/
     [Conditional=MEDIA_CAPTURE] attribute DOMString capture;
 };
diff --git a/html/HTMLKeygenElement.idl b/html/HTMLKeygenElement.idl
index 466d792..c8361d8 100644
--- a/html/HTMLKeygenElement.idl
+++ b/html/HTMLKeygenElement.idl
@@ -42,7 +42,7 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
 };
diff --git a/html/HTMLLabelElement.idl b/html/HTMLLabelElement.idl
index 92e5f4b..fa37360 100644
--- a/html/HTMLLabelElement.idl
+++ b/html/HTMLLabelElement.idl
@@ -22,8 +22,5 @@
     readonly attribute HTMLFormElement form;
     [Reflect=for] attribute DOMString htmlFor;
     readonly attribute HTMLElement control;
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
 };
 
diff --git a/html/HTMLLegendElement.idl b/html/HTMLLegendElement.idl
index 749745e..e8e8871 100644
--- a/html/HTMLLegendElement.idl
+++ b/html/HTMLLegendElement.idl
@@ -21,8 +21,5 @@
 interface HTMLLegendElement : HTMLElement {
     readonly attribute HTMLFormElement form;
     [Reflect] attribute DOMString align;
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
 };
 
diff --git a/html/HTMLLinkElement.idl b/html/HTMLLinkElement.idl
index 0a4e347..35f1e31 100644
--- a/html/HTMLLinkElement.idl
+++ b/html/HTMLLinkElement.idl
@@ -27,18 +27,11 @@
     [Reflect] attribute DOMString media;
     [Reflect] attribute DOMString rel;
     [Reflect] attribute DOMString rev;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [Custom] attribute DOMSettableTokenList sizes;
-#endif
     [Reflect] attribute DOMString target;
     [Reflect] attribute DOMString type;
 
     // DOM Level 2 Style
     readonly attribute StyleSheet sheet;
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute URL absoluteLinkURL;
-#endif
 };
 
diff --git a/html/HTMLMarqueeElement.idl b/html/HTMLMarqueeElement.idl
index 41bd019..5b8e3a9 100644
--- a/html/HTMLMarqueeElement.idl
+++ b/html/HTMLMarqueeElement.idl
@@ -26,9 +26,9 @@
     [Reflect] attribute DOMString direction;
     [Reflect] attribute DOMString height;
     [Reflect] attribute unsigned long hspace;
-    attribute long loop setter raises(DOMException);
-    attribute long scrollAmount setter raises(DOMException);
-    attribute long scrollDelay setter raises(DOMException);
+    [SetterRaisesException] attribute long loop;
+    [SetterRaisesException] attribute long scrollAmount;
+    [SetterRaisesException] attribute long scrollDelay;
     [Reflect] attribute boolean trueSpeed;
     [Reflect] attribute unsigned long vspace;
     [Reflect] attribute DOMString width;
diff --git a/html/HTMLMediaElement.idl b/html/HTMLMediaElement.idl
index 8d658c0..c422c34 100644
--- a/html/HTMLMediaElement.idl
+++ b/html/HTMLMediaElement.idl
@@ -32,8 +32,8 @@
 readonly attribute MediaError error;
 
 // network state
-attribute [Reflect, URL] DOMString src;
-readonly attribute [URL] DOMString currentSrc;
+[Reflect, URL] attribute DOMString src;
+[URL] readonly attribute DOMString currentSrc;
 
 const unsigned short NETWORK_EMPTY = 0;
 const unsigned short NETWORK_IDLE = 1;
@@ -45,11 +45,11 @@
 readonly attribute TimeRanges buffered;
 void load();
 #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
-    DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+    DOMString canPlayType([Optional=DefaultIsUndefined] DOMString type, [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
 #elif defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
-    DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
+    DOMString canPlayType([Optional=DefaultIsUndefined] DOMString type, [Optional=DefaultIsUndefined, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem);
 #else
-DOMString canPlayType(in [Optional=DefaultIsUndefined] DOMString type);
+DOMString canPlayType([Optional=DefaultIsUndefined] DOMString type);
 #endif
 
 // ready state
@@ -62,28 +62,26 @@
 readonly attribute boolean seeking;
 
 // playback state
-attribute float currentTime
-    setter raises (DOMException);
+[SetterRaisesException] attribute double currentTime;
 readonly attribute double initialTime;
-readonly attribute float startTime;
-readonly attribute float duration;
+readonly attribute double startTime;
+readonly attribute double duration;
 readonly attribute boolean paused;
-attribute float defaultPlaybackRate;
-attribute float playbackRate;
+attribute double defaultPlaybackRate;
+attribute double playbackRate;
 readonly attribute TimeRanges played;
 readonly attribute TimeRanges seekable;
 readonly attribute boolean ended;
-attribute [Reflect] boolean autoplay;
-attribute [Reflect] boolean loop;
+[Reflect] attribute boolean autoplay;
+[Reflect] attribute boolean loop;
 void play();
 void pause();
 
 // controls
 attribute boolean controls;
-attribute float volume 
-    setter raises (DOMException);
+[SetterRaisesException] attribute double volume;
 attribute boolean muted;
-attribute [Reflect=muted] boolean defaultMuted;
+[Reflect=muted] attribute boolean defaultMuted;
 
 // WebKit extensions
 attribute boolean webkitPreservesPitch;
@@ -92,32 +90,28 @@
 attribute boolean webkitClosedCaptionsVisible;
 
 // The number of bytes consumed by the media decoder.
-readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
-readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
+readonly attribute unsigned long webkitAudioDecodedByteCount;
+readonly attribute unsigned long webkitVideoDecodedByteCount;
 
 #if defined(ENABLE_ENCRYPTED_MEDIA) && ENABLE_ENCRYPTED_MEDIA
-[V8EnabledAtRuntime=encryptedMedia] void webkitGenerateKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional] Uint8Array initData)
-    raises (DOMException);
-[V8EnabledAtRuntime=encryptedMedia] void webkitAddKey(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in Uint8Array key, in [Optional] Uint8Array initData, in [Optional=DefaultIsNullString] DOMString sessionId)
-    raises (DOMException);
-[V8EnabledAtRuntime=encryptedMedia] void webkitCancelKeyRequest(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, in [Optional=DefaultIsNullString] DOMString sessionId)
-    raises (DOMException);
+[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitGenerateKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Optional] Uint8Array initData);
+[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitAddKey([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, Uint8Array key, [Optional] Uint8Array initData, [Optional=DefaultIsNullString] DOMString sessionId);
+[EnabledAtRuntime=encryptedMedia, RaisesException] void webkitCancelKeyRequest([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString keySystem, [Optional=DefaultIsNullString] DOMString sessionId);
 
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyadded;
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyerror;
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeymessage;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyadded;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyerror;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeymessage;
 #endif
-    attribute [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2, V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitneedkey;
+    [Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitneedkey;
 #if defined(ENABLE_ENCRYPTED_MEDIA_V2) && ENABLE_ENCRYPTED_MEDIA_V2
-    attribute [V8EnabledAtRuntime=encryptedMedia] MediaKeys mediaKeys;
+    [EnabledAtRuntime=encryptedMedia] attribute MediaKeys mediaKeys;
 #endif
 
 #if defined(ENABLE_VIDEO_TRACK) && ENABLE_VIDEO_TRACK
-[V8EnabledAtRuntime=webkitVideoTrack] TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
-    raises (DOMException);
-readonly attribute [V8EnabledAtRuntime=webkitVideoTrack] TextTrackList textTracks;
+[EnabledAtRuntime=webkitVideoTrack, RaisesException] TextTrack addTextTrack(DOMString kind, [Optional] DOMString label, [Optional] DOMString language);
+[EnabledAtRuntime=webkitVideoTrack] readonly attribute TextTrackList textTracks;
 #endif
 
 [Reflect, TreatNullAs=NullString] attribute DOMString mediaGroup;
-attribute [CustomSetter] MediaController controller;
+[CustomSetter] attribute MediaController controller;
 };
diff --git a/html/HTMLMeterElement.idl b/html/HTMLMeterElement.idl
index 85d1b51..12f067a 100644
--- a/html/HTMLMeterElement.idl
+++ b/html/HTMLMeterElement.idl
@@ -17,20 +17,12 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    Conditional=METER_ELEMENT
-] interface HTMLMeterElement : HTMLElement {
-             attribute double value
-                 setter raises(DOMException);
-             attribute double min
-                 setter raises(DOMException);
-             attribute double max
-                 setter raises(DOMException);
-             attribute double low
-                 setter raises(DOMException);
-             attribute double high
-                 setter raises(DOMException);
-             attribute double optimum
-                 setter raises(DOMException);
+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;
     readonly attribute NodeList labels;
 };
diff --git a/html/HTMLObjectElement.idl b/html/HTMLObjectElement.idl
index b2e0132..c98914c 100644
--- a/html/HTMLObjectElement.idl
+++ b/html/HTMLObjectElement.idl
@@ -20,7 +20,7 @@
 
 [
     CustomNamedSetter,
-    V8CustomIndexedGetter,
+    CustomIndexedGetter,
     CustomCall
 ] interface HTMLObjectElement : HTMLElement {
     readonly attribute HTMLFormElement form;
@@ -44,20 +44,13 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     // Introduced in DOM Level 2:
     [CheckSecurityForNode] readonly attribute Document contentDocument;
 
 #if defined(ENABLE_SVG) && ENABLE_SVG
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C || defined(ENABLE_SVG_DOM_OBJC_BINDINGS) && ENABLE_SVG_DOM_OBJC_BINDINGS
-    [CheckSecurityForNode] SVGDocument getSVGDocument() raises(DOMException);
-#endif
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // Objective-C extension:
-    readonly attribute URL absoluteImageURL;
+    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
 #endif
 };
 
diff --git a/html/HTMLOptionElement.idl b/html/HTMLOptionElement.idl
index 66bcabd..7b00005 100644
--- a/html/HTMLOptionElement.idl
+++ b/html/HTMLOptionElement.idl
@@ -19,8 +19,8 @@
  */
 
 [
-    NamedConstructor=Option(in [Optional=DefaultIsNullString] DOMString data, in [Optional=DefaultIsNullString] DOMString value, in [Optional=DefaultIsUndefined] boolean defaultSelected, in [Optional=DefaultIsUndefined] boolean selected),
-    ConstructorRaisesException
+    NamedConstructor=Option([Optional=DefaultIsNullString] DOMString data, [Optional=DefaultIsNullString] DOMString value, [Optional=DefaultIsUndefined] boolean defaultSelected, [Optional=DefaultIsUndefined] boolean selected),
+    RaisesException
 ] interface HTMLOptionElement : HTMLElement {
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
@@ -29,10 +29,6 @@
     attribute boolean selected;
     attribute DOMString value;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    attribute DOMString text setter raises(DOMException);
-#else
-    readonly attribute DOMString text;
-#endif
+    [SetterRaisesException] attribute DOMString text;
     readonly attribute long index;
 };
diff --git a/html/HTMLOptionsCollection.idl b/html/HTMLOptionsCollection.idl
index 692ead2..e62490c 100644
--- a/html/HTMLOptionsCollection.idl
+++ b/html/HTMLOptionsCollection.idl
@@ -20,24 +20,18 @@
 
 [
     CustomIndexedSetter,
-    NamedGetter,
+    CustomNamedGetter,
     GenerateIsReachable=ImplOwnerNodeRoot,
-    V8CustomIndexedGetter,
-    V8DependentLifetime,
+    CustomIndexedGetter,
+    DependentLifetime,
 ] interface HTMLOptionsCollection : HTMLCollection {
     attribute long selectedIndex;
-    [CustomSetter] attribute unsigned long length
-        setter raises (DOMException);
+    [CustomSetter, SetterRaisesException] attribute unsigned long length;
 
-    [Custom] Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    [Custom] Node namedItem([Optional=DefaultIsUndefined] DOMString name);
 
-    [Custom] void add(in [Optional=DefaultIsUndefined] HTMLOptionElement option, 
-                      in [Optional] unsigned long index)
-         raises (DOMException);
-    [Custom] void remove(in [Optional=DefaultIsUndefined] unsigned long index);
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    Node item(in unsigned long index);
-#endif
+    [Custom, RaisesException] void add([Optional=DefaultIsUndefined] HTMLOptionElement option, 
+                      [Optional] unsigned long index);
+    [Custom] void remove([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/html/HTMLOutputElement.idl b/html/HTMLOutputElement.idl
index 61eed17..7edaca2 100644
--- a/html/HTMLOutputElement.idl
+++ b/html/HTMLOutputElement.idl
@@ -35,7 +35,7 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
 };
diff --git a/html/HTMLProgressElement.idl b/html/HTMLProgressElement.idl
index 23a94fa..a2f3f32 100644
--- a/html/HTMLProgressElement.idl
+++ b/html/HTMLProgressElement.idl
@@ -17,13 +17,9 @@
  * Boston, MA 02110-1301, USA.
  */
 
-[
-    Conditional=PROGRESS_ELEMENT
-] interface HTMLProgressElement : HTMLElement {
-             attribute  double                value
-                 setter raises(DOMException);
-             attribute  double                max
-                 setter raises(DOMException);
+interface HTMLProgressElement : HTMLElement {
+             [SetterRaisesException] attribute  double                value;
+             [SetterRaisesException] attribute  double                max;
     readonly attribute  double                position;
     readonly attribute  NodeList              labels;
 };
diff --git a/html/HTMLPropertiesCollection.idl b/html/HTMLPropertiesCollection.idl
index 988118d..894c4fe 100644
--- a/html/HTMLPropertiesCollection.idl
+++ b/html/HTMLPropertiesCollection.idl
@@ -31,11 +31,11 @@
 [
     Conditional=MICRODATA,
     IndexedGetter,
-    NamedGetter
+    CustomNamedGetter
 ] interface HTMLPropertiesCollection : HTMLCollection {
     readonly attribute unsigned long length;
-    Node item(in unsigned long index);
+    Node item(unsigned long index);
 
     readonly attribute DOMStringList names;
-    [ImplementedAs=propertyNodeList] PropertyNodeList namedItem(in DOMString name);
+    [ImplementedAs=propertyNodeList] PropertyNodeList namedItem(DOMString name);
 };
diff --git a/html/HTMLScriptElement.idl b/html/HTMLScriptElement.idl
index 195571a..cb8a909 100644
--- a/html/HTMLScriptElement.idl
+++ b/html/HTMLScriptElement.idl
@@ -27,5 +27,5 @@
     [Reflect, URL] attribute DOMString src;
     [Reflect] attribute DOMString type;
     [Reflect] attribute DOMString crossOrigin;
-    [Reflect, V8EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
+    [Reflect, EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute DOMString nonce;
 };
diff --git a/html/HTMLSelectElement.idl b/html/HTMLSelectElement.idl
index 74164a5..9c410f8 100644
--- a/html/HTMLSelectElement.idl
+++ b/html/HTMLSelectElement.idl
@@ -21,38 +21,29 @@
 [
     IndexedGetter,
     CustomIndexedSetter,
-    V8CustomIndexedGetter,
-    V8SkipVTableValidation
+    CustomIndexedGetter,
+    SkipVTableValidation
 ] interface HTMLSelectElement : HTMLElement {
-    attribute [Reflect] boolean autofocus;
-    attribute [Reflect] boolean disabled;
+    [Reflect] attribute boolean autofocus;
+    [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
     attribute boolean multiple;
-    attribute [Reflect] DOMString name;
-    attribute [Reflect] boolean required;
+    [Reflect] attribute DOMString name;
+    [Reflect] attribute boolean required;
     attribute long size;
 
     readonly attribute DOMString type;
 
     readonly attribute HTMLOptionsCollection options;
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    // DOM Level 2 changes type of length attribute to unsigned long, 
-    // for compatibility we keep DOM Level 1 definition.
-    readonly attribute long length;
-#else
-    attribute unsigned long length setter raises (DOMException);
-#endif
-    Node item(in [IsIndex,Optional=DefaultIsUndefined] unsigned long index);
-    Node namedItem(in [Optional=DefaultIsUndefined] DOMString name);
-    [ObjCLegacyUnnamedParameters] void add(in [Optional=DefaultIsUndefined] HTMLElement element,
-                            in [Optional=DefaultIsUndefined] HTMLElement before) raises(DOMException);
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
+    [SetterRaisesException] attribute unsigned long length;
+
+    Node item([IsIndex,Optional=DefaultIsUndefined] unsigned long index);
+    Node namedItem([Optional=DefaultIsUndefined] DOMString name);
+     [RaisesException] void add([Optional=DefaultIsUndefined] HTMLElement element,
+                            [Optional=DefaultIsUndefined] HTMLElement before);
     // In JavaScript, we support both option index and option object parameters.
     // As of this writing this cannot be auto-generated.
     [Custom] void remove(/* indexOrOption */);
-#else
-    void remove(in long index);
-#endif
     readonly attribute HTMLCollection selectedOptions;
     attribute long selectedIndex;
     [TreatNullAs=NullString] attribute DOMString value;
@@ -61,7 +52,7 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
 };
diff --git a/html/HTMLSourceElement.idl b/html/HTMLSourceElement.idl
index d7880e4..4d23c79 100644
--- a/html/HTMLSourceElement.idl
+++ b/html/HTMLSourceElement.idl
@@ -26,7 +26,7 @@
 [
     Conditional=VIDEO,
 ] interface HTMLSourceElement : HTMLElement {
-attribute [Reflect, URL] DOMString src;
+[Reflect, URL] attribute DOMString src;
 attribute DOMString type;
 attribute DOMString media;
 };
diff --git a/html/HTMLSpanElement.idl b/html/HTMLSpanElement.idl
index 5924757..49eb843 100644
--- a/html/HTMLSpanElement.idl
+++ b/html/HTMLSpanElement.idl
@@ -25,7 +25,7 @@
 
 // http://www.whatwg.org/specs/web-apps/current-work/#htmlspanelement
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLSpanElement : HTMLElement {
 };
 
diff --git a/html/HTMLStyleElement.idl b/html/HTMLStyleElement.idl
index a14165d..70efc26 100644
--- a/html/HTMLStyleElement.idl
+++ b/html/HTMLStyleElement.idl
@@ -20,7 +20,7 @@
 
 interface HTMLStyleElement : HTMLElement {
     attribute boolean disabled;
-    [Conditional=STYLE_SCOPED, V8EnabledAtRuntime=styleScoped] attribute boolean scoped;
+    [EnabledAtRuntime=styleScoped] attribute boolean scoped;
     [Reflect] attribute DOMString media;
     [Reflect] attribute DOMString type;
 
diff --git a/html/HTMLTableElement.idl b/html/HTMLTableElement.idl
index 470af56..0b42d00 100644
--- a/html/HTMLTableElement.idl
+++ b/html/HTMLTableElement.idl
@@ -19,9 +19,9 @@
  */
 
 interface HTMLTableElement : HTMLElement {
-    attribute HTMLTableCaptionElement caption setter raises(DOMException);
-    attribute HTMLTableSectionElement tHead setter raises(DOMException);
-    attribute HTMLTableSectionElement tFoot setter raises(DOMException);
+    [SetterRaisesException] attribute HTMLTableCaptionElement caption;
+    [SetterRaisesException] attribute HTMLTableSectionElement tHead;
+    [SetterRaisesException] attribute HTMLTableSectionElement tFoot;
 
     readonly attribute HTMLCollection rows;
     readonly attribute HTMLCollection tBodies;
@@ -45,7 +45,7 @@
     HTMLElement createCaption();
     void deleteCaption();
 
-    HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
-    void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+    [RaisesException] HTMLElement insertRow([Optional=DefaultIsUndefined] long index);
+    [RaisesException] void deleteRow([Optional=DefaultIsUndefined] long index);
 };
 
diff --git a/html/HTMLTableRowElement.idl b/html/HTMLTableRowElement.idl
index 15f054f..5b26eee 100644
--- a/html/HTMLTableRowElement.idl
+++ b/html/HTMLTableRowElement.idl
@@ -27,7 +27,7 @@
     [Reflect=char] attribute DOMString ch;
     [Reflect=charoff] attribute DOMString chOff;
     [Reflect] attribute DOMString vAlign;
-    HTMLElement insertCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
-    void deleteCell(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+    [RaisesException] HTMLElement insertCell([Optional=DefaultIsUndefined] long index);
+    [RaisesException] void deleteCell([Optional=DefaultIsUndefined] long index);
 };
 
diff --git a/html/HTMLTableSectionElement.idl b/html/HTMLTableSectionElement.idl
index e198bd6..9e78a75 100644
--- a/html/HTMLTableSectionElement.idl
+++ b/html/HTMLTableSectionElement.idl
@@ -24,7 +24,7 @@
     [Reflect=charoff] attribute DOMString chOff;
     [Reflect] attribute DOMString vAlign;
     readonly attribute HTMLCollection rows;
-    HTMLElement insertRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
-    void deleteRow(in [Optional=DefaultIsUndefined] long index) raises(DOMException);
+    [RaisesException] HTMLElement insertRow([Optional=DefaultIsUndefined] long index);
+    [RaisesException] void deleteRow([Optional=DefaultIsUndefined] long index);
 };
 
diff --git a/html/HTMLTemplateElement.idl b/html/HTMLTemplateElement.idl
index 3599d01..8e91f1c 100644
--- a/html/HTMLTemplateElement.idl
+++ b/html/HTMLTemplateElement.idl
@@ -29,6 +29,6 @@
  */
 
 interface HTMLTemplateElement : HTMLElement {
-    [V8CacheAttributeForGC] readonly attribute DocumentFragment content;
+    [CacheAttributeForGC] readonly attribute DocumentFragment content;
 };
 
diff --git a/html/HTMLTextAreaElement.idl b/html/HTMLTextAreaElement.idl
index ce93026..cbcf138 100644
--- a/html/HTMLTextAreaElement.idl
+++ b/html/HTMLTextAreaElement.idl
@@ -25,7 +25,7 @@
     [Reflect] attribute DOMString dirName;
     [Reflect] attribute boolean disabled;
     readonly attribute HTMLFormElement form;
-    attribute long maxLength setter raises(DOMException);
+    [SetterRaisesException] attribute long maxLength;
     [Reflect] attribute DOMString name;
     [Reflect] attribute DOMString placeholder;
     [Reflect] attribute boolean readOnly;
@@ -42,7 +42,7 @@
     readonly attribute ValidityState validity;
     readonly attribute DOMString validationMessage;
     boolean checkValidity();
-    void setCustomValidity(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
+    void setCustomValidity([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString error);
 
     readonly attribute NodeList labels;
 
@@ -51,21 +51,13 @@
     attribute long selectionEnd;
     attribute DOMString selectionDirection;
 
-    void setRangeText(in DOMString replacement) raises(DOMException);
-    void setRangeText(in DOMString replacement,
-                        in unsigned long start,
-                        in unsigned long end,
-                        in [Optional=DefaultIsNullString] DOMString selectionMode) raises(DOMException);
+    [RaisesException] void setRangeText(DOMString replacement);
+    [RaisesException] void setRangeText(DOMString replacement,
+                        unsigned long start,
+                        unsigned long end,
+                        [Optional=DefaultIsNullString] DOMString selectionMode);
 
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    void setSelectionRange(in long start, in long end);
-#else
-    void setSelectionRange(in [Optional=DefaultIsUndefined] long start,
-                           in [Optional=DefaultIsUndefined] long end,
-                           in [Optional] DOMString direction);
-#endif
-
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    [Reflect] attribute DOMString accessKey;
-#endif
+    void setSelectionRange([Optional=DefaultIsUndefined] long start,
+                           [Optional=DefaultIsUndefined] long end,
+                           [Optional] DOMString direction);
 };
diff --git a/html/HTMLTrackElement.idl b/html/HTMLTrackElement.idl
index 07b781b..312cc1a 100644
--- a/html/HTMLTrackElement.idl
+++ b/html/HTMLTrackElement.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack
+    EnabledAtRuntime=webkitVideoTrack
 ] interface HTMLTrackElement : HTMLElement {
     attribute DOMString kind;
     [Reflect, URL] attribute DOMString src;
diff --git a/html/HTMLUnknownElement.idl b/html/HTMLUnknownElement.idl
index 28e04c1..7d7bbc3 100644
--- a/html/HTMLUnknownElement.idl
+++ b/html/HTMLUnknownElement.idl
@@ -27,7 +27,7 @@
  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 [
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface HTMLUnknownElement : HTMLElement {
 };
 
diff --git a/html/HTMLVideoElement.idl b/html/HTMLVideoElement.idl
index c544f68..0600d80 100644
--- a/html/HTMLVideoElement.idl
+++ b/html/HTMLVideoElement.idl
@@ -35,18 +35,18 @@
     readonly attribute boolean webkitSupportsFullscreen;
     readonly attribute boolean webkitDisplayingFullscreen;
 
-    void webkitEnterFullscreen() raises (DOMException);
+    [RaisesException] void webkitEnterFullscreen();
     void webkitExitFullscreen();
 
     // Note the different capitalization of the "S" in FullScreen.
-    void webkitEnterFullScreen() raises (DOMException);
+    [RaisesException] void webkitEnterFullScreen();
     void webkitExitFullScreen();
 
     // The number of frames that have been decoded and made available for
     // playback.
-    [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitDecodedFrameCount;
+    readonly attribute unsigned long webkitDecodedFrameCount;
 
     // The number of decoded frames that have been dropped by the player
     // for performance reasons during playback.
-    [Conditional=MEDIA_STATISTICS] readonly attribute unsigned long webkitDroppedFrameCount;
+    readonly attribute unsigned long webkitDroppedFrameCount;
 };
diff --git a/html/ImageData.idl b/html/ImageData.idl
index 44102a1..db2b4a7 100644
--- a/html/ImageData.idl
+++ b/html/ImageData.idl
@@ -32,8 +32,5 @@
 ] interface ImageData {
     readonly attribute long width;
     readonly attribute long height;
-#if !defined(LANGUAGE_JAVASCRIPT) || !LANGUAGE_JAVASCRIPT
-    readonly attribute Uint8ClampedArray data;
-#endif
 };
 
diff --git a/html/MediaController.idl b/html/MediaController.idl
index 4b31f5c..8999ad2 100644
--- a/html/MediaController.idl
+++ b/html/MediaController.idl
@@ -33,8 +33,7 @@
     readonly attribute TimeRanges seekable;
 
     readonly attribute double duration;
-    attribute double currentTime
-        setter raises (DOMException);
+    [SetterRaisesException] attribute double currentTime;
 
     readonly attribute boolean paused;
     readonly attribute TimeRanges played;
@@ -46,17 +45,15 @@
     attribute double defaultPlaybackRate;
     attribute double playbackRate;
 
-    attribute double volume
-        setter raises (DOMException);
+    [SetterRaisesException] attribute double volume;
     attribute boolean muted;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/html/MediaKeyError.idl b/html/MediaKeyError.idl
index 9631551..ea174e1 100644
--- a/html/MediaKeyError.idl
+++ b/html/MediaKeyError.idl
@@ -25,7 +25,7 @@
 
 interface [
     Conditional=ENCRYPTED_MEDIA|ENCRYPTED_MEDIA_V2,
-    V8EnabledAtRuntime=encryptedMedia, 
+    EnabledAtRuntime=encryptedMedia, 
     ImplementationLacksVTable
 ] MediaKeyError {
     const unsigned short MEDIA_KEYERR_UNKNOWN = 1;
diff --git a/html/MediaKeyEvent.idl b/html/MediaKeyEvent.idl
index f4d0d86..546a93b 100644
--- a/html/MediaKeyEvent.idl
+++ b/html/MediaKeyEvent.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=ENCRYPTED_MEDIA,
-    V8EnabledAtRuntime=encryptedMedia,
+    EnabledAtRuntime=encryptedMedia,
     ConstructorTemplate=Event 
 ] interface MediaKeyEvent : Event {
     [InitializedByEventConstructor] readonly attribute DOMString keySystem;
diff --git a/html/MicroDataItemValue.idl b/html/MicroDataItemValue.idl
index fc1a3ac..3581181 100644
--- a/html/MicroDataItemValue.idl
+++ b/html/MicroDataItemValue.idl
@@ -31,7 +31,6 @@
 [
     Conditional=MICRODATA,
     CustomToJSObject,
-    OmitConstructor,
-    V8NoWrapperCache
+    NoWrapperCache
 ] interface MicroDataItemValue {
 };
diff --git a/html/TimeRanges.idl b/html/TimeRanges.idl
index 61da093..c2e7d05 100644
--- a/html/TimeRanges.idl
+++ b/html/TimeRanges.idl
@@ -28,9 +28,7 @@
     ImplementationLacksVTable
 ] interface TimeRanges {
     readonly attribute unsigned long length;
-    float start(in unsigned long index)
-        raises (DOMException);
-    float end(in unsigned long index)
-        raises (DOMException);
+    [RaisesException] double start(unsigned long index);
+    [RaisesException] double end(unsigned long index);
 };
 
diff --git a/html/ValidityState.idl b/html/ValidityState.idl
index 069e7b5..963c830 100644
--- a/html/ValidityState.idl
+++ b/html/ValidityState.idl
@@ -21,7 +21,6 @@
  */
 
 [
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface ValidityState {
     readonly attribute boolean         valueMissing;
diff --git a/html/canvas/ArrayBuffer.idl b/html/canvas/ArrayBuffer.idl
index 47fa94d..e29718f 100644
--- a/html/canvas/ArrayBuffer.idl
+++ b/html/canvas/ArrayBuffer.idl
@@ -25,11 +25,10 @@
 
 [
     CustomConstructor,
-    ConstructorParameters=1,
     ImplementationNamespace=WTF,
     ImplementationLacksVTable
 ] interface ArrayBuffer {
     readonly attribute unsigned long byteLength;
-    ArrayBuffer slice(in long begin, in [Optional] long end);
+    ArrayBuffer slice(long begin, [Optional] long end);
 };
 
diff --git a/html/canvas/CanvasGradient.idl b/html/canvas/CanvasGradient.idl
index 17580c8..9dc1e7a 100644
--- a/html/canvas/CanvasGradient.idl
+++ b/html/canvas/CanvasGradient.idl
@@ -26,9 +26,8 @@
     ImplementationLacksVTable
 ] interface CanvasGradient {
 
-    void addColorStop(in [Optional=DefaultIsUndefined] float offset, 
-                      in [Optional=DefaultIsUndefined] DOMString color)
-        raises (DOMException);
+    [RaisesException] void addColorStop([Optional=DefaultIsUndefined] float offset, 
+                      [Optional=DefaultIsUndefined] DOMString color);
 
 };
 
diff --git a/html/canvas/CanvasRenderingContext2D.idl b/html/canvas/CanvasRenderingContext2D.idl
index 65892f7..cbd4032 100644
--- a/html/canvas/CanvasRenderingContext2D.idl
+++ b/html/canvas/CanvasRenderingContext2D.idl
@@ -30,39 +30,37 @@
     void save();
     void restore();
 
-    void scale(in [Optional=DefaultIsUndefined] float sx,
-               in [Optional=DefaultIsUndefined] float sy);
-    void rotate(in [Optional=DefaultIsUndefined] float angle);
-    void translate(in [Optional=DefaultIsUndefined] float tx,
-                   in [Optional=DefaultIsUndefined] float ty);
-    void transform(in [Optional=DefaultIsUndefined] float m11,
-                   in [Optional=DefaultIsUndefined] float m12,
-                   in [Optional=DefaultIsUndefined] float m21,
-                   in [Optional=DefaultIsUndefined] float m22,
-                   in [Optional=DefaultIsUndefined] float dx,
-                   in [Optional=DefaultIsUndefined] float dy);
-    void setTransform(in [Optional=DefaultIsUndefined] float m11,
-                      in [Optional=DefaultIsUndefined] float m12,
-                      in [Optional=DefaultIsUndefined] float m21,
-                      in [Optional=DefaultIsUndefined] float m22,
-                      in [Optional=DefaultIsUndefined] float dx,
-                      in [Optional=DefaultIsUndefined] float dy);
+    void scale([Optional=DefaultIsUndefined] float sx,
+               [Optional=DefaultIsUndefined] float sy);
+    void rotate([Optional=DefaultIsUndefined] float angle);
+    void translate([Optional=DefaultIsUndefined] float tx,
+                   [Optional=DefaultIsUndefined] float ty);
+    void transform([Optional=DefaultIsUndefined] float m11,
+                   [Optional=DefaultIsUndefined] float m12,
+                   [Optional=DefaultIsUndefined] float m21,
+                   [Optional=DefaultIsUndefined] float m22,
+                   [Optional=DefaultIsUndefined] float dx,
+                   [Optional=DefaultIsUndefined] float dy);
+    void setTransform([Optional=DefaultIsUndefined] float m11,
+                      [Optional=DefaultIsUndefined] float m12,
+                      [Optional=DefaultIsUndefined] float m21,
+                      [Optional=DefaultIsUndefined] float m22,
+                      [Optional=DefaultIsUndefined] float dx,
+                      [Optional=DefaultIsUndefined] float dy);
 
     attribute float globalAlpha;
     [TreatNullAs=NullString] attribute DOMString globalCompositeOperation;
 
-    CanvasGradient createLinearGradient(in [Optional=DefaultIsUndefined] float x0,
-                                        in [Optional=DefaultIsUndefined] float y0,
-                                        in [Optional=DefaultIsUndefined] float x1,
-                                        in [Optional=DefaultIsUndefined] float y1)
-        raises (DOMException);
-    CanvasGradient createRadialGradient(in [Optional=DefaultIsUndefined] float x0,
-                                        in [Optional=DefaultIsUndefined] float y0,
-                                        in [Optional=DefaultIsUndefined] float r0,
-                                        in [Optional=DefaultIsUndefined] float x1,
-                                        in [Optional=DefaultIsUndefined] float y1,
-                                        in [Optional=DefaultIsUndefined] float r1)
-        raises (DOMException);
+    [RaisesException] CanvasGradient createLinearGradient([Optional=DefaultIsUndefined] float x0,
+                                        [Optional=DefaultIsUndefined] float y0,
+                                        [Optional=DefaultIsUndefined] float x1,
+                                        [Optional=DefaultIsUndefined] float y1);
+    [RaisesException] CanvasGradient createRadialGradient([Optional=DefaultIsUndefined] float x0,
+                                        [Optional=DefaultIsUndefined] float y0,
+                                        [Optional=DefaultIsUndefined] float r0,
+                                        [Optional=DefaultIsUndefined] float x1,
+                                        [Optional=DefaultIsUndefined] float y1,
+                                        [Optional=DefaultIsUndefined] float r1);
 
     attribute float lineWidth;
     [TreatNullAs=NullString] attribute DOMString lineCap;
@@ -74,175 +72,148 @@
     attribute float shadowBlur;
     [TreatNullAs=NullString] attribute DOMString shadowColor;
 
-    void setLineDash(in sequence<float> dash);
+    void setLineDash(sequence<float> dash);
     sequence<float> getLineDash();
     attribute float lineDashOffset;
 
-    // FIXME: These attributes should also be implemented for V8.
-#if !(defined(V8_BINDING) && V8_BINDING)
-    [Custom] attribute Array webkitLineDash;
-    attribute float webkitLineDashOffset;
-#endif
+    // FIXME: These attributes should be implemented.
+    // [Custom] attribute Array webkitLineDash;
+    // attribute float webkitLineDashOffset;
 
-    void clearRect(in [Optional=DefaultIsUndefined] float x,
-                   in [Optional=DefaultIsUndefined] float y,
-                   in [Optional=DefaultIsUndefined] float width,
-                   in [Optional=DefaultIsUndefined] float height);
-    void fillRect(in [Optional=DefaultIsUndefined] float x,
-                  in [Optional=DefaultIsUndefined] float y,
-                  in [Optional=DefaultIsUndefined] float width,
-                  in [Optional=DefaultIsUndefined] float height);
+    void clearRect([Optional=DefaultIsUndefined] float x,
+                   [Optional=DefaultIsUndefined] float y,
+                   [Optional=DefaultIsUndefined] float width,
+                   [Optional=DefaultIsUndefined] float height);
+    void fillRect([Optional=DefaultIsUndefined] float x,
+                  [Optional=DefaultIsUndefined] float y,
+                  [Optional=DefaultIsUndefined] float width,
+                  [Optional=DefaultIsUndefined] float height);
 
     void beginPath();
 
-#if defined(ENABLE_CANVAS_PATH) && ENABLE_CANVAS_PATH
     attribute DOMPath currentPath;
-#endif
 
     // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
     void closePath();
-    void moveTo(in [Optional=DefaultIsUndefined] float x,
-                in [Optional=DefaultIsUndefined] float y);
-    void lineTo(in [Optional=DefaultIsUndefined] float x,
-                in [Optional=DefaultIsUndefined] float y);
-    void quadraticCurveTo(in [Optional=DefaultIsUndefined] float cpx,
-                          in [Optional=DefaultIsUndefined] float cpy,
-                          in [Optional=DefaultIsUndefined] float x,
-                          in [Optional=DefaultIsUndefined] float y);
-    void bezierCurveTo(in [Optional=DefaultIsUndefined] float cp1x,
-                       in [Optional=DefaultIsUndefined] float cp1y,
-                       in [Optional=DefaultIsUndefined] float cp2x,
-                       in [Optional=DefaultIsUndefined] float cp2y,
-                       in [Optional=DefaultIsUndefined] float x,
-                       in [Optional=DefaultIsUndefined] float y);
-    void arcTo(in [Optional=DefaultIsUndefined] float x1,
-               in [Optional=DefaultIsUndefined] float y1,
-               in [Optional=DefaultIsUndefined] float x2,
-               in [Optional=DefaultIsUndefined] float y2,
-               in [Optional=DefaultIsUndefined] float radius)
-        raises (DOMException);
-    void rect(in [Optional=DefaultIsUndefined] float x,
-              in [Optional=DefaultIsUndefined] float y,
-              in [Optional=DefaultIsUndefined] float width,
-              in [Optional=DefaultIsUndefined] float height);
-    void arc(in [Optional=DefaultIsUndefined] float x,
-             in [Optional=DefaultIsUndefined] float y,
-             in [Optional=DefaultIsUndefined] float radius,
-             in [Optional=DefaultIsUndefined] float startAngle,
-             in [Optional=DefaultIsUndefined] float endAngle,
-             in [Optional=DefaultIsUndefined] boolean anticlockwise)
-        raises (DOMException);
+    void moveTo([Optional=DefaultIsUndefined] float x,
+                [Optional=DefaultIsUndefined] float y);
+    void lineTo([Optional=DefaultIsUndefined] float x,
+                [Optional=DefaultIsUndefined] float y);
+    void quadraticCurveTo([Optional=DefaultIsUndefined] float cpx,
+                          [Optional=DefaultIsUndefined] float cpy,
+                          [Optional=DefaultIsUndefined] float x,
+                          [Optional=DefaultIsUndefined] float y);
+    void bezierCurveTo([Optional=DefaultIsUndefined] float cp1x,
+                       [Optional=DefaultIsUndefined] float cp1y,
+                       [Optional=DefaultIsUndefined] float cp2x,
+                       [Optional=DefaultIsUndefined] float cp2y,
+                       [Optional=DefaultIsUndefined] float x,
+                       [Optional=DefaultIsUndefined] float y);
+    [RaisesException] void arcTo([Optional=DefaultIsUndefined] float x1,
+               [Optional=DefaultIsUndefined] float y1,
+               [Optional=DefaultIsUndefined] float x2,
+               [Optional=DefaultIsUndefined] float y2,
+               [Optional=DefaultIsUndefined] float radius);
+    void rect([Optional=DefaultIsUndefined] float x,
+              [Optional=DefaultIsUndefined] float y,
+              [Optional=DefaultIsUndefined] float width,
+              [Optional=DefaultIsUndefined] float height);
+    [RaisesException] void arc([Optional=DefaultIsUndefined] float x,
+             [Optional=DefaultIsUndefined] float y,
+             [Optional=DefaultIsUndefined] float radius,
+             [Optional=DefaultIsUndefined] float startAngle,
+             [Optional=DefaultIsUndefined] float endAngle,
+             [Optional=DefaultIsUndefined] boolean anticlockwise);
 
-    void fill(in [Optional] CanvasWindingRule winding);
+    void fill([Optional] CanvasWindingRule winding);
     void stroke();
-    void clip(in [Optional] CanvasWindingRule winding);
-    boolean isPointInPath(in [Optional=DefaultIsUndefined] float x,
-                          in [Optional=DefaultIsUndefined] float y,
-                          in [Optional] CanvasWindingRule winding);
-    boolean isPointInStroke(in [Optional=DefaultIsUndefined] float x,
-                            in [Optional=DefaultIsUndefined] float y);
+    void clip([Optional] CanvasWindingRule winding);
+    boolean isPointInPath([Optional=DefaultIsUndefined] float x,
+                          [Optional=DefaultIsUndefined] float y,
+                          [Optional] CanvasWindingRule winding);
+    boolean isPointInStroke([Optional=DefaultIsUndefined] float x,
+                            [Optional=DefaultIsUndefined] float y);
 
     // text
     attribute DOMString font;
     attribute DOMString textAlign;
     attribute DOMString textBaseline;
 
-    TextMetrics measureText(in [Optional=DefaultIsUndefined] DOMString text);
+    TextMetrics measureText([Optional=DefaultIsUndefined] DOMString text);
 
     // other
 
-    void setAlpha(in [Optional=DefaultIsUndefined] float alpha);
-    void setCompositeOperation(in [Optional=DefaultIsUndefined] DOMString compositeOperation);
+    void setAlpha([Optional=DefaultIsUndefined] float alpha);
+    void setCompositeOperation([Optional=DefaultIsUndefined] DOMString compositeOperation);
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-    void setLineWidth(in [Optional=DefaultIsUndefined] float width);
-    void setLineCap(in [Optional=DefaultIsUndefined] DOMString cap);
-    void setLineJoin(in [Optional=DefaultIsUndefined] DOMString join);
-    void setMiterLimit(in [Optional=DefaultIsUndefined] float limit);
-#endif
+    void setLineWidth([Optional=DefaultIsUndefined] float width);
+    void setLineCap([Optional=DefaultIsUndefined] DOMString cap);
+    void setLineJoin([Optional=DefaultIsUndefined] DOMString join);
+    void setMiterLimit([Optional=DefaultIsUndefined] float limit);
 
     void clearShadow();
 
-    void fillText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
-    void strokeText(in DOMString text, in float x, in float y, in [Optional] float maxWidth);
+    void fillText(DOMString text, float x, float y, [Optional] float maxWidth);
+    void strokeText(DOMString text, float x, float y, [Optional] float maxWidth);
 
-    void setStrokeColor(in [StrictTypeChecking] DOMString color, in [Optional] float alpha);
-    void setStrokeColor(in float grayLevel, in [Optional] float alpha);
-    void setStrokeColor(in float r, in float g, in float b, in float a);
-    void setStrokeColor(in float c, in float m, in float y, in float k, in float a);
+    void setStrokeColor([StrictTypeChecking] DOMString color, [Optional] float alpha);
+    void setStrokeColor(float grayLevel, [Optional] float alpha);
+    void setStrokeColor(float r, float g, float b, float a);
+    void setStrokeColor(float c, float m, float y, float k, float a);
 
-    void setFillColor(in [StrictTypeChecking] DOMString color, in [Optional] float alpha);
-    void setFillColor(in float grayLevel, in [Optional] float alpha);
-    void setFillColor(in float r, in float g, in float b, in float a);
-    void setFillColor(in float c, in float m, in float y, in float k, in float a);
+    void setFillColor([StrictTypeChecking] DOMString color, [Optional] float alpha);
+    void setFillColor(float grayLevel, [Optional] float alpha);
+    void setFillColor(float r, float g, float b, float a);
+    void setFillColor(float c, float m, float y, float k, float a);
 
-    void strokeRect(in [Optional=DefaultIsUndefined] float x,
-                    in [Optional=DefaultIsUndefined] float y,
-                    in [Optional=DefaultIsUndefined] float width,
-                    in [Optional=DefaultIsUndefined] float height,
-                    in [Optional] float lineWidth);
+    void strokeRect([Optional=DefaultIsUndefined] float x,
+                    [Optional=DefaultIsUndefined] float y,
+                    [Optional=DefaultIsUndefined] float width,
+                    [Optional=DefaultIsUndefined] float height,
+                    [Optional] float lineWidth);
 
-    void drawImage(in HTMLImageElement? image, in float x, in float y)
-        raises (DOMException);
-    void drawImage(in HTMLImageElement? image, in float x, in float y, in float width, in float height)
-        raises (DOMException);
-    void drawImage(in HTMLImageElement? image, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
-        raises (DOMException);
-    void drawImage(in HTMLCanvasElement? canvas, in float x, in float y)
-        raises (DOMException);
-    void drawImage(in HTMLCanvasElement? canvas, in float x, in float y, in float width, in float height)
-        raises (DOMException);
-    void drawImage(in HTMLCanvasElement? canvas, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
-        raises (DOMException);
+    [RaisesException] void drawImage(HTMLImageElement? image, float x, float y);
+    [RaisesException] void drawImage(HTMLImageElement? image, float x, float y, float width, float height);
+    [RaisesException] void drawImage(HTMLImageElement? image, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
+    [RaisesException] void drawImage(HTMLCanvasElement? canvas, float x, float y);
+    [RaisesException] void drawImage(HTMLCanvasElement? canvas, float x, float y, float width, float height);
+    [RaisesException] void drawImage(HTMLCanvasElement? canvas, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
 #if defined(ENABLE_VIDEO) && ENABLE_VIDEO
-    void drawImage(in HTMLVideoElement? video, in float x, in float y)
-        raises (DOMException);
-    void drawImage(in HTMLVideoElement? video, in float x, in float y, in float width, in float height)
-        raises (DOMException);
-    void drawImage(in HTMLVideoElement? video, in float sx, in float sy, in float sw, in float sh, in float dx, in float dy, in float dw, in float dh)
-        raises (DOMException);
+    [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y);
+    [RaisesException] void drawImage(HTMLVideoElement? video, float x, float y, float width, float height);
+    [RaisesException] void drawImage(HTMLVideoElement? video, float sx, float sy, float sw, float sh, float dx, float dy, float dw, float dh);
 #endif
 
-    void drawImageFromRect(in HTMLImageElement image,
-                           in [Optional] float sx, in [Optional] float sy, in [Optional] float sw, in [Optional] float sh,
-                           in [Optional] float dx, in [Optional] float dy, in [Optional] float dw, in [Optional] float dh,
-                           in [Optional] DOMString compositeOperation);
+    void drawImageFromRect(HTMLImageElement image,
+                           [Optional] float sx, [Optional] float sy, [Optional] float sw, [Optional] float sh,
+                           [Optional] float dx, [Optional] float dy, [Optional] float dw, [Optional] float dh,
+                           [Optional] DOMString compositeOperation);
 
-    void setShadow(in float width, in float height, in float blur, in [Optional, StrictTypeChecking] DOMString color, in [Optional] float alpha);
-    void setShadow(in float width, in float height, in float blur, in float grayLevel, in [Optional] float alpha);
-    void setShadow(in float width, in float height, in float blur, in float r, in float g, in float b, in float a);
-    void setShadow(in float width, in float height, in float blur, in float c, in float m, in float y, in float k, in float a);
+    void setShadow(float width, float height, float blur, [Optional, StrictTypeChecking] DOMString color, [Optional] float alpha);
+    void setShadow(float width, float height, float blur, float grayLevel, [Optional] float alpha);
+    void setShadow(float width, float height, float blur, float r, float g, float b, float a);
+    void setShadow(float width, float height, float blur, float c, float m, float y, float k, float a);
 
-    void putImageData(in ImageData? imagedata, in float dx, in float dy)
-        raises(DOMException);
-    void putImageData(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
-        raises(DOMException);
+    [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy);
+    [RaisesException] void putImageData(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
 
-    void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy)
-        raises(DOMException);
-    void webkitPutImageDataHD(in ImageData? imagedata, in float dx, in float dy, in float dirtyX, in float dirtyY, in float dirtyWidth, in float dirtyHeight)
-        raises(DOMException);
+    [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy);
+    [RaisesException] void webkitPutImageDataHD(ImageData? imagedata, float dx, float dy, float dirtyX, float dirtyY, float dirtyWidth, float dirtyHeight);
 
-    CanvasPattern createPattern(in HTMLCanvasElement? canvas, in [TreatNullAs=NullString] DOMString repetitionType)
-        raises (DOMException);
-    CanvasPattern createPattern(in HTMLImageElement? image, in [TreatNullAs=NullString] DOMString repetitionType)
-        raises (DOMException);
-    ImageData createImageData(in ImageData? imagedata)
-        raises (DOMException);
-    ImageData createImageData(in float sw, in float sh)
-        raises (DOMException);
+    [RaisesException] CanvasPattern createPattern(HTMLCanvasElement? canvas, [TreatNullAs=NullString] DOMString repetitionType);
+    [RaisesException] CanvasPattern createPattern(HTMLImageElement? image, [TreatNullAs=NullString] DOMString repetitionType);
+    [RaisesException] ImageData createImageData(ImageData? imagedata);
+    [RaisesException] ImageData createImageData(float sw, float sh);
 
     [Custom] attribute custom strokeStyle;
     [Custom] attribute custom fillStyle;
 
     // pixel manipulation
-    ImageData getImageData(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
-                           in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
-        raises(DOMException);
+    [RaisesException] ImageData getImageData([Optional=DefaultIsUndefined] float sx, [Optional=DefaultIsUndefined] float sy,
+                           [Optional=DefaultIsUndefined] float sw, [Optional=DefaultIsUndefined] float sh);
 
-    ImageData webkitGetImageDataHD(in [Optional=DefaultIsUndefined] float sx, in [Optional=DefaultIsUndefined] float sy,
-                                   in [Optional=DefaultIsUndefined] float sw, in [Optional=DefaultIsUndefined] float sh)
-        raises(DOMException);
+    [RaisesException] ImageData webkitGetImageDataHD([Optional=DefaultIsUndefined] float sx, [Optional=DefaultIsUndefined] float sy,
+                                   [Optional=DefaultIsUndefined] float sw, [Optional=DefaultIsUndefined] float sh);
 
     readonly attribute float webkitBackingStorePixelRatio;
 
diff --git a/html/canvas/DOMPath.idl b/html/canvas/DOMPath.idl
index 178dfea..ae4a06a 100644
--- a/html/canvas/DOMPath.idl
+++ b/html/canvas/DOMPath.idl
@@ -27,47 +27,44 @@
  */
 
 interface [
-    V8EnabledAtRuntime=canvasPath,
+    EnabledAtRuntime=canvasPath,
     Constructor,
-    Constructor(in DOMPath path),
+    Constructor(DOMPath path),
 #if defined(ENABLE_SVG) && ENABLE_SVG
-    Constructor(in DOMString text),
+    Constructor(DOMString text),
 #endif
-    Conditional=CANVAS_PATH,
     InterfaceName=Path
 ] DOMPath {
 
     // FIXME: These methods should be shared with CanvasRenderingContext2D in the CanvasPathMethods interface.
     void closePath();
-    void moveTo(in [Optional=DefaultIsUndefined] float x,
-                in [Optional=DefaultIsUndefined] float y);
-    void lineTo(in [Optional=DefaultIsUndefined] float x,
-                in [Optional=DefaultIsUndefined] float y);
-    void quadraticCurveTo(in [Optional=DefaultIsUndefined] float cpx,
-                          in [Optional=DefaultIsUndefined] float cpy,
-                          in [Optional=DefaultIsUndefined] float x,
-                          in [Optional=DefaultIsUndefined] float y);
-    void bezierCurveTo(in [Optional=DefaultIsUndefined] float cp1x,
-                       in [Optional=DefaultIsUndefined] float cp1y,
-                       in [Optional=DefaultIsUndefined] float cp2x,
-                       in [Optional=DefaultIsUndefined] float cp2y,
-                       in [Optional=DefaultIsUndefined] float x,
-                       in [Optional=DefaultIsUndefined] float y);
-    void arcTo(in [Optional=DefaultIsUndefined] float x1,
-               in [Optional=DefaultIsUndefined] float y1,
-               in [Optional=DefaultIsUndefined] float x2,
-               in [Optional=DefaultIsUndefined] float y2,
-               in [Optional=DefaultIsUndefined] float radius)
-        raises (DOMException);
-    void rect(in [Optional=DefaultIsUndefined] float x,
-              in [Optional=DefaultIsUndefined] float y,
-              in [Optional=DefaultIsUndefined] float width,
-              in [Optional=DefaultIsUndefined] float height);
-    void arc(in [Optional=DefaultIsUndefined] float x,
-             in [Optional=DefaultIsUndefined] float y,
-             in [Optional=DefaultIsUndefined] float radius,
-             in [Optional=DefaultIsUndefined] float startAngle,
-             in [Optional=DefaultIsUndefined] float endAngle,
-             in [Optional=DefaultIsUndefined] boolean anticlockwise)
-        raises (DOMException);
+    void moveTo([Optional=DefaultIsUndefined] float x,
+                [Optional=DefaultIsUndefined] float y);
+    void lineTo([Optional=DefaultIsUndefined] float x,
+                [Optional=DefaultIsUndefined] float y);
+    void quadraticCurveTo([Optional=DefaultIsUndefined] float cpx,
+                          [Optional=DefaultIsUndefined] float cpy,
+                          [Optional=DefaultIsUndefined] float x,
+                          [Optional=DefaultIsUndefined] float y);
+    void bezierCurveTo([Optional=DefaultIsUndefined] float cp1x,
+                       [Optional=DefaultIsUndefined] float cp1y,
+                       [Optional=DefaultIsUndefined] float cp2x,
+                       [Optional=DefaultIsUndefined] float cp2y,
+                       [Optional=DefaultIsUndefined] float x,
+                       [Optional=DefaultIsUndefined] float y);
+    [RaisesException] void arcTo([Optional=DefaultIsUndefined] float x1,
+               [Optional=DefaultIsUndefined] float y1,
+               [Optional=DefaultIsUndefined] float x2,
+               [Optional=DefaultIsUndefined] float y2,
+               [Optional=DefaultIsUndefined] float radius);
+    void rect([Optional=DefaultIsUndefined] float x,
+              [Optional=DefaultIsUndefined] float y,
+              [Optional=DefaultIsUndefined] float width,
+              [Optional=DefaultIsUndefined] float height);
+    [RaisesException] void arc([Optional=DefaultIsUndefined] float x,
+             [Optional=DefaultIsUndefined] float y,
+             [Optional=DefaultIsUndefined] float radius,
+             [Optional=DefaultIsUndefined] float startAngle,
+             [Optional=DefaultIsUndefined] float endAngle,
+             [Optional=DefaultIsUndefined] boolean anticlockwise);
 };
diff --git a/html/canvas/DataView.idl b/html/canvas/DataView.idl
index ce5aef4..bb923f3 100644
--- a/html/canvas/DataView.idl
+++ b/html/canvas/DataView.idl
@@ -25,53 +25,36 @@
 
 [
     CustomConstructor,
-    ConstructorParameters=3,
     CustomToJSObject
 ] interface DataView : ArrayBufferView {
     // All these methods raise an exception if they would read or write beyond the end of the view.
 
     // We have to use custom code because our code generator does not support int8_t type.
-    // int8_t getInt8(in unsigned long byteOffset);
-    // uint8_t getUint8(in unsigned long byteOffset);
-    [Custom] any getInt8()
-        raises (DOMException);
-    [Custom] any getUint8()
-        raises (DOMException);
+    // int8_t getInt8(unsigned long byteOffset);
+    // uint8_t getUint8(unsigned long byteOffset);
+    [Custom, RaisesException] any getInt8();
+    [Custom, RaisesException] any getUint8();
 
-    [StrictTypeChecking] short getInt16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] unsigned short getUint16(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] long getInt32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] unsigned long getUint32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
+    [StrictTypeChecking, RaisesException] short getInt16(unsigned long byteOffset, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] unsigned short getUint16(unsigned long byteOffset, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] long getInt32(unsigned long byteOffset, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] unsigned long getUint32(unsigned long byteOffset, [Optional] boolean littleEndian);
 
     // Use custom code to handle NaN case for JSC.
-    [StrictTypeChecking] float getFloat32(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] double getFloat64(in unsigned long byteOffset, in [Optional] boolean littleEndian)
-        raises (DOMException);
+    [StrictTypeChecking, RaisesException] float getFloat32(unsigned long byteOffset, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] double getFloat64(unsigned long byteOffset, [Optional] boolean littleEndian);
 
     // We have to use custom code because our code generator does not support uint8_t type.
-    // void setInt8(in unsigned long byteOffset, in int8_t value);
-    // void setUint8(in unsigned long byteOffset, in uint8_t value);
-    [Custom] void setInt8()
-        raises (DOMException);
-    [Custom] void setUint8()
-        raises (DOMException);
+    // void setInt8(unsigned long byteOffset, int8_t value);
+    // void setUint8(unsigned long byteOffset, uint8_t value);
+    [Custom, RaisesException] void setInt8();
+    [Custom, RaisesException] void setUint8();
 
-    [StrictTypeChecking] void setInt16(in unsigned long byteOffset, in short value, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] void setUint16(in unsigned long byteOffset, in unsigned short value, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] void setInt32(in unsigned long byteOffset, in long value, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] void setUint32(in unsigned long byteOffset, in unsigned long value, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] void setFloat32(in unsigned long byteOffset, in float value, in [Optional] boolean littleEndian)
-        raises (DOMException);
-    [StrictTypeChecking] void setFloat64(in unsigned long byteOffset, in double value, in [Optional] boolean littleEndian)
-        raises (DOMException);
+    [StrictTypeChecking, RaisesException] void setInt16(unsigned long byteOffset, short value, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] void setUint16(unsigned long byteOffset, unsigned short value, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] void setInt32(unsigned long byteOffset, long value, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] void setUint32(unsigned long byteOffset, unsigned long value, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] void setFloat32(unsigned long byteOffset, float value, [Optional] boolean littleEndian);
+    [StrictTypeChecking, RaisesException] void setFloat64(unsigned long byteOffset, double value, [Optional] boolean littleEndian);
 };
 
diff --git a/html/canvas/EXTDrawBuffers.idl b/html/canvas/EXTDrawBuffers.idl
index 364bdbb..f348e15 100644
--- a/html/canvas/EXTDrawBuffers.idl
+++ b/html/canvas/EXTDrawBuffers.idl
@@ -27,7 +27,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface EXTDrawBuffers {
     const GLenum COLOR_ATTACHMENT0_EXT = 0x8CE0;
@@ -67,5 +66,5 @@
     const GLenum MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF;
     const GLenum MAX_DRAW_BUFFERS_EXT = 0x8824;
 
-    void drawBuffersEXT(in sequence<GLenum> buffers);
+    void drawBuffersEXT(sequence<GLenum> buffers);
 };
diff --git a/html/canvas/EXTTextureFilterAnisotropic.idl b/html/canvas/EXTTextureFilterAnisotropic.idl
index 88dac88..d8f0fa7 100644
--- a/html/canvas/EXTTextureFilterAnisotropic.idl
+++ b/html/canvas/EXTTextureFilterAnisotropic.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface EXTTextureFilterAnisotropic {
     const unsigned int TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE;
diff --git a/html/canvas/Float32Array.idl b/html/canvas/Float32Array.idl
index d6cb7b3..cf9eb72 100644
--- a/html/canvas/Float32Array.idl
+++ b/html/canvas/Float32Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,10 +36,10 @@
     const unsigned long BYTES_PER_ELEMENT = 4;
 
     readonly attribute unsigned long length;
-    Float32Array subarray(in [Optional=DefaultIsUndefined] long start, 
-                          in [Optional] long end);
+    Float32Array subarray([Optional=DefaultIsUndefined] long start, 
+                          [Optional] long end);
 
-    // void set(in Float32Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Float32Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Float64Array.idl b/html/canvas/Float64Array.idl
index 37fe7c1..9422bcf 100644
--- a/html/canvas/Float64Array.idl
+++ b/html/canvas/Float64Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,10 +36,10 @@
     const unsigned long BYTES_PER_ELEMENT = 8;
 
     readonly attribute unsigned long length;
-    Float64Array subarray(in [Optional=DefaultIsUndefined] long start, 
-                          in [Optional] long end);
+    Float64Array subarray([Optional=DefaultIsUndefined] long start, 
+                          [Optional] long end);
 
-    // void set(in Float64Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Float64Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Int16Array.idl b/html/canvas/Int16Array.idl
index 7e2b90c..b94c659 100644
--- a/html/canvas/Int16Array.idl
+++ b/html/canvas/Int16Array.idl
@@ -25,7 +25,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -36,10 +35,10 @@
     const unsigned long BYTES_PER_ELEMENT = 2;
 
     readonly attribute unsigned long length;
-    Int16Array subarray(in [Optional=DefaultIsUndefined] long start, 
-                        in [Optional] long end);
+    Int16Array subarray([Optional=DefaultIsUndefined] long start, 
+                        [Optional] long end);
 
-    // void set(in Int16Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Int16Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Int32Array.idl b/html/canvas/Int32Array.idl
index c5cbf20..461932f 100644
--- a/html/canvas/Int32Array.idl
+++ b/html/canvas/Int32Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,10 +36,10 @@
     const unsigned long BYTES_PER_ELEMENT = 4;
 
     readonly attribute unsigned long length;
-    Int32Array subarray(in [Optional=DefaultIsUndefined] long start, 
-                        in [Optional] long end);
+    Int32Array subarray([Optional=DefaultIsUndefined] long start, 
+                        [Optional] long end);
 
-    // void set(in Int32Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Int32Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Int8Array.idl b/html/canvas/Int8Array.idl
index 8b2731f..e55a031 100644
--- a/html/canvas/Int8Array.idl
+++ b/html/canvas/Int8Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,10 +36,10 @@
     const unsigned long BYTES_PER_ELEMENT = 1;
 
     readonly attribute unsigned long length;
-    Int8Array subarray(in [Optional=DefaultIsUndefined] long start, 
-                       in [Optional] long end);
+    Int8Array subarray([Optional=DefaultIsUndefined] long start, 
+                       [Optional] long end);
 
-    // void set(in Int8Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Int8Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/OESElementIndexUint.idl b/html/canvas/OESElementIndexUint.idl
index 374ee88..6e76baa 100644
--- a/html/canvas/OESElementIndexUint.idl
+++ b/html/canvas/OESElementIndexUint.idl
@@ -25,6 +25,5 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface OESElementIndexUint {
 };
diff --git a/html/canvas/OESStandardDerivatives.idl b/html/canvas/OESStandardDerivatives.idl
index 323e7c3..2ffba96 100644
--- a/html/canvas/OESStandardDerivatives.idl
+++ b/html/canvas/OESStandardDerivatives.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface OESStandardDerivatives {
     const unsigned int FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B;
diff --git a/html/canvas/OESTextureFloat.idl b/html/canvas/OESTextureFloat.idl
index 129b2cb..e58a7a3 100644
--- a/html/canvas/OESTextureFloat.idl
+++ b/html/canvas/OESTextureFloat.idl
@@ -25,6 +25,5 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface OESTextureFloat {
 };
diff --git a/html/canvas/OESTextureHalfFloat.idl b/html/canvas/OESTextureHalfFloat.idl
index abedc56..9e6dd9f 100644
--- a/html/canvas/OESTextureHalfFloat.idl
+++ b/html/canvas/OESTextureHalfFloat.idl
@@ -25,6 +25,5 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface OESTextureHalfFloat {
-};
\ No newline at end of file
+};
diff --git a/html/canvas/OESVertexArrayObject.idl b/html/canvas/OESVertexArrayObject.idl
index a44e740..699d6d0 100644
--- a/html/canvas/OESVertexArrayObject.idl
+++ b/html/canvas/OESVertexArrayObject.idl
@@ -25,13 +25,12 @@
 
 [
     Conditional=WEBGL, 
-    OmitConstructor, 
     DoNotCheckConstants
 ] interface OESVertexArrayObject {
     const unsigned int VERTEX_ARRAY_BINDING_OES = 0x85B5;
     
     [StrictTypeChecking] WebGLVertexArrayObjectOES createVertexArrayOES();
-    [StrictTypeChecking] void         deleteVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
-    [StrictTypeChecking] boolean      isVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
-    [StrictTypeChecking] void         bindVertexArrayOES(in [Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject) raises(DOMException);
+    [StrictTypeChecking] void         deleteVertexArrayOES([Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
+    [StrictTypeChecking] boolean      isVertexArrayOES([Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
+    [StrictTypeChecking, RaisesException] void         bindVertexArrayOES([Optional=DefaultIsUndefined] WebGLVertexArrayObjectOES arrayObject);
 };
diff --git a/html/canvas/Uint16Array.idl b/html/canvas/Uint16Array.idl
index 1fd90fe..e777687 100644
--- a/html/canvas/Uint16Array.idl
+++ b/html/canvas/Uint16Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,9 +36,9 @@
     const unsigned long BYTES_PER_ELEMENT = 2;
 
     readonly attribute unsigned long length;
-    Uint16Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+    Uint16Array subarray([Optional=DefaultIsUndefined] long start, [Optional] long end);
 
-    // void set(in Uint16Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Uint16Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Uint32Array.idl b/html/canvas/Uint32Array.idl
index 5614a95..8dfaeba 100644
--- a/html/canvas/Uint32Array.idl
+++ b/html/canvas/Uint32Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,9 +36,9 @@
     const unsigned long BYTES_PER_ELEMENT = 4;
 
     readonly attribute unsigned long length;
-    Uint32Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+    Uint32Array subarray([Optional=DefaultIsUndefined] long start, [Optional] long end);
 
-    // void set(in Uint32Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Uint32Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Uint8Array.idl b/html/canvas/Uint8Array.idl
index 20bcca2..f91663e 100644
--- a/html/canvas/Uint8Array.idl
+++ b/html/canvas/Uint8Array.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,9 +36,9 @@
     const unsigned long BYTES_PER_ELEMENT = 1;
 
     readonly attribute unsigned long length;
-    Uint8Array subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+    Uint8Array subarray([Optional=DefaultIsUndefined] long start, [Optional] long end);
 
-    // void set(in Uint8Array array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Uint8Array array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/Uint8ClampedArray.idl b/html/canvas/Uint8ClampedArray.idl
index 4f7775b..8359c5c 100644
--- a/html/canvas/Uint8ClampedArray.idl
+++ b/html/canvas/Uint8ClampedArray.idl
@@ -26,7 +26,6 @@
 
 [
     ConstructorTemplate=TypedArray,
-    ConstructorParameters=1,
     NumericIndexedGetter,
     CustomIndexedSetter,
     CustomToJSObject,
@@ -37,10 +36,10 @@
     const unsigned long BYTES_PER_ELEMENT = 1;
 
     readonly attribute unsigned long length;
-    Uint8ClampedArray subarray(in [Optional=DefaultIsUndefined] long start, in [Optional] long end);
+    Uint8ClampedArray subarray([Optional=DefaultIsUndefined] long start, [Optional] long end);
 
     // FIXME: Missing other setters!
-    // void set(in Uint8ClampedArray array, [Optional] in unsigned long offset);
-    // void set(in sequence<long> array, [Optional] in unsigned long offset);
+    // void set(Uint8ClampedArray array, [Optional] in unsigned long offset);
+    // void set(sequence<long> array, [Optional] in unsigned long offset);
     void set();
 };
diff --git a/html/canvas/WebGLCompressedTextureATC.idl b/html/canvas/WebGLCompressedTextureATC.idl
index 76b0ba1..2c7fac0 100644
--- a/html/canvas/WebGLCompressedTextureATC.idl
+++ b/html/canvas/WebGLCompressedTextureATC.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface WebGLCompressedTextureATC {
     /* Compressed Texture Formats */
diff --git a/html/canvas/WebGLCompressedTexturePVRTC.idl b/html/canvas/WebGLCompressedTexturePVRTC.idl
index 875ee29..f30c349 100644
--- a/html/canvas/WebGLCompressedTexturePVRTC.idl
+++ b/html/canvas/WebGLCompressedTexturePVRTC.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface WebGLCompressedTexturePVRTC {
     /* Compressed Texture Formats */
diff --git a/html/canvas/WebGLCompressedTextureS3TC.idl b/html/canvas/WebGLCompressedTextureS3TC.idl
index 024c4a9..4e96637 100644
--- a/html/canvas/WebGLCompressedTextureS3TC.idl
+++ b/html/canvas/WebGLCompressedTextureS3TC.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface WebGLCompressedTextureS3TC {
     /* Compressed Texture Formats */
diff --git a/html/canvas/WebGLContextAttributes.idl b/html/canvas/WebGLContextAttributes.idl
index 52dd041..df45175 100644
--- a/html/canvas/WebGLContextAttributes.idl
+++ b/html/canvas/WebGLContextAttributes.idl
@@ -26,7 +26,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface WebGLContextAttributes {
     attribute boolean alpha;
     attribute boolean depth;
diff --git a/html/canvas/WebGLDebugRendererInfo.idl b/html/canvas/WebGLDebugRendererInfo.idl
index 8c85501..f0687e5 100644
--- a/html/canvas/WebGLDebugRendererInfo.idl
+++ b/html/canvas/WebGLDebugRendererInfo.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface WebGLDebugRendererInfo {
     const unsigned int UNMASKED_VENDOR_WEBGL = 0x9245;
diff --git a/html/canvas/WebGLDebugShaders.idl b/html/canvas/WebGLDebugShaders.idl
index c09da2f..59e0cdd 100644
--- a/html/canvas/WebGLDebugShaders.idl
+++ b/html/canvas/WebGLDebugShaders.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface WebGLDebugShaders {
-    [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getTranslatedShaderSource(in WebGLShader shader) raises(DOMException);
+    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString getTranslatedShaderSource(WebGLShader shader);
 };
diff --git a/html/canvas/WebGLDepthTexture.idl b/html/canvas/WebGLDepthTexture.idl
index ebc5417..1aaf21f 100644
--- a/html/canvas/WebGLDepthTexture.idl
+++ b/html/canvas/WebGLDepthTexture.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface WebGLDepthTexture {
     const unsigned int UNSIGNED_INT_24_8_WEBGL = 0x84FA;
diff --git a/html/canvas/WebGLLoseContext.idl b/html/canvas/WebGLLoseContext.idl
index b89826e..ee07a4f 100644
--- a/html/canvas/WebGLLoseContext.idl
+++ b/html/canvas/WebGLLoseContext.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=WEBGL,
-    OmitConstructor
 ] interface WebGLLoseContext {
     [StrictTypeChecking] void loseContext();
     [StrictTypeChecking] void restoreContext();
diff --git a/html/canvas/WebGLRenderingContext.idl b/html/canvas/WebGLRenderingContext.idl
index 56610f4..850dc16 100644
--- a/html/canvas/WebGLRenderingContext.idl
+++ b/html/canvas/WebGLRenderingContext.idl
@@ -462,208 +462,208 @@
     readonly attribute GLsizei drawingBufferWidth;
     readonly attribute GLsizei drawingBufferHeight;
 
-    [StrictTypeChecking] void         activeTexture(in GLenum texture) raises(DOMException);
-    [StrictTypeChecking] void         attachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
-    [StrictTypeChecking] void         bindAttribLocation(in WebGLProgram program, in GLuint index, in DOMString name) raises(DOMException);
-    [StrictTypeChecking] void         bindBuffer(in GLenum target, in WebGLBuffer buffer) raises(DOMException);
-    [StrictTypeChecking] void         bindFramebuffer(in GLenum target, in WebGLFramebuffer framebuffer) raises(DOMException);
-    [StrictTypeChecking] void         bindRenderbuffer(in GLenum target, in WebGLRenderbuffer renderbuffer) raises(DOMException);
-    [StrictTypeChecking] void         bindTexture(in GLenum target, in WebGLTexture texture) raises(DOMException);
-    [StrictTypeChecking] void         blendColor(in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha);
-    [StrictTypeChecking] void         blendEquation(in GLenum mode);
-    [StrictTypeChecking] void         blendEquationSeparate(in GLenum modeRGB, in GLenum modeAlpha);
-    [StrictTypeChecking] void         blendFunc(in GLenum sfactor, in GLenum dfactor);
-    [StrictTypeChecking] void         blendFuncSeparate(in GLenum srcRGB, in GLenum dstRGB, in GLenum srcAlpha, in GLenum dstAlpha);
-    [StrictTypeChecking] void         bufferData(in GLenum target, in ArrayBuffer? data, in GLenum usage) raises (DOMException);
-    [StrictTypeChecking] void         bufferData(in GLenum target, in ArrayBufferView? data, in GLenum usage) raises (DOMException);
-    [StrictTypeChecking] void         bufferData(in GLenum target, in GLsizeiptr size, in GLenum usage) raises (DOMException);
-    [StrictTypeChecking] void         bufferSubData(in GLenum target, in GLintptr offset, in ArrayBuffer? data) raises (DOMException);
-    [StrictTypeChecking] void         bufferSubData(in GLenum target, in GLintptr offset, in ArrayBufferView? data) raises (DOMException);
+    [StrictTypeChecking, RaisesException] void         activeTexture(GLenum texture);
+    [StrictTypeChecking, RaisesException] void         attachShader(WebGLProgram program, WebGLShader shader);
+    [StrictTypeChecking, RaisesException] void         bindAttribLocation(WebGLProgram program, GLuint index, DOMString name);
+    [StrictTypeChecking, RaisesException] void         bindBuffer(GLenum target, WebGLBuffer buffer);
+    [StrictTypeChecking, RaisesException] void         bindFramebuffer(GLenum target, WebGLFramebuffer framebuffer);
+    [StrictTypeChecking, RaisesException] void         bindRenderbuffer(GLenum target, WebGLRenderbuffer renderbuffer);
+    [StrictTypeChecking, RaisesException] void         bindTexture(GLenum target, WebGLTexture texture);
+    [StrictTypeChecking] void         blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+    [StrictTypeChecking] void         blendEquation(GLenum mode);
+    [StrictTypeChecking] void         blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha);
+    [StrictTypeChecking] void         blendFunc(GLenum sfactor, GLenum dfactor);
+    [StrictTypeChecking] void         blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+    [StrictTypeChecking, RaisesException] void         bufferData(GLenum target, ArrayBuffer? data, GLenum usage);
+    [StrictTypeChecking, RaisesException] void         bufferData(GLenum target, ArrayBufferView? data, GLenum usage);
+    [StrictTypeChecking, RaisesException] void         bufferData(GLenum target, GLsizeiptr size, GLenum usage);
+    [StrictTypeChecking, RaisesException] void         bufferSubData(GLenum target, GLintptr offset, ArrayBuffer? data);
+    [StrictTypeChecking, RaisesException] void         bufferSubData(GLenum target, GLintptr offset, ArrayBufferView? data);
 
-    [StrictTypeChecking] GLenum       checkFramebufferStatus(in GLenum target);
-    [StrictTypeChecking] void         clear(in GLbitfield mask);
-    [StrictTypeChecking] void         clearColor(in GLclampf red, in GLclampf green, in GLclampf blue, in GLclampf alpha);
-    [StrictTypeChecking] void         clearDepth(in GLclampf depth);
-    [StrictTypeChecking] void         clearStencil(in GLint s);
-    [StrictTypeChecking] void         colorMask(in GLboolean red, in GLboolean green, in GLboolean blue, in GLboolean alpha);
-    [StrictTypeChecking] void         compileShader(in WebGLShader shader) raises(DOMException);
+    [StrictTypeChecking] GLenum       checkFramebufferStatus(GLenum target);
+    [StrictTypeChecking] void         clear(GLbitfield mask);
+    [StrictTypeChecking] void         clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+    [StrictTypeChecking] void         clearDepth(GLclampf depth);
+    [StrictTypeChecking] void         clearStencil(GLint s);
+    [StrictTypeChecking] void         colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+    [StrictTypeChecking, RaisesException] void         compileShader(WebGLShader shader);
 
-    [StrictTypeChecking] void         compressedTexImage2D(in GLenum target, in GLint level, in GLenum internalformat,
-                                                           in GLsizei width, in GLsizei height, in GLint border, in ArrayBufferView data);
-    [StrictTypeChecking] void         compressedTexSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset,
-                                                              in GLsizei width, in GLsizei height, in GLenum format, in ArrayBufferView data);
+    [StrictTypeChecking] void         compressedTexImage2D(GLenum target, GLint level, GLenum internalformat,
+                                                           GLsizei width, GLsizei height, GLint border, ArrayBufferView data);
+    [StrictTypeChecking] void         compressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                                              GLsizei width, GLsizei height, GLenum format, ArrayBufferView data);
     
-    [StrictTypeChecking] void         copyTexImage2D(in GLenum target, in GLint level, in GLenum internalformat, in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLint border);
-    [StrictTypeChecking] void         copyTexSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, in GLint x, in GLint y, in GLsizei width, in GLsizei height);
+    [StrictTypeChecking] void         copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+    [StrictTypeChecking] void         copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
 
     [StrictTypeChecking] WebGLBuffer createBuffer();
     [StrictTypeChecking] WebGLFramebuffer createFramebuffer();
     [StrictTypeChecking] WebGLProgram createProgram();
     [StrictTypeChecking] WebGLRenderbuffer createRenderbuffer();
-    [StrictTypeChecking] WebGLShader createShader(in GLenum type) raises(DOMException);
+    [StrictTypeChecking, RaisesException] WebGLShader createShader(GLenum type);
     [StrictTypeChecking] WebGLTexture createTexture();
 
-    [StrictTypeChecking] void         cullFace(in GLenum mode);
+    [StrictTypeChecking] void         cullFace(GLenum mode);
 
-    [StrictTypeChecking] void         deleteBuffer(in WebGLBuffer buffer);
-    [StrictTypeChecking] void         deleteFramebuffer(in WebGLFramebuffer framebuffer);
-    [StrictTypeChecking] void         deleteProgram(in WebGLProgram program);
-    [StrictTypeChecking] void         deleteRenderbuffer(in WebGLRenderbuffer renderbuffer);
-    [StrictTypeChecking] void         deleteShader(in WebGLShader shader);
-    [StrictTypeChecking] void         deleteTexture(in WebGLTexture texture);
+    [StrictTypeChecking] void         deleteBuffer(WebGLBuffer buffer);
+    [StrictTypeChecking] void         deleteFramebuffer(WebGLFramebuffer framebuffer);
+    [StrictTypeChecking] void         deleteProgram(WebGLProgram program);
+    [StrictTypeChecking] void         deleteRenderbuffer(WebGLRenderbuffer renderbuffer);
+    [StrictTypeChecking] void         deleteShader(WebGLShader shader);
+    [StrictTypeChecking] void         deleteTexture(WebGLTexture texture);
 
-    [StrictTypeChecking] void         depthFunc(in GLenum func);
-    [StrictTypeChecking] void         depthMask(in GLboolean flag);
-    [StrictTypeChecking] void         depthRange(in GLclampf zNear, in GLclampf zFar);
-    [StrictTypeChecking] void         detachShader(in WebGLProgram program, in WebGLShader shader) raises(DOMException);
-    [StrictTypeChecking] void         disable(in GLenum cap);
-    [StrictTypeChecking] void         disableVertexAttribArray(in GLuint index) raises(DOMException);
-    [StrictTypeChecking] void         drawArrays(in GLenum mode, in GLint first, in GLsizei count) raises(DOMException);
-    [StrictTypeChecking] void         drawElements(in GLenum mode, in GLsizei count, in GLenum type, in GLintptr offset) raises(DOMException);
+    [StrictTypeChecking] void         depthFunc(GLenum func);
+    [StrictTypeChecking] void         depthMask(GLboolean flag);
+    [StrictTypeChecking] void         depthRange(GLclampf zNear, GLclampf zFar);
+    [StrictTypeChecking, RaisesException] void         detachShader(WebGLProgram program, WebGLShader shader);
+    [StrictTypeChecking] void         disable(GLenum cap);
+    [StrictTypeChecking, RaisesException] void         disableVertexAttribArray(GLuint index);
+    [StrictTypeChecking, RaisesException] void         drawArrays(GLenum mode, GLint first, GLsizei count);
+    [StrictTypeChecking, RaisesException] void         drawElements(GLenum mode, GLsizei count, GLenum type, GLintptr offset);
 
-    [StrictTypeChecking] void         enable(in GLenum cap);
-    [StrictTypeChecking] void         enableVertexAttribArray(in GLuint index) raises(DOMException);
+    [StrictTypeChecking] void         enable(GLenum cap);
+    [StrictTypeChecking, RaisesException] void         enableVertexAttribArray(GLuint index);
     [StrictTypeChecking] void         finish();
     [StrictTypeChecking] void         flush();
-    [StrictTypeChecking] void         framebufferRenderbuffer(in GLenum target, in GLenum attachment, in GLenum renderbuffertarget, in WebGLRenderbuffer renderbuffer) raises(DOMException);
-    [StrictTypeChecking] void         framebufferTexture2D(in GLenum target, in GLenum attachment, in GLenum textarget, in WebGLTexture texture, in GLint level) raises(DOMException);
-    [StrictTypeChecking] void         frontFace(in GLenum mode);
-    [StrictTypeChecking] void         generateMipmap(in GLenum target);
+    [StrictTypeChecking, RaisesException] void         framebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, WebGLRenderbuffer renderbuffer);
+    [StrictTypeChecking, RaisesException] void         framebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, WebGLTexture texture, GLint level);
+    [StrictTypeChecking] void         frontFace(GLenum mode);
+    [StrictTypeChecking] void         generateMipmap(GLenum target);
     
-    [StrictTypeChecking] WebGLActiveInfo getActiveAttrib(in WebGLProgram program, in GLuint index) raises (DOMException);
-    [StrictTypeChecking] WebGLActiveInfo getActiveUniform(in WebGLProgram program, in GLuint index) raises (DOMException);
+    [StrictTypeChecking, RaisesException] WebGLActiveInfo getActiveAttrib(WebGLProgram program, GLuint index);
+    [StrictTypeChecking, RaisesException] WebGLActiveInfo getActiveUniform(WebGLProgram program, GLuint index);
 
-    [StrictTypeChecking, Custom] void getAttachedShaders(in WebGLProgram program) raises (DOMException);
+    [StrictTypeChecking, Custom, RaisesException] void getAttachedShaders(WebGLProgram program);
 
-    [StrictTypeChecking] GLint        getAttribLocation(in WebGLProgram program, in DOMString name);
+    [StrictTypeChecking] GLint        getAttribLocation(WebGLProgram program, DOMString name);
 
-    [StrictTypeChecking, Custom] any getBufferParameter(in GLenum target, in GLenum pname);
+    [StrictTypeChecking, Custom] any getBufferParameter(GLenum target, GLenum pname);
 
     [StrictTypeChecking] WebGLContextAttributes getContextAttributes();
 
     [StrictTypeChecking] GLenum getError();
 
-    // object getExtension(in DOMString name);
-    [StrictTypeChecking, Custom] any getExtension(in DOMString name);
+    // object getExtension(DOMString name);
+    [StrictTypeChecking, Custom] any getExtension(DOMString name);
 
-    [StrictTypeChecking, Custom] any getFramebufferAttachmentParameter(in GLenum target, in GLenum attachment, in GLenum pname) raises(DOMException);
-    [StrictTypeChecking, Custom] any getParameter(in GLenum pname) raises(DOMException);
-    [StrictTypeChecking, Custom] any getProgramParameter(in WebGLProgram program, in GLenum pname) raises(DOMException);
-    [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString getProgramInfoLog(in WebGLProgram program) raises(DOMException);
-    [StrictTypeChecking, Custom] any getRenderbufferParameter(in GLenum target, in GLenum pname) raises(DOMException);
-    [StrictTypeChecking, Custom] any getShaderParameter(in WebGLShader shader, in GLenum pname) raises(DOMException);
+    [StrictTypeChecking, Custom, RaisesException] any getFramebufferAttachmentParameter(GLenum target, GLenum attachment, GLenum pname);
+    [StrictTypeChecking, Custom, RaisesException] any getParameter(GLenum pname);
+    [StrictTypeChecking, Custom, RaisesException] any getProgramParameter(WebGLProgram program, GLenum pname);
+    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString getProgramInfoLog(WebGLProgram program);
+    [StrictTypeChecking, Custom, RaisesException] any getRenderbufferParameter(GLenum target, GLenum pname);
+    [StrictTypeChecking, Custom, RaisesException] any getShaderParameter(WebGLShader shader, GLenum pname);
 
-    [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString    getShaderInfoLog(in WebGLShader shader) raises(DOMException);
+    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString    getShaderInfoLog(WebGLShader shader);
 
-    [StrictTypeChecking] WebGLShaderPrecisionFormat getShaderPrecisionFormat(in GLenum shadertype, in GLenum precisiontype) raises(DOMException);
+    [StrictTypeChecking, RaisesException] WebGLShaderPrecisionFormat getShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype);
 
-    [StrictTypeChecking, TreatReturnedNullStringAs=Null] DOMString    getShaderSource(in WebGLShader shader) raises(DOMException);
+    [StrictTypeChecking, TreatReturnedNullStringAs=Null, RaisesException] DOMString    getShaderSource(WebGLShader shader);
 
     [StrictTypeChecking, Custom] sequence<DOMString> getSupportedExtensions();
 
-    [StrictTypeChecking, Custom] any getTexParameter(in GLenum target, in GLenum pname) raises(DOMException);
+    [StrictTypeChecking, Custom, RaisesException] any getTexParameter(GLenum target, GLenum pname);
 
-    [StrictTypeChecking, Custom] any getUniform(in WebGLProgram program, in WebGLUniformLocation location) raises(DOMException);
+    [StrictTypeChecking, Custom, RaisesException] any getUniform(WebGLProgram program, WebGLUniformLocation location);
 
-    [StrictTypeChecking] WebGLUniformLocation getUniformLocation(in WebGLProgram program, in DOMString name) raises(DOMException);
+    [StrictTypeChecking, RaisesException] WebGLUniformLocation getUniformLocation(WebGLProgram program, DOMString name);
 
-    [StrictTypeChecking, Custom] any getVertexAttrib(in GLuint index, in GLenum pname) raises(DOMException);
+    [StrictTypeChecking, Custom, RaisesException] any getVertexAttrib(GLuint index, GLenum pname);
 
-    [StrictTypeChecking] GLsizeiptr getVertexAttribOffset(in GLuint index, in GLenum pname);
+    [StrictTypeChecking] GLsizeiptr getVertexAttribOffset(GLuint index, GLenum pname);
 
-    [StrictTypeChecking] void         hint(in GLenum target, in GLenum mode);
-    [StrictTypeChecking] GLboolean    isBuffer(in WebGLBuffer buffer);
+    [StrictTypeChecking] void         hint(GLenum target, GLenum mode);
+    [StrictTypeChecking] GLboolean    isBuffer(WebGLBuffer buffer);
     [StrictTypeChecking] GLboolean    isContextLost();
-    [StrictTypeChecking] GLboolean    isEnabled(in GLenum cap);
-    [StrictTypeChecking] GLboolean    isFramebuffer(in WebGLFramebuffer framebuffer);
-    [StrictTypeChecking] GLboolean    isProgram(in WebGLProgram program);
-    [StrictTypeChecking] GLboolean    isRenderbuffer(in WebGLRenderbuffer renderbuffer);
-    [StrictTypeChecking] GLboolean    isShader(in WebGLShader shader);
-    [StrictTypeChecking] GLboolean    isTexture(in WebGLTexture texture);
-    [StrictTypeChecking] void         lineWidth(in GLfloat width);
-    [StrictTypeChecking] void         linkProgram(in WebGLProgram program) raises(DOMException);
-    [StrictTypeChecking] void         pixelStorei(in GLenum pname, in GLint param);
-    [StrictTypeChecking] void         polygonOffset(in GLfloat factor, in GLfloat units);
+    [StrictTypeChecking] GLboolean    isEnabled(GLenum cap);
+    [StrictTypeChecking] GLboolean    isFramebuffer(WebGLFramebuffer framebuffer);
+    [StrictTypeChecking] GLboolean    isProgram(WebGLProgram program);
+    [StrictTypeChecking] GLboolean    isRenderbuffer(WebGLRenderbuffer renderbuffer);
+    [StrictTypeChecking] GLboolean    isShader(WebGLShader shader);
+    [StrictTypeChecking] GLboolean    isTexture(WebGLTexture texture);
+    [StrictTypeChecking] void         lineWidth(GLfloat width);
+    [StrictTypeChecking, RaisesException] void         linkProgram(WebGLProgram program);
+    [StrictTypeChecking] void         pixelStorei(GLenum pname, GLint param);
+    [StrictTypeChecking] void         polygonOffset(GLfloat factor, GLfloat units);
 
-    [StrictTypeChecking] void         readPixels(in GLint x, in GLint y, in GLsizei width, in GLsizei height, in GLenum format, in GLenum type, in ArrayBufferView pixels) raises(DOMException);
+    [StrictTypeChecking, RaisesException] void         readPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, ArrayBufferView pixels);
     
     [StrictTypeChecking] void         releaseShaderCompiler();
-    [StrictTypeChecking] void         renderbufferStorage(in GLenum target, in GLenum internalformat, in GLsizei width, in GLsizei height);
-    [StrictTypeChecking] void         sampleCoverage(in GLclampf value, in GLboolean invert);
-    [StrictTypeChecking] void         scissor(in GLint x, in GLint y, in GLsizei width, in GLsizei height);
-    [StrictTypeChecking] void         shaderSource(in WebGLShader shader, in DOMString string) raises(DOMException);
-    [StrictTypeChecking] void         stencilFunc(in GLenum func, in GLint ref, in GLuint mask);
-    [StrictTypeChecking] void         stencilFuncSeparate(in GLenum face, in GLenum func, in GLint ref, in GLuint mask);
-    [StrictTypeChecking] void         stencilMask(in GLuint mask);
-    [StrictTypeChecking] void         stencilMaskSeparate(in GLenum face, in GLuint mask);
-    [StrictTypeChecking] void         stencilOp(in GLenum fail, in GLenum zfail, in GLenum zpass);
-    [StrictTypeChecking] void         stencilOpSeparate(in GLenum face, in GLenum fail, in GLenum zfail, in GLenum zpass);
+    [StrictTypeChecking] void         renderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+    [StrictTypeChecking] void         sampleCoverage(GLclampf value, GLboolean invert);
+    [StrictTypeChecking] void         scissor(GLint x, GLint y, GLsizei width, GLsizei height);
+    [StrictTypeChecking, RaisesException] void         shaderSource(WebGLShader shader, DOMString string);
+    [StrictTypeChecking] void         stencilFunc(GLenum func, GLint ref, GLuint mask);
+    [StrictTypeChecking] void         stencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask);
+    [StrictTypeChecking] void         stencilMask(GLuint mask);
+    [StrictTypeChecking] void         stencilMaskSeparate(GLenum face, GLuint mask);
+    [StrictTypeChecking] void         stencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+    [StrictTypeChecking] void         stencilOpSeparate(GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
 
-    [StrictTypeChecking] void         texParameterf(in GLenum target, in GLenum pname, in GLfloat param);
-    [StrictTypeChecking] void         texParameteri(in GLenum target, in GLenum pname, in GLint param);
+    [StrictTypeChecking] void         texParameterf(GLenum target, GLenum pname, GLfloat param);
+    [StrictTypeChecking] void         texParameteri(GLenum target, GLenum pname, GLint param);
 
     // Supported forms:
-    [StrictTypeChecking] void         texImage2D(in GLenum target, in GLint level, in GLenum internalformat, in GLsizei width, in GLsizei height, 
-                                                 in GLint border, in GLenum format, in GLenum type, in ArrayBufferView? pixels) raises (DOMException);
-    [StrictTypeChecking] void         texImage2D(in GLenum target, in GLint level, in GLenum internalformat,
-                                                 in GLenum format, in GLenum type, in ImageData? pixels) raises (DOMException);
-    [StrictTypeChecking] void         texImage2D(in GLenum target, in GLint level, in GLenum internalformat,
-                                                 in GLenum format, in GLenum type, in HTMLImageElement? image) raises (DOMException);
-    [StrictTypeChecking] void         texImage2D(in GLenum target, in GLint level, in GLenum internalformat,
-                                                 in GLenum format, in GLenum type, in HTMLCanvasElement? canvas) raises (DOMException);
+    [StrictTypeChecking, RaisesException] void         texImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, 
+                                                 GLint border, GLenum format, GLenum type, ArrayBufferView? pixels);
+    [StrictTypeChecking, RaisesException] void         texImage2D(GLenum target, GLint level, GLenum internalformat,
+                                                 GLenum format, GLenum type, ImageData? pixels);
+    [StrictTypeChecking, RaisesException] void         texImage2D(GLenum target, GLint level, GLenum internalformat,
+                                                 GLenum format, GLenum type, HTMLImageElement? image);
+    [StrictTypeChecking, RaisesException] void         texImage2D(GLenum target, GLint level, GLenum internalformat,
+                                                 GLenum format, GLenum type, HTMLCanvasElement? canvas);
 #if defined(ENABLE_VIDEO) && ENABLE_VIDEO
-    [StrictTypeChecking] void         texImage2D(in GLenum target, in GLint level, in GLenum internalformat,
-                                                 in GLenum format, in GLenum type, in HTMLVideoElement? video) raises (DOMException);
+    [StrictTypeChecking, RaisesException] void         texImage2D(GLenum target, GLint level, GLenum internalformat,
+                                                 GLenum format, GLenum type, HTMLVideoElement? video);
 #endif
 
-    [StrictTypeChecking] void         texSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset, 
-                                                    in GLsizei width, in GLsizei height, 
-                                                    in GLenum format, in GLenum type, in ArrayBufferView? pixels) raises (DOMException);
-    [StrictTypeChecking] void         texSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset,
-                                                    in GLenum format, in GLenum type, in ImageData? pixels) raises (DOMException);
-    [StrictTypeChecking] void         texSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset,
-                                                    in GLenum format, in GLenum type, in HTMLImageElement? image) raises (DOMException);
-    [StrictTypeChecking] void         texSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset,
-                                                    in GLenum format, in GLenum type, in HTMLCanvasElement? canvas) raises (DOMException);
+    [StrictTypeChecking, RaisesException] void         texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, 
+                                                    GLsizei width, GLsizei height, 
+                                                    GLenum format, GLenum type, ArrayBufferView? pixels);
+    [StrictTypeChecking, RaisesException] void         texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                                    GLenum format, GLenum type, ImageData? pixels);
+    [StrictTypeChecking, RaisesException] void         texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                                    GLenum format, GLenum type, HTMLImageElement? image);
+    [StrictTypeChecking, RaisesException] void         texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                                    GLenum format, GLenum type, HTMLCanvasElement? canvas);
 #if defined(ENABLE_VIDEO) && ENABLE_VIDEO
-    [StrictTypeChecking] void         texSubImage2D(in GLenum target, in GLint level, in GLint xoffset, in GLint yoffset,
-                                                    in GLenum format, in GLenum type, in HTMLVideoElement? video) raises (DOMException);
+    [StrictTypeChecking, RaisesException] void         texSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
+                                                    GLenum format, GLenum type, HTMLVideoElement? video);
 #endif
 
-    [StrictTypeChecking] void uniform1f(in WebGLUniformLocation location, in GLfloat x) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform1fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform1i(in WebGLUniformLocation location, in GLint x) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform1iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform2f(in WebGLUniformLocation location, in GLfloat x, in GLfloat y) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform2fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform2i(in WebGLUniformLocation location, in GLint x, in GLint y) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform2iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform3f(in WebGLUniformLocation location, in GLfloat x, in GLfloat y, in GLfloat z) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform3fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform3i(in WebGLUniformLocation location, in GLint x, in GLint y, in GLint z) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform3iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform4f(in WebGLUniformLocation location, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform4fv(in WebGLUniformLocation location, in Float32Array v) raises(DOMException);
-    [StrictTypeChecking] void uniform4i(in WebGLUniformLocation location, in GLint x, in GLint y, in GLint z, in GLint w) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniform4iv(in WebGLUniformLocation location, in Int32Array v) raises(DOMException);
+    [StrictTypeChecking, RaisesException] void uniform1f(WebGLUniformLocation location, GLfloat x);
+    [StrictTypeChecking, Custom, RaisesException] void uniform1fv(WebGLUniformLocation location, Float32Array v);
+    [StrictTypeChecking, RaisesException] void uniform1i(WebGLUniformLocation location, GLint x);
+    [StrictTypeChecking, Custom, RaisesException] void uniform1iv(WebGLUniformLocation location, Int32Array v);
+    [StrictTypeChecking, RaisesException] void uniform2f(WebGLUniformLocation location, GLfloat x, GLfloat y);
+    [StrictTypeChecking, Custom, RaisesException] void uniform2fv(WebGLUniformLocation location, Float32Array v);
+    [StrictTypeChecking, RaisesException] void uniform2i(WebGLUniformLocation location, GLint x, GLint y);
+    [StrictTypeChecking, Custom, RaisesException] void uniform2iv(WebGLUniformLocation location, Int32Array v);
+    [StrictTypeChecking, RaisesException] void uniform3f(WebGLUniformLocation location, GLfloat x, GLfloat y, GLfloat z);
+    [StrictTypeChecking, Custom, RaisesException] void uniform3fv(WebGLUniformLocation location, Float32Array v);
+    [StrictTypeChecking, RaisesException] void uniform3i(WebGLUniformLocation location, GLint x, GLint y, GLint z);
+    [StrictTypeChecking, Custom, RaisesException] void uniform3iv(WebGLUniformLocation location, Int32Array v);
+    [StrictTypeChecking, RaisesException] void uniform4f(WebGLUniformLocation location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+    [StrictTypeChecking, Custom, RaisesException] void uniform4fv(WebGLUniformLocation location, Float32Array v);
+    [StrictTypeChecking, RaisesException] void uniform4i(WebGLUniformLocation location, GLint x, GLint y, GLint z, GLint w);
+    [StrictTypeChecking, Custom, RaisesException] void uniform4iv(WebGLUniformLocation location, Int32Array v);
 
-    [StrictTypeChecking, Custom] void uniformMatrix2fv(in WebGLUniformLocation location, in GLboolean transpose, in Float32Array array) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniformMatrix3fv(in WebGLUniformLocation location, in GLboolean transpose, in Float32Array array) raises(DOMException);
-    [StrictTypeChecking, Custom] void uniformMatrix4fv(in WebGLUniformLocation location, in GLboolean transpose, in Float32Array array) raises(DOMException);
+    [StrictTypeChecking, Custom, RaisesException] void uniformMatrix2fv(WebGLUniformLocation location, GLboolean transpose, Float32Array array);
+    [StrictTypeChecking, Custom, RaisesException] void uniformMatrix3fv(WebGLUniformLocation location, GLboolean transpose, Float32Array array);
+    [StrictTypeChecking, Custom, RaisesException] void uniformMatrix4fv(WebGLUniformLocation location, GLboolean transpose, Float32Array array);
 
-    [StrictTypeChecking] void         useProgram(in WebGLProgram program) raises(DOMException);
-    [StrictTypeChecking] void         validateProgram(in WebGLProgram program) raises(DOMException);
+    [StrictTypeChecking, RaisesException] void         useProgram(WebGLProgram program);
+    [StrictTypeChecking, RaisesException] void         validateProgram(WebGLProgram program);
 
-    [StrictTypeChecking] void         vertexAttrib1f(in GLuint indx, in GLfloat x);
-    [StrictTypeChecking, Custom] void vertexAttrib1fv(in GLuint indx, in Float32Array values);
-    [StrictTypeChecking] void         vertexAttrib2f(in GLuint indx, in GLfloat x, in GLfloat y);
-    [StrictTypeChecking, Custom] void vertexAttrib2fv(in GLuint indx, in Float32Array values);
-    [StrictTypeChecking] void         vertexAttrib3f(in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z);
-    [StrictTypeChecking, Custom] void vertexAttrib3fv(in GLuint indx, in Float32Array values);
-    [StrictTypeChecking] void         vertexAttrib4f(in GLuint indx, in GLfloat x, in GLfloat y, in GLfloat z, in GLfloat w);
-    [StrictTypeChecking, Custom] void vertexAttrib4fv(in GLuint indx, in Float32Array values);
-    [StrictTypeChecking] void         vertexAttribPointer(in GLuint indx, in GLint size, in GLenum type, in GLboolean normalized, 
-                                                          in GLsizei stride, in GLintptr offset) raises(DOMException);
+    [StrictTypeChecking] void         vertexAttrib1f(GLuint indx, GLfloat x);
+    [StrictTypeChecking, Custom] void vertexAttrib1fv(GLuint indx, Float32Array values);
+    [StrictTypeChecking] void         vertexAttrib2f(GLuint indx, GLfloat x, GLfloat y);
+    [StrictTypeChecking, Custom] void vertexAttrib2fv(GLuint indx, Float32Array values);
+    [StrictTypeChecking] void         vertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z);
+    [StrictTypeChecking, Custom] void vertexAttrib3fv(GLuint indx, Float32Array values);
+    [StrictTypeChecking] void         vertexAttrib4f(GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+    [StrictTypeChecking, Custom] void vertexAttrib4fv(GLuint indx, Float32Array values);
+    [StrictTypeChecking, RaisesException] void         vertexAttribPointer(GLuint indx, GLint size, GLenum type, GLboolean normalized, 
+                                                          GLsizei stride, GLintptr offset);
 
-    [StrictTypeChecking] void         viewport(in GLint x, in GLint y, in GLsizei width, in GLsizei height);
+    [StrictTypeChecking] void         viewport(GLint x, GLint y, GLsizei width, GLsizei height);
 };
diff --git a/html/shadow/HTMLContentElement.idl b/html/shadow/HTMLContentElement.idl
index c6bb613..e231ba6 100644
--- a/html/shadow/HTMLContentElement.idl
+++ b/html/shadow/HTMLContentElement.idl
@@ -25,9 +25,8 @@
  */
 
 [
-    Conditional=SHADOW_DOM,
-    V8EnabledAtRuntime=shadowDOM,
-    V8SkipVTableValidation
+    EnabledAtRuntime=shadowDOM,
+    SkipVTableValidation
 ] interface HTMLContentElement : HTMLElement {
     [Reflect] attribute DOMString select;
     attribute boolean resetStyleInheritance;
diff --git a/html/shadow/HTMLShadowElement.idl b/html/shadow/HTMLShadowElement.idl
index 177edca..f5a64d2 100644
--- a/html/shadow/HTMLShadowElement.idl
+++ b/html/shadow/HTMLShadowElement.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=SHADOW_DOM,
-    V8EnabledAtRuntime=shadowDOM
+    EnabledAtRuntime=shadowDOM
 ] interface HTMLShadowElement : HTMLElement {
     attribute boolean resetStyleInheritance;
     readonly attribute ShadowRoot olderShadowRoot;
diff --git a/html/track/TextTrack.idl b/html/track/TextTrack.idl
index 97360b0..592047c 100644
--- a/html/track/TextTrack.idl
+++ b/html/track/TextTrack.idl
@@ -25,9 +25,9 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     EventTarget,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface TextTrack {
     readonly attribute DOMString kind;
     readonly attribute DOMString label;
@@ -39,24 +39,21 @@
     readonly attribute TextTrackCueList activeCues;
              attribute EventListener oncuechange;
 
-    void addCue(in TextTrackCue cue);
-    void removeCue(in TextTrackCue cue)
-        raises (DOMException);
+    void addCue(TextTrackCue cue);
+    [RaisesException] void removeCue(TextTrackCue cue);
 
 #if defined(ENABLE_WEBVTT_REGIONS) && ENABLE_WEBVTT_REGIONS
     readonly attribute TextTrackRegionList regions;
-    void addRegion(in TextTrackRegion region);
-    void removeRegion(in TextTrackRegion region)
-        raises (DOMException);
+    void addRegion(TextTrackRegion region);
+    [RaisesException] void removeRegion(TextTrackRegion region);
 #endif
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/html/track/TextTrackCue.idl b/html/track/TextTrackCue.idl
index 686f37f..e21579a 100644
--- a/html/track/TextTrackCue.idl
+++ b/html/track/TextTrackCue.idl
@@ -25,8 +25,8 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack,
-    Constructor(in double startTime, in double endTime, in DOMString text),
+    EnabledAtRuntime=webkitVideoTrack,
+    Constructor(double startTime, double endTime, DOMString text),
     CallWith=ScriptExecutionContext,
     EventTarget,
     ImplementationLacksVTable
@@ -34,23 +34,16 @@
     readonly attribute TextTrack track;
 
     attribute DOMString id;
-    attribute double startTime
-        setter raises (DOMException);
-    attribute double endTime
-        setter raises (DOMException);
+    [SetterRaisesException] attribute double startTime;
+    [SetterRaisesException] attribute double endTime;
     attribute boolean pauseOnExit;
 
-    attribute DOMString vertical
-        setter raises (DOMException);
+    [SetterRaisesException] attribute DOMString vertical;
     attribute boolean snapToLines;
-    attribute long line
-        setter raises (DOMException);
-    attribute long position
-        setter raises (DOMException);
-    attribute long size
-        setter raises (DOMException);
-    attribute DOMString align
-        setter raises (DOMException);
+    [SetterRaisesException] attribute long line;
+    [SetterRaisesException] attribute long position;
+    [SetterRaisesException] attribute long size;
+    [SetterRaisesException] attribute DOMString align;
 
     attribute DOMString text;
     DocumentFragment getCueAsHTML();
@@ -59,14 +52,13 @@
     attribute EventListener onexit;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 
 #if defined(ENABLE_WEBVTT_REGIONS) && ENABLE_WEBVTT_REGIONS
     attribute DOMString regionId;
diff --git a/html/track/TextTrackCueList.idl b/html/track/TextTrackCueList.idl
index e51349c..3c163ad 100644
--- a/html/track/TextTrackCueList.idl
+++ b/html/track/TextTrackCueList.idl
@@ -25,12 +25,12 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     IndexedGetter,
     ImplementationLacksVTable
 ] interface TextTrackCueList {
     readonly attribute unsigned long length;
-    TextTrackCue item(in unsigned long index);
-    TextTrackCue getCueById(in DOMString id);
+    TextTrackCue item(unsigned long index);
+    TextTrackCue getCueById(DOMString id);
 };
 
diff --git a/html/track/TextTrackList.idl b/html/track/TextTrackList.idl
index d525332..2ad9345 100644
--- a/html/track/TextTrackList.idl
+++ b/html/track/TextTrackList.idl
@@ -25,23 +25,22 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     IndexedGetter,
     EventTarget,
-    V8GenerateIsReachable=ImplOwnerRoot
+    GenerateIsReachable=ImplOwnerRoot
 ] interface TextTrackList {
     readonly attribute unsigned long length;
-    TextTrack item(in unsigned long index);
+    TextTrack item(unsigned long index);
 
     attribute EventListener onaddtrack;
 
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/html/track/TextTrackRegion.idl b/html/track/TextTrackRegion.idl
index 29fdf7a..db84177 100644
--- a/html/track/TextTrackRegion.idl
+++ b/html/track/TextTrackRegion.idl
@@ -25,25 +25,18 @@
 
 [
     Conditional=VIDEO_TRACK & WEBVTT_REGIONS,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     Constructor()
 ] interface TextTrackRegion {
     readonly attribute TextTrack track;
 
     attribute DOMString id;
-    attribute double width
-        setter raises (DOMException);
-    attribute long height
-        setter raises (DOMException);
-    attribute double regionAnchorX
-        setter raises (DOMException);
-    attribute double regionAnchorY
-        setter raises (DOMException);
-    attribute double viewportAnchorX
-        setter raises (DOMException);
-    attribute double viewportAnchorY
-        setter raises (DOMException);
-    attribute DOMString scroll
-        setter raises (DOMException);
+    [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;
 };
 
diff --git a/html/track/TextTrackRegionList.idl b/html/track/TextTrackRegionList.idl
index 3dca629..94fa097 100644
--- a/html/track/TextTrackRegionList.idl
+++ b/html/track/TextTrackRegionList.idl
@@ -25,12 +25,12 @@
 
 [
     Conditional=VIDEO_TRACK & WEBVTT_REGIONS,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     IndexedGetter,
     ImplementationLacksVTable
 ] interface TextTrackRegionList {
     readonly attribute unsigned long length;
-    TextTrackRegion item(in unsigned long index);
-    TextTrackRegion getRegionById(in DOMString id);
+    TextTrackRegion item(unsigned long index);
+    TextTrackRegion getRegionById(DOMString id);
 };
 
diff --git a/html/track/TrackEvent.idl b/html/track/TrackEvent.idl
index 59b5ca6..e7a645f 100644
--- a/html/track/TrackEvent.idl
+++ b/html/track/TrackEvent.idl
@@ -25,7 +25,7 @@
 
 [
     Conditional=VIDEO_TRACK,
-    V8EnabledAtRuntime=webkitVideoTrack,
+    EnabledAtRuntime=webkitVideoTrack,
     ConstructorTemplate=Event
 ] interface TrackEvent : Event {
     [InitializedByEventConstructor, CustomGetter] readonly attribute object track;
diff --git a/inspector/CodeGeneratorInspector.py b/inspector/CodeGeneratorInspector.py
index b43e2ec..467fa3f 100755
--- a/inspector/CodeGeneratorInspector.py
+++ b/inspector/CodeGeneratorInspector.py
@@ -40,17 +40,6 @@
 
 import CodeGeneratorInspectorStrings
 
-
-DOMAIN_DEFINE_NAME_MAP = {
-    "Database": "SQL_DATABASE",
-    "Debugger": "JAVASCRIPT_DEBUGGER",
-    "DOMDebugger": "JAVASCRIPT_DEBUGGER",
-    "FileSystem": "FILE_SYSTEM",
-    "Profiler": "JAVASCRIPT_DEBUGGER",
-    "Worker": "WORKERS",
-}
-
-
 # Manually-filled map of type name replacements.
 TYPE_NAME_FIX_MAP = {
     "RGBA": "Rgba",  # RGBA is reported to be conflicting with a define name in Windows CE.
@@ -91,7 +80,7 @@
     # Work with python 2 and 3 http://docs.python.org/py3k/howto/pyporting.html
     exc = sys.exc_info()[1]
     sys.stderr.write("Failed to parse command-line arguments: %s\n\n" % exc)
-    sys.stderr.write("Usage: <script> Inspector.json --output_h_dir <output_header_dir> --output_cpp_dir <output_cpp_dir>\n")
+    sys.stderr.write("Usage: <script> protocol.json --output_h_dir <output_header_dir> --output_cpp_dir <output_cpp_dir>\n")
     exit(1)
 
 
@@ -184,22 +173,6 @@
             skip_js_bind = domain_name in cls.skip_js_bind_domains
             agent_field_name = field_name_res
 
-            @staticmethod
-            def get_guard():
-                if domain_name in DOMAIN_DEFINE_NAME_MAP:
-                    define_name = DOMAIN_DEFINE_NAME_MAP[domain_name]
-
-                    class Guard:
-                        @staticmethod
-                        def generate_open(output):
-                            output.append("#if ENABLE(%s)\n" % define_name)
-
-                        @staticmethod
-                        def generate_close(output):
-                            output.append("#endif // ENABLE(%s)\n" % define_name)
-
-                    return Guard
-
         return Res
 
     skip_js_bind_domains = set(["DOMDebugger"])
@@ -928,9 +901,6 @@
                                     validator_writer = generate_context.validator_writer
 
                                     domain_fixes = DomainNameFixes.get_fixed_data(context_domain_name)
-                                    domain_guard = domain_fixes.get_guard()
-                                    if domain_guard:
-                                        domain_guard.generate_open(validator_writer)
 
                                     validator_writer.newline("void %s%s::assertCorrectValue(InspectorValue* value)\n" % (helper.full_name_prefix_for_impl, enum_name))
                                     validator_writer.newline("{\n")
@@ -945,9 +915,6 @@
                                         validator_writer.newline("    ASSERT(%s);\n" % " || ".join(condition_list))
                                     validator_writer.newline("}\n")
 
-                                    if domain_guard:
-                                        domain_guard.generate_close(validator_writer)
-
                                     validator_writer.newline("\n\n")
 
                                 writer.newline("}; // struct ")
@@ -1271,9 +1238,6 @@
                                     validator_writer = generate_context.validator_writer
 
                                     domain_fixes = DomainNameFixes.get_fixed_data(context_domain_name)
-                                    domain_guard = domain_fixes.get_guard()
-                                    if domain_guard:
-                                        domain_guard.generate_open(validator_writer)
 
                                     validator_writer.newline("void %s%s::assertCorrectValue(InspectorValue* value)\n" % (helper.full_name_prefix_for_impl, class_name))
                                     validator_writer.newline("{\n")
@@ -1310,9 +1274,6 @@
                                         validator_writer.newline("    }\n")
                                     validator_writer.newline("}\n")
 
-                                    if domain_guard:
-                                        domain_guard.generate_close(validator_writer)
-
                                     validator_writer.newline("\n\n")
 
                                 if is_open_type:
@@ -1856,12 +1817,6 @@
 
             domain_fixes = DomainNameFixes.get_fixed_data(domain_name)
 
-            domain_guard = domain_fixes.get_guard()
-
-            if domain_guard:
-                for l in first_cycle_guardable_list_list:
-                    domain_guard.generate_open(l)
-
             agent_field_name = domain_fixes.agent_field_name
 
             frontend_method_declaration_lines = []
@@ -1911,9 +1866,6 @@
             Generator.backend_setters_list.append("    virtual void registerAgent(%s* %s) { ASSERT(!m_%s); m_%s = %s; }" % (agent_interface_name, agent_field_name, agent_field_name, agent_field_name, agent_field_name))
             Generator.backend_field_list.append("    %s* m_%s;" % (agent_interface_name, agent_field_name))
 
-            if domain_guard:
-                for l in reversed(first_cycle_guardable_list_list):
-                    domain_guard.generate_close(l)
             Generator.backend_js_domain_initializer_list.append("\n")
 
     @staticmethod
@@ -2254,14 +2206,11 @@
             writer = Writer(out, "")
             for domain_data in type_map.domains():
                 domain_fixes = DomainNameFixes.get_fixed_data(domain_data.name())
-                domain_guard = domain_fixes.get_guard()
 
                 namespace_declared = []
 
                 def namespace_lazy_generator():
                     if not namespace_declared:
-                        if domain_guard:
-                            domain_guard.generate_open(out)
                         writer.newline("namespace ")
                         writer.append(domain_data.name())
                         writer.append(" {\n")
@@ -2277,9 +2226,6 @@
                     writer.append(domain_data.name())
                     writer.append("\n\n")
 
-                    if domain_guard:
-                        domain_guard.generate_close(out)
-
         def create_type_builder_caller(generate_pass_id):
             def call_type_builder(type_data, writer_getter):
                 code_generator = type_data.get_binding().get_code_generator()
diff --git a/inspector/CodeGeneratorInspectorStrings.py b/inspector/CodeGeneratorInspectorStrings.py
index a045604..741bf6a 100644
--- a/inspector/CodeGeneratorInspectorStrings.py
+++ b/inspector/CodeGeneratorInspectorStrings.py
@@ -95,11 +95,6 @@
 
 class InspectorFrontendChannel;
 
-// Both InspectorObject and InspectorArray may or may not be declared at this point as defined by ENABLED_INSPECTOR.
-// Double-check we have them at least as forward declaration.
-class InspectorArray;
-class InspectorObject;
-
 typedef String ErrorString;
 
 class InspectorFrontend {
diff --git a/inspector/InjectedScriptHost.idl b/inspector/InjectedScriptHost.idl
index 7ece9d7..468724f 100644
--- a/inspector/InjectedScriptHost.idl
+++ b/inspector/InjectedScriptHost.idl
@@ -31,24 +31,23 @@
  */
 
 [
-    Conditional=INSPECTOR,
     ImplementationLacksVTable
 ] interface InjectedScriptHost {
     void clearConsoleMessages();
 
-    void copyText(in DOMString text);
-    [Custom] void inspect(in any objectId, in any hints);
-    [Custom] any inspectedObject(in int num);
-    [Custom] any internalConstructorName(in any object);
-    [Custom] boolean isHTMLAllCollection(in any object);
-    [Custom] DOMString type(in any object);
-    [Custom] any functionDetails(in any object);
-    [Custom] Array getInternalProperties(in any object);
-    [Custom] Array getEventListeners(in Node node);
-    [Custom] any evaluate(in DOMString text);
-    [Custom] DOMString databaseId(in any database);
-    [Custom] DOMString storageId(in any storage);
+    void copyText(DOMString text);
+    [Custom] void inspect(any objectId, any hints);
+    [Custom] any inspectedObject(int num);
+    [Custom] any internalConstructorName(any object);
+    [Custom] boolean isHTMLAllCollection(any object);
+    [Custom] DOMString type(any object);
+    [Custom] any functionDetails(any object);
+    [Custom] Array getInternalProperties(any object);
+    [Custom] Array getEventListeners(Node node);
+    [Custom] any evaluate(DOMString text);
+    [Custom] DOMString databaseId(any database);
+    [Custom] DOMString storageId(any storage);
 
     // Only declarative scope (local, with and catch) is accepted. Returns undefined. 
-    [Custom] any setFunctionVariableValue(in any functionObject, in int scopeIndex, in DOMString variableName, any newValue);
+    [Custom] any setFunctionVariableValue(any functionObject, int scopeIndex, DOMString variableName, any newValue);
 };
diff --git a/inspector/Inspector-0.1.json b/inspector/Inspector-0.1.json
deleted file mode 100644
index a5c0303..0000000
--- a/inspector/Inspector-0.1.json
+++ /dev/null
@@ -1,2024 +0,0 @@
-{
-    "compatible": [],
-    "domains" : [{
-        "domain": "Inspector",
-        "hidden": true,
-        "types": [],
-        "commands": [
-        ],
-        "events": [
-            {
-                "name": "frontendReused"
-            },
-            {
-                "name": "bringToFront"
-            },
-            {
-                "name": "disconnectFromBackend"
-            },
-            {
-                "name": "reset"
-            },
-            {
-                "name": "showPanel",
-                "parameters": [
-                    { "name": "panel", "type": "string" }
-                ]
-            },
-            {
-                "name": "startUserInitiatedDebugging"
-            },
-            {
-                "name": "evaluateForTestInFrontend",
-                "parameters": [
-                    { "name": "testCallId", "type": "integer" },
-                    { "name": "script", "type": "string" }
-                ]
-            },
-            {
-                "name": "inspect",
-                "parameters": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject" },
-                    { "name": "hints", "type": "object" }
-                ]
-            },
-            {
-                "name": "didCreateWorker",
-                "parameters": [
-                    { "name": "id", "type": "integer" },
-                    { "name": "url", "type": "string" },
-                    { "name": "isShared", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "didDestroyWorker",
-                "parameters": [
-                    { "name": "id", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Page",
-        "description": "Actions and events related to the inspected page belong to the page domain.",
-        "types": [
-            {
-                "id": "ResourceType",
-                "type": "string",
-                "enum": ["Document", "Stylesheet", "Image", "Font", "Script", "XHR", "WebSocket", "Other"],
-                "description": "Resource type as it was perceived by the rendering engine."
-            },
-            {
-                "id": "Frame",
-                "type": "object",
-                "description": "Information about the Frame on the page.",
-                "properties": [
-                    { "name": "id", "type": "string", "description": "Frame unique identifier." },
-                    { "name": "parentId", "type": "string", "optional": true, "description": "Parent frame identifier." },
-                    { "name": "loaderId", "$ref": "Network.LoaderId", "description": "Identifier of the loader associated with this frame." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Frame's name as specified in the tag." },
-                    { "name": "url", "type": "string", "description": "Frame document's URL." },
-                    { "name": "mimeType", "type": "string", "description": "Frame document's mimeType as determined by the browser." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "FrameResourceTree",
-                "type": "object",
-                "description": "Information about the Frame hierarchy along with their cached resources.",
-                "properties": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame information for this tree item." },
-                    { "name": "childFrames", "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" }, "description": "Child frames." },
-                    { "name": "resources", "type": "array",
-                        "items": {
-                            "type": "object",
-                            "properties": [
-                                { "name": "url", "type": "string", "description": "Resource URL." },
-                                { "name": "type", "$ref": "ResourceType", "description": "Type of this resource." },
-                                { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." }
-                            ]
-                        },
-                        "description": "Information about frame resources."
-                    }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "SearchResult",
-                "type": "object",
-                "description": "Search result for resource.",
-                "properties": [
-	                { "name": "url", "type": "string", "description": "Resource URL." },
-                    { "name": "frameId", "type": "string", "description": "Resource frame id." },
-                    { "name": "matchesCount", "type": "number", "description": "Number of matches in the resource content." }
-                ],
-                "hidden": true
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables page domain notifications."
-            },
-            {
-                "name": "disable",
-                "description": "Disables page domain notifications."
-            },
-            {
-                "name": "addScriptToEvaluateOnLoad",
-                "parameters": [
-                    { "name": "scriptSource", "type": "string" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "removeAllScriptsToEvaluateOnLoad",
-                "hidden": true
-            },
-            {
-                "name": "reload",
-                "parameters": [
-                    { "name": "ignoreCache", "type": "boolean", "optional": true, "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh)." }
-                ],
-                "description": "Reloads given page optionally ignoring the cache."
-            },
-            {
-                "name": "open",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL to open." },
-                    { "name": "newWindow", "optional": true, "type": "boolean", "description": "If true, opens given URL in a new window or tab." }
-                ],
-                "description": "Opens given URL either in the inspected page or in a new tab / window.",
-                "hidden": true
-            },
-            {
-                "name": "getCookies",
-                "returns": [
-                    { "name": "cookies", "type": "array", "items": { "$ref": "Cookie"}, "description": "Array of cookie objects." },
-                    { "name": "cookiesString", "type": "string", "description": "document.cookie string representation of the cookies." }
-                ],
-                "description": "Returns all browser cookies. Depending on the backend support, will either return detailed cookie information in the <code>cookie</code> field or string cookie representation using <code>cookieString</code>.",
-                "hidden": true
-            },
-            {
-                "name": "deleteCookie",
-                "parameters": [
-                    { "name": "cookieName", "type": "string", "description": "Name of the cookie to remove." },
-                    { "name": "domain", "type": "string", "description": "Domain of the cookie to remove." }
-                ],
-                "description": "Deletes browser cookie with given name for the given domain.",
-                "hidden": true
-            },
-            {
-                "name": "getResourceTree",
-                "description": "Returns present frame / resource tree structure.",
-                "returns": [
-                    { "name": "frameTree", "$ref": "FrameResourceTree", "description": "Present frame / resource tree structure." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "getResourceContent",
-                "description": "Returns content of the given resource.",
-                "parameters": [
-                    { "name": "frameId", "type": "string", "description": "Frame id to get resource for." },
-                    { "name": "url", "type": "string", "description": "URL of the resource to get content for." }
-                ],
-                "returns": [
-                    { "name": "content", "type": "string", "description": "Resource content." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was served as base64." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "searchInResources",
-                "description": "Searches for given string in frame / resource tree structure.",
-                "parameters": [
-                    { "name": "text", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "SearchResult" }, "description": "List of search results." }
-                ],
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "domContentEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "loadEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "frameNavigated",
-                "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.",
-                "parameters": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame object." },
-                    { "name": "loaderId", "$ref": "Network.LoaderId", "description": "Loader identifier." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameDetached",
-                "description": "Fired when frame has been detached from its parent.",
-                "parameters": [
-                    { "name": "frameId", "type": "string", "description": "Id of the frame that has been detached." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Runtime",
-        "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
-        "types": [
-            {
-                "id": "RemoteObjectId",
-                "type": "string",
-                "description": "Unique object identifier."
-            },
-            {
-                "id": "RemoteObject",
-                "type": "object",
-                "description": "Mirror object referencing original JavaScript object.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean"], "description": "Object type." },
-                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date"], "description": "Object subtype hint. Specified for <code>object</code> type values only." },
-                    { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for <code>object</code> type values only." },
-                    { "name": "value", "type": "any", "optional": true, "description": "Remote object value (in case of primitive values or JSON values if it was requested)." },
-                    { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." }
-                ]
-            },
-            {
-                "id": "PropertyDescriptor",
-                "type": "object",
-                "description": "Object property descriptor.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Property name." },
-                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." },
-                    { "name": "writable", "type": "boolean", "optional": true, "description": "True if the value associated with the property may be changed (data descriptors only)." },
-                    { "name": "get", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only)." },
-                    { "name": "set", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only)." },
-                    { "name": "configurable", "type": "boolean", "description": "True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object." },
-                    { "name": "enumerable", "type": "boolean", "description": "True if this property shows up during enumeration of the properties on the corresponding object." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ]
-            },
-            {
-                "id": "CallArgument",
-                "type": "object",
-                "description": "Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.",
-                "properties": [
-                    { "name": "value", "type": "any", "optional": true, "description": "Primitive value." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Remote object handle." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "evaluate",
-                "parameters": [
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Determines whether Command Line API should be available during the evaluation.", "hidden": true },
-                    { "name": "doNotPauseOnExceptions", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions. Overrides setPauseOnException state.", "hidden": true },
-                    { "name": "frameId", "type": "string", "optional": true, "description": "Specifies in which frame to perform evaluation.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on global object."
-            },
-            {
-                "name": "callFunctionOn",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to call function on." },
-                    { "name": "functionDeclaration", "type": "string", "description": "Declaration of the function to call." },
-                    { "name": "arguments", "type": "array", "items": { "$ref": "CallArgument", "description": "Call argument." }, "optional": true, "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target object." },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Call result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "getProperties",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to return properties for." },
-                    { "name": "ownProperties", "optional": true, "type": "boolean", "description": "If true, returns properties belonging only to the element itself, not to its prototype chain." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "PropertyDescriptor"}, "description": "Object properties." }
-                ],
-                "description": "Returns properties of a given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "releaseObject",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to release." }
-                ],
-                "description": "Releases remote object with given id."
-            },
-            {
-                "name": "releaseObjectGroup",
-                "parameters": [
-                    { "name": "objectGroup", "type": "string", "description": "Symbolic object group name." }
-                ],
-                "description": "Releases all remote objects that belong to a given group."
-            }
-        ]
-    },
-    {
-        "domain": "Console",
-        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> command in order to start receiving the console messages. Browser collects messages issued while console domain is not enabled as well and reports them using <code>messageAdded</code> notification upon enabling.",
-        "types": [
-            {
-                "id": "ConsoleMessage",
-                "type": "object",
-                "description": "Console message.",
-                "properties": [
-                    { "name": "source", "type": "string", "enum": ["html", "wml", "xml", "javascript", "network", "console-api", "other"], "description": "Message source." },
-                    { "name": "level", "type": "string", "enum": ["tip", "log", "warning", "error", "debug"], "description": "Message severity." },
-                    { "name": "text", "type": "string", "description": "Message text." },
-                    { "name": "type", "type": "string", "optional": true, "enum": ["log", "dir", "dirxml", "trace", "startGroup", "startGroupCollapsed", "endGroup", "assert"], "description": "Console message type." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the message origin." },
-                    { "name": "line", "type": "integer", "optional": true, "description": "Line number in the resource that generated this message." },
-                    { "name": "repeatCount", "type": "integer", "optional": true, "description": "Repeat count for repeated messages." },
-                    { "name": "networkRequestId", "$ref": "Network.RequestId", "optional": true, "description": "Identifier of the network request associated with this message." },
-                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "optional": true, "description": "Message parameters in case of the formatted message." },
-                    { "name": "stackTrace", "$ref": "StackTrace", "optional": true, "description": "JavaScript stack trace for assertions and error messages." }
-                ]
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "description": "Stack entry for console errors and assertions.",
-                "properties": [
-                    { "name": "functionName", "type": "string", "description": "JavaScript function name." },
-                    { "name": "url", "type": "string", "description": "JavaScript script name or url." },
-                    { "name": "lineNumber", "type": "integer", "description": "JavaScript script line number." },
-                    { "name": "columnNumber", "type": "integer", "description": "JavaScript script column number." }
-                ]
-            },
-            {
-                "id": "StackTrace",
-                "type": "array",
-                "items": { "$ref": "CallFrame" },
-                "description": "Call frames for assertions or error messages."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "returns": [
-                    { "name": "expiredMessagesCount", "type": "integer",  "optional": true, "description": "Number of messages dropped due to message threashold overflow." }
-                ],
-                "description": "Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification." 
-            },
-            {
-                "name": "disable",
-                "description": "Disables console domain, prevents further console messages from being reported to the client." 
-            },
-            {
-                "name": "clearMessages",
-                "description": "Clears console messages collected in the browser." 
-            },
-            {
-                "name": "setMonitoringXHREnabled",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "Monitoring enabled state." }
-                ],
-                "description": "Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.", 
-                "hidden": true
-            },
-            {
-                "name": "addInspectedNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "DOM node id to be accessible by means of $x command line API." }
-                ],
-                "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "messageAdded",
-                "parameters": [
-                    { "name": "message", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
-                ],
-                "description": "Issued when new console message is added."
-            },
-            {
-                "name": "messageRepeatCountUpdated",
-                "parameters": [
-                    { "name": "count", "type": "integer", "description": "New repeat count value." }
-                ],
-                "description": "Issued when subsequent message(s) are equal to the previous one(s)."
-            },
-            {
-                "name": "messagesCleared",
-                "description": "Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation."
-            }
-        ]
-    },
-    {
-        "domain": "Network",
-        "description": "Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.",
-        "types": [
-            {
-                "id": "LoaderId",
-                "type": "string",
-                "description": "Unique loader identifier."
-            },
-            {
-                "id": "RequestId",
-                "type": "string",
-                "description": "Unique request identifier."
-            },
-            {
-                "id": "Timestamp",
-                "type": "number",
-                "description": "Number of seconds since epoch."
-            },
-            {
-                "id": "Headers",
-                "type": "object",
-                "description": "Request / response headers as keys / values of JSON object."
-            },
-            {
-                "id": "ResourceTiming",
-                "type": "object",
-                "description": "Timing information for the request.",
-                "properties": [
-                    { "name": "requestTime", "type": "number", "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this requestTime." },
-                    { "name": "proxyStart", "type": "number", "description": "Started resolving proxy." },
-                    { "name": "proxyEnd", "type": "number", "description": "Finished resolving proxy." },
-                    { "name": "dnsStart", "type": "number", "description": "Started DNS address resolve." },
-                    { "name": "dnsEnd", "type": "number", "description": "Finished DNS address resolve." },
-                    { "name": "connectStart", "type": "number", "description": "Started connecting to the remote host." },
-                    { "name": "connectEnd", "type": "number", "description": "Connected to the remote host." },
-                    { "name": "sslStart", "type": "number", "description": "Started SSL handshake." },
-                    { "name": "sslEnd", "type": "number", "description": "Finished SSL handshake." },
-                    { "name": "sendStart", "type": "number", "description": "Started sending request." },
-                    { "name": "sendEnd", "type": "number", "description": "Finished sending request." },
-                    { "name": "receiveHeadersEnd", "type": "number", "description": "Finished receiving response headers." }
-                ]
-            },
-            {
-                "id": "Request",
-                "type": "object",
-                "description": "HTTP request data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Request URL." },
-                    { "name": "method", "type": "string", "description": "HTTP request method." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." },
-                    { "name": "postData", "type": "string", "optional": true, "description": "HTTP POST request data." }
-                ]
-            },
-            {
-                "id": "Response",
-                "type": "object",
-                "description": "HTTP response data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Response URL." },
-                    { "name": "status", "type": "number", "description": "HTTP response status code." },
-                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
-                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
-                    { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
-                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
-                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
-                    { "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
-                    { "name": "connectionId", "type": "number", "description": "Physical connection id that was actually used for this request." },
-                    { "name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache." },
-                    { "name": "timing", "$ref": "ResourceTiming", "optional": true, "description": "Timing information for the given request." }
-                ]
-            },
-            {
-                "id": "CachedResource",
-                "type": "object",
-                "description": "Information about the cached resource.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource URL." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Type of this resource." },
-                    { "name": "response", "$ref": "Response", "optional": true, "description": "Cached response data." },
-                    { "name": "bodySize", "type": "number", "description": "Cached response body size." }
-                ]
-            },
-            {
-                "id": "Initiator",
-                "type": "object",
-                "description": "Information about the request initiator.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["parser", "script", "other"], "description": "Type of this initiator." },
-                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "Initiator JavaScript stack trace, set for Script only." },
-                    { "name": "url", "type": "string", "optional": true, "description": "Initiator URL, set for Parser type only." },
-                    { "name": "lineNumber", "type": "number", "optional": true, "description": "Initiator line number, set for Parser type only." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables network tracking, network events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables network tracking, prevents network events from being sent to the client."
-            },
-            {
-                "name": "setUserAgentOverride",
-                "description": "Allows overriding user agent with the given string.",
-                "parameters": [
-                    { "name": "userAgent", "type": "string", "description": "User agent to use." }
-                ]
-            },
-            {
-                "name": "setExtraHTTPHeaders",
-                "description": "Specifies whether to always send extra HTTP headers with the requests from this page.",
-                "parameters": [
-                    { "name": "headers", "$ref": "Headers", "description": "Map with extra HTTP headers." }
-                ]
-            },
-            {
-                "name": "getResponseBody",
-                "description": "Returns content served for the given request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of the network request to get content for." }
-                ],
-                "returns": [
-                    { "name": "body", "type": "string", "description": "Response body." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was sent as base64." }
-                ]
-            },
-            {
-                "name": "clearBrowserCache",
-                "description": "Clears browser cache."
-            },
-            {
-                "name": "clearBrowserCookies",
-                "description": "Clears browser cookies."
-            },
-            {
-                "name": "setCacheDisabled",
-                "parameters": [
-                    { "name": "cacheDisabled", "type": "boolean", "description": "Cache disabled state." }
-                ],
-                "description": "Toggles ignoring cache for each request. If <code>true</code>, cache will not be used." 
-            }
-        ],
-        "events": [
-            {
-                "name": "requestWillBeSent",
-                "description": "Fired when page is about to send HTTP request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "type": "string", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "request", "$ref": "Request", "description": "Request data." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "JavaScript stack trace upon issuing this request." },
-                    { "name": "redirectResponse", "optional": true, "$ref": "Response", "description": "Redirect response data." }
-                ]
-            },
-            {
-                "name": "requestServedFromCache",
-                "description": "Fired if request ended up loading from cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." }
-                ]
-            },
-            {
-                "name": "responseReceived",
-                "description": "Fired when HTTP response is available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
-                    { "name": "response", "$ref": "Response", "description": "Response data." }
-                ]
-            },
-            {
-                "name": "dataReceived",
-                "description": "Fired when data chunk was received over the network.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "dataLength", "type": "integer", "description": "Data chunk length." },
-                    { "name": "encodedDataLength", "type": "integer", "description": "Actual bytes received (might be less than dataLength for compressed encodings)." }
-                ]
-            },
-            {
-                "name": "loadingFinished",
-                "description": "Fired when HTTP request has finished loading.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ]
-            },
-            {
-                "name": "loadingFailed",
-                "description": "Fired when HTTP request has failed to load.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "errorText", "type": "string", "description": "User friendly error message." },
-                    { "name": "canceled", "type": "boolean", "optional": true, "description": "True if loading was canceled." }
-                ]
-            },
-            {
-                "name": "requestServedFromMemoryCache",
-                "description": "Fired when HTTP request has been served from memory cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "type": "string", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "resource", "$ref": "CachedResource", "description": "Cached resource data." }
-                ]
-            },
-            {
-                "name": "webSocketWillSendHandshakeRequest",
-                "description": "Fired when WebSocket is about to initiate handshake.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "request", "type": "object", "description": "WebSocket request data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketHandshakeResponseReceived",
-                "description": "Fired when WebSocket handshake response becomes available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "response", "type": "object", "description": "WebSocket response data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketCreated",
-                "description": "Fired upon WebSocket creation.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "url", "type": "string", "description": "WebSocket request URL." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketClosed",
-                "description": "Fired when WebSocket is closed.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Database",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Database",
-                "type": "object",
-                "description": "Database object."
-            },
-            {
-                "id": "Error",
-                "type": "object",
-                "description": "Database error."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables database tracking, database events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables database tracking, prevents database events from being sent to the client."
-            },
-            {
-                "name": "getDatabaseTableNames",
-                "parameters": [
-                    { "name": "databaseId", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "tableNames", "type": "array", "items": { "type": "string" } }
-                ]
-            },
-            {
-                "name": "executeSQL",
-                "parameters": [
-                    { "name": "databaseId", "type": "integer" },
-                    { "name": "query", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" },
-                    { "name": "transactionId", "type": "integer" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addDatabase",
-                "parameters": [
-                    { "name": "database", "$ref": "Database" }
-                ]
-            },
-            {
-                "name": "sqlTransactionSucceeded",
-                "parameters": [
-                    { "name": "transactionId", "type": "integer" },
-                    { "name": "columnNames", "type": "array", "items": { "type": "string" } },
-                    { "name": "values", "type": "array", "items": { "type": "string or number" }}
-                ]
-            },
-            {
-                "name": "sqlTransactionFailed",
-                "parameters": [
-                    { "name": "transactionId", "type": "integer" },
-                    { "name": "sqlError", "$ref": "Error" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "DOMStorage",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables storage tracking, storage events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables storage tracking, prevents storage events from being sent to the client."
-            },
-            {
-                "name": "getDOMStorageEntries",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "entries", "type": "array", "items": { "$ref": "DOMStorageEntry"} }
-                ]
-            },
-            {
-                "name": "setDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" },
-                    { "name": "key", "type": "string" },
-                    { "name": "value", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "removeDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" },
-                    { "name": "key", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addDOMStorage",
-                "parameters": [
-                    { "name": "storage", "type": "object" }
-                ]
-            },
-            {
-                "name": "updateDOMStorage",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "ApplicationCache",
-        "hidden": true,
-        "types": [
-            {
-                "id": "AppCache",
-                "type": "object",
-                "description": "AppCache."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getApplicationCaches",
-                "returns": [
-                    { "name": "applicationCaches", "$ref": "AppCache" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "updateApplicationCacheStatus",
-                "parameters": [
-                    { "name": "status", "type": "integer" }
-                ]
-            },
-            {
-                "name": "updateNetworkState",
-                "parameters": [
-                    { "name": "isNowOnline", "type": "boolean" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "DOM",
-        "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an <code>id</code>. This <code>id</code> can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.<p>Note that <code>iframe</code> owner elements will return corresponding document elements as their child nodes.</p>",
-        "types": [
-            {
-                "id": "NodeId",
-                "type": "integer",
-                "description": "Unique DOM node identifier."
-            },
-            {
-                "id": "Node",
-                "type": "object",
-                "properties": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." },
-                    { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
-                    { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
-                    { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
-                    { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
-                    { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
-                    { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
-                    { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
-                    { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
-                    { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
-                    { "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
-                    { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
-                    { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "EventListener",
-                "type": "object",
-                "hidden": true,
-                "properties": [
-                    { "name": "type", "type": "string", "description": "<code>EventListener</code>'s type." },
-                    { "name": "useCapture", "type": "boolean", "description": "<code>EventListener</code>'s useCapture." },
-                    { "name": "isAttribute", "type": "boolean", "description": "<code>EventListener</code>'s isAttribute." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
-                    { "name": "handlerBody", "type": "string", "description": "Event handler function body." },
-                    { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "RGBA",
-                "type": "object",
-                "properties": [
-                    { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
-                    { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
-                    { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
-                    { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
-                ],
-                "description": "A structure holding an RGBA color."
-            },
-            {
-                "id": "HighlightConfig",
-                "type": "object",
-                "properties": [
-                    { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
-                    { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." },
-                    { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." }
-                ],
-                "description": "Configuration data for the highlighting of page elements."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getDocument",
-                "returns": [
-                    { "name": "root", "$ref": "Node", "description": "Resulting node." }
-                ],
-                "description": "Returns the root DOM node to the caller."
-            },
-            {
-                "name": "requestChildNodes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." }
-                ],
-                "description": "Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events."
-            },
-            {
-                "name": "querySelector",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelector</code> on a given node."
-            },
-            {
-                "name": "querySelectorAll",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelectorAll</code> on a given node."
-            },
-            {
-                "name": "setNodeName",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
-                    { "name": "name", "type": "string", "description": "New node's name." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
-                ],
-                "description": "Sets node name for a node with given id."
-            },
-            {
-                "name": "setNodeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
-                    { "name": "value", "type": "string", "description": "New node's value." }
-                ],
-                "description": "Sets node value for a node with given id."
-            },
-            {
-                "name": "removeNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
-                ],
-                "description": "Removes node with given id."
-            },
-            {
-                "name": "setAttributeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Sets attribute for an element with given id."
-            },
-            {
-                "name": "setAttributesAsText",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
-                    { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
-                ],
-                "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs."
-            },
-            {
-                "name": "removeAttribute",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
-                    { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
-                ],
-                "description": "Removes attribute with given name from an element with given id."
-            },
-            {
-                "name": "getEventListenersForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get listeners for." }
-                ],
-                "returns": [
-                    { "name": "listeners", "type": "array", "items": { "$ref": "EventListener"}, "description": "Array of relevant listeners." }
-                ],
-                "description": "Returns event listeners relevant to the node.",
-                "hidden": true
-            },
-            {
-                "name": "copyNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to copy." }
-                ],
-                "description": "Copies node's HTML markup into the clipboard.",
-                "hidden": true
-            },
-            {
-                "name": "getOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
-                ],
-                "returns": [
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
-                ],
-                "description": "Returns node's HTML markup."
-            },
-            {
-                "name": "setOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
-                ],
-                "description": "Sets node HTML markup, returns new node id."
-            },
-            {
-                "name": "performSearch",
-                "parameters": [
-                    { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." },
-                    { "name": "runSynchronously", "type": "boolean", "optional": true, "description": "When set to true, performing search synchronously (can block user interaction)." }
-                ],
-                "description": "Starts asynchronous search for a given string in the DOM tree. Use <code>cancelSearch</code> to stop given asynchronous search task.",
-                "hidden": true
-            },
-            {
-                "name": "cancelSearch",
-                "description": "Cancels asynchronous search started with <code>performSearch</code>.",
-                "hidden": true
-            },
-            {
-                "name": "requestNode",
-                "parameters": [
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
-                ],
-                "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications."
-            },
-            {
-                "name": "setInspectModeEnabled",
-                "hidden": true,
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." },
-                    { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>." }
-                ],
-                "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection."
-            },
-            {
-                "name": "highlightRect",
-                "parameters": [
-                    { "name": "x", "type": "integer", "description": "X coordinate" },
-                    { "name": "y", "type": "integer", "description": "Y coordinate" },
-                    { "name": "width", "type": "integer", "description": "Rectangle width" },
-                    { "name": "height", "type": "integer", "description": "Rectangle height" },
-                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport."
-            },
-            {
-                "name": "highlightNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Identifier of the node to highlight." },
-                    { "name": "highlightConfig", "$ref": "HighlightConfig", "description": "A descriptor for the highlight appearance." }
-                ],
-                "description": "Highlights DOM node with given id."
-            },
-            {
-                "name": "hideHighlight",
-                "description": "Hides DOM node highlight."
-            },
-            {
-                "name": "highlightFrame",
-                "parameters": [
-                    { "name": "frameId", "type": "string", "description": "Identifier of the frame to highlight." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "contentOutlineColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights owner element of the frame with given id.",
-                "hidden": true
-            },
-            {
-                "name": "pushNodeByPathToFrontend",
-                "parameters": [
-                    { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
-                ],
-                "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath",
-                "hidden": true
-            },
-            {
-                "name": "resolveNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
-                ],
-                "returns": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
-                ],
-                "description": "Resolves JavaScript node object for given node id."
-            },
-            {
-                "name": "getAttributes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." }
-                ],
-                "returns": [
-                    { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
-                ],
-                "description": "Returns attributes for the specified node."
-            },
-            {
-                "name": "moveTo",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to drop." },
-                    { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop into." },
-                    { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before given one." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
-                ],
-                "description": "Moves node into the new container, places it before the given anchor."
-            }
-        ],
-        "events": [
-            {
-                "name": "documentUpdated",
-                "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
-            },
-            {
-                "name": "setChildNodes",
-                "parameters": [
-                    { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
-                    { "name": "nodes", "type": "array", "items": { "$ref": "Node"}, "description": "Child nodes array." }
-                ],
-                "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids."
-            },
-            {
-                "name": "attributeModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is modified."
-            },
-            {
-                "name": "attributeRemoved",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "Local attribute name." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is removed."
-            },
-            {
-                "name": "inlineStyleInvalidated",
-                "parameters": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
-                ],
-                "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
-                "hidden": true
-            },
-            {
-                "name": "characterDataModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "characterData", "type": "string", "description": "New text value." }
-                ],
-                "description": "Mirrors <code>DOMCharacterDataModified</code> event."
-            },
-            {
-                "name": "childNodeCountUpdated",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "childNodeCount", "type": "integer", "description": "New node count." }
-                ],
-                "description": "Fired when <code>Container</code>'s child node count has changed."
-            },
-            {
-                "name": "childNodeInserted",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." },
-                    { "name": "node", "$ref": "Node", "description": "Inserted node data." }
-                ],
-                "description": "Mirrors <code>DOMNodeInserted</code> event."
-            },
-            {
-                "name": "childNodeRemoved",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
-                ],
-                "description": "Mirrors <code>DOMNodeRemoved</code> event."
-            },
-            {
-                "name": "searchResults",
-                "parameters": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
-                ],
-                "description": "Pushes search results initiated using <code>performSearch</code> to the client.",
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "CSS",
-        "hidden": true,
-        "description": "This domain exposes CSS read/write operations. All CSS objects, like stylesheets, rules, and styles, have an associated <code>id</code> used in subsequent operations on the related object. Each object type has a specific <code>id</code> structure, and those are not interchangeable between objects of different kinds. CSS objects can be loaded using the <code>get*ForNode()</code> calls (which accept a DOM node id). Alternatively, a client can discover all the existing stylesheets with the <code>getAllStyleSheets()</code> method and subsequently load the required stylesheet contents using the <code>getStyleSheet[Text]()</code> methods.",
-        "types": [
-            {
-                "id": "CSSStyleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The style ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS style in a unique way."
-            },
-            {
-                "id": "CSSRuleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The rule ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS rule in a unique way."
-            },
-            {
-                "id": "CSSNodeStyles",
-                "type": "object",
-                "properties": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The node's inline style, if any." },
-                    { "name": "computedStyle", "$ref": "CSSComputedStyle", "description": "The node's computed style." },
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "CSS rules matching this node, from all applicable stylesheets." },
-                    { "name": "styleAttributes", "type": "array", "items": { "$ref": "CSSStyleAttribute" }, "description": "Entries for style-related element attributes (e.g. width=20)."},
-                    { "name": "pseudoElements", "type": "array", "items": { "$ref": "PseudoIdRules" }, "description": "Pseudo style rules for this node." },
-                    { "name": "inherited", "type": "array", "items": { "$ref": "InheritedStyleEntry" }, "description": "A chain of inherited styles (from the immediate node parent up to the DOM tree root)." }
-                ],
-                "description": "A holder for all CSS styles applicable to a particular DOM node."
-            },
-            {
-                "id": "PseudoIdRules",
-                "type": "object",
-                "properties": [
-                    { "name": "pseudoId", "type": "integer", "description": "Pseudo style identifier (see <code>enum PseudoId</code> in <code>RenderStyleConstants.h</code>)."},
-                    { "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "CSS rules applicable to the pseudo style."}
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "InheritedStyleEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "CSS rules matching the ancestor node in the style inheritance chain." }
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "CSSStyleAttribute",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "DOM attribute name (e.g. \"width\")."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "CSS style generated by the respective DOM attribute."}
-                ],
-                "description": "CSS style information for a DOM style attribute."
-            },
-            {
-                "id": "CSSStyleSheetHeader",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "The stylesheet identifier."},
-                    { "name": "sourceURL", "type": "string", "description": "Stylesheet resource URL."},
-                    { "name": "title", "type": "string", "description": "Stylesheet title."},
-                    { "name": "disabled", "type": "boolean", "description": "Denotes whether the stylesheet is disabled."}
-                ],
-                "description": "CSS stylesheet metainformation."
-            },
-            {
-                "id": "CSSStyleSheetBody",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "The stylesheet identifier."},
-                    { "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "Stylesheet resource URL."},
-                    { "name": "text", "type": "string", "optional": true, "description": "Stylesheet resource contents (if available)."}
-                ],
-                "description": "CSS stylesheet contents."
-            },
-            {
-                "id": "CSSRule",
-                "type": "object",
-                "properties": [
-                    { "name": "ruleId", "$ref": "CSSRuleId", "description": "The CSS rule identifier."},
-                    { "name": "selectorText", "type": "string", "description": "Rule selector."},
-                    { "name": "sourceURL", "type": "string", "optional": true, "description": "Parent stylesheet resource URL (for regular rules)."},
-                    { "name": "sourceLine", "type": "integer", "description": "Line ordinal of the rule selector start character in the resource."},
-                    { "name": "origin", "type": "string", "enum": ["user", "user-agent", "inspector", ""], "description": "The parent stylesheet type: \"user\" for user stylesheets, \"user-agent\" for user-agent stylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding new rules created with <code>addRule()</code>), \"\" for regular stylesheets."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." },
-                    { "name": "selectorRange", "$ref": "SourceRange", "optional": true, "description": "The rule selector range in the underlying resource (if available)." }
-                ],
-                "description": "CSS rule representation."
-            },
-            {
-                "id": "SourceRange",
-                "type": "object",
-                "properties": [
-                    { "name": "start", "type": "integer", "description": "Start of range (inclusive)."},
-                    { "name": "end", "type": "integer", "description": "End of range (exclusive)."}
-                ],
-                "description": "Text range within a resource."
-            },
-            {
-                "id": "ShorthandEntry",
-                "type": "object"
-            },
-            {
-                "id": "CSSComputedStyle",
-                "type": "object"
-            },            
-            {
-                "id": "CSSStyle",
-                "type": "object",
-                "properties": [
-                    { "name": "styleId", "$ref": "CSSStyleId", "description": "The CSS style identifier."},
-                    { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style."},
-                    { "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
-                    { "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)."},
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." },
-                    { "name": "width", "type": "integer", "description": "The effective \"width\" property value from this style." },
-                    { "name": "height", "type": "integer", "description": "The effective \"height\" property value from this style." }
-                ],
-                "description": "CSS style representation."
-            },
-            {
-                "id": "CSSProperty",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "The property name." },
-                    { "name": "value", "type": "string", "description": "The property value." },
-                    { "name": "priority", "type": "string", "optional": true, "description": "The property priority (implies \"\" if absent)." },
-                    { "name": "implicit", "type": "boolean", "optional": true, "description": "Whether the property is implicit (implies <code>false</code> if absent)." },
-                    { "name": "parsedOk", "type": "boolean", "optional": true, "description": "Whether the property is understood by the browser (implies <code>true</code> if absent)." },
-                    { "name": "status", "type": "string", "enum": ["active", "inactive", "disabled", "style"], "optional": true, "description": "The property status: \"active\" (implied if absent) if the property is effective in the style, \"inactive\" if the property is overridden by a same-named property in this style later on, \"disabled\" if the property is disabled by the user, \"style\" if the property is reported by the browser rather than by the CSS source parser." },
-                    { "name": "shorthandName", "type": "string", "description": "The related shorthand property name (absent if this property is not a longhand)." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The entire property range in the enclosing style declaration (if available)." }
-                ],
-                "description": "CSS style effective visual dimensions and source offsets."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getStylesForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" },
-                    { "name": "forcedPseudoClasses", "type": "array", "items": { "type": "string", "enum": ["active", "focus", "hover", "visited"] }, "optional": true, "description": "Element pseudo classes to force when computing applicable style rules." }
-                ],
-                "returns": [
-                    { "name": "styles", "$ref": "CSSNodeStyles", "description": "All styles for the specified DOM node." }
-                ],
-                "description": "Returns all styles for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getComputedStyleForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "Computed style for the specified DOM node." }
-                ],
-                "description": "Returns the computed style for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getInlineStyleForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "Inline style for the specified DOM node." }
-                ],
-                "description": "Returns the inline style (if present) for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getAllStyleSheets",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "CSSStyleSheetHeader" }, "description": "Descriptor entries for all available stylesheets." }
-                ],
-                "description": "Returns metainfo entries for all known stylesheets."
-            },
-            {
-                "name": "getStyleSheet",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "styleSheet", "$ref": "CSSStyleSheetBody", "description": "Stylesheet contents for the specified <code>styleSheetId</code>." }
-                ],
-                "description": "Returns stylesheet data for the specified <code>styleSheetId</code>."
-            },
-            {
-                "name": "getStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "text", "type": "string", "description": "The stylesheet text." }
-                ],
-                "description": "Returns the current textual content and the URL for a stylesheet."
-            },
-            {
-                "name": "setStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" },
-                    { "name": "text", "type": "string" }
-                ],
-                "description": "Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet."
-            },
-            {
-                "name": "setPropertyText",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "text", "type": "string" },
-                    { "name": "overwrite", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property text modification." }
-                ],
-                "description": "Sets the new <code>text</code> for a property in the respective style, at offset <code>propertyIndex</code>. If <code>overwrite</code> is <code>true</code>, a property at the given offset is overwritten, otherwise inserted. <code>text</code> entirely replaces the property <code>name: value</code>."
-            },
-            {
-                "name": "toggleProperty",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "disable", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property toggling." }
-                ],
-                "description": "Toggles the property in the respective style, at offset <code>propertyIndex</code>. The <code>disable</code> parameter denotes whether the property should be disabled (i.e. removed from the style declaration). If <code>disable == false</code>, the property gets put back into its original place in the style declaration."
-            },
-            {
-                "name": "setRuleSelector",
-                "parameters": [
-                    { "name": "ruleId", "$ref": "CSSRuleId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The resulting rule after the selector modification." }
-                ],
-                "description": "Modifies the rule selector."
-            },
-            {
-                "name": "addRule",
-                "parameters": [
-                    { "name": "contextNodeId", "$ref": "DOM.NodeId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The newly created rule." }
-                ],
-                "description": "Creates a new empty rule with the given <code>selector</code> in a special \"inspector\" stylesheet in the owner document of the context node."
-            },
-            {
-                "name": "getSupportedCSSProperties",
-                "returns": [
-                    { "name": "cssProperties", "type": "array", "items": { "type": "string" }, "description": "Supported property names." }
-                ],
-                "description": "Returns all supported CSS property names."
-            }
-        ]
-    },
-    {
-        "domain": "Timeline",
-        "description": "Timeline provides its clients with instrumentation records that are generated during the page runtime. Timeline instrumentation can be started and stopped using corresponding commands. While timeline is started, it is generating timeline event records.",
-        "types": [
-            {
-                "id": "TimelineEvent",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "description": "Event type." },
-                    { "name": "data", "type": "object", "description": "Event data." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "TimelineEvent" }, "description": "Nested records." }
-                ],
-                "description": "Timeline record contains information about the recorded activity."
-            }
-        ],
-        "commands": [
-            {
-                "name": "start",
-                "parameters": [
-                    { "name": "maxCallStackDepth", "optional": true, "type": "integer", "description": "Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5." }
-                ],
-                "description": "Starts capturing instrumentation events."
-            },
-            {
-                "name": "stop",
-                "description": "Stops capturing instrumentation events."
-            }
-        ],
-        "events": [
-            {
-                "name": "started",
-                "description": "Fired when timeline has been started.",
-                "hidden": true
-            },
-            {
-                "name": "stopped",
-                "description": "Fired when timeline has been stopped.",
-                "hidden": true
-            },
-            {
-                "name": "eventRecorded",
-                "parameters": [
-                    { "name": "record", "$ref": "TimelineEvent", "description": "Timeline event record data." }
-                ],
-                "description": "Fired for every instrumentation event while timeline is started."
-            }
-        ]
-    },
-    {
-        "domain": "Debugger",
-        "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.",
-        "types": [
-            {
-                "id": "BreakpointId",
-                "type": "string",
-                "description": "Breakpoint identifier."
-            },
-            {
-                "id": "ScriptId",
-                "type": "string",
-                "description": "Unique script identifier."
-            },
-            {
-                "id": "CallFrameId",
-                "type": "string",
-                "description": "Call frame identifier."
-            },
-            {
-                "id": "Location",
-                "type": "object",
-                "properties": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
-                    { "name": "lineNumber", "type": "integer", "description": "Line number in the script." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script." }
-                ],
-                "description": "Location in the source code."
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "properties": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused." },
-                    { "name": "functionName", "type": "string", "description": "Name of the JavaScript function called on this call frame." },
-                    { "name": "location", "$ref": "Location", "description": "Location in the source code." },
-                    { "name": "scopeChain", "type": "array", "items": { "$ref": "Scope" }, "description": "Scope chain for this call frame." },
-                    { "name": "this", "$ref": "Runtime.RemoteObject", "description": "<code>this</code> object for this call frame." }
-                ],
-                "description": "JavaScript call frame. Array of call frames form the call stack."
-            },
-            {
-                "id": "Scope",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["global", "local", "with", "closure", "catch"], "description": "Scope type." },
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." }
-                ],
-                "description": "Scope description."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables debugger for given page."
-            },
-            {
-                "name": "disable",
-                "description": "Disables debugger for given page."
-            },
-            {
-                "name": "setBreakpointsActive",
-                "parameters": [
-                    { "name": "active", "type": "boolean", "description": "New value for breakpoints active state." }
-                ],
-                "description": "Activates / deactivates all breakpoints on the page."
-            },
-            {
-                "name": "setBreakpointByUrl",
-                "parameters": [
-                    { "name": "lineNumber", "type": "integer", "description": "Line number to set breakpoint at." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the resources to set breakpoint on." },
-                    { "name": "urlRegex", "type": "string", "optional": true, "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Offset in the line to set breakpoint at." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "locations", "optional": true, "type": "array", "items": { "$ref": "Location"}, "description": "List of the locations this breakpoint resolved into upon addition." }
-                ],
-                "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads."
-            },
-            {
-                "name": "setBreakpoint",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to set breakpoint in." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "actualLocation", "$ref": "Location", "description": "Location this breakpoint resolved into." }
-                ],
-                "description": "Sets JavaScript breakpoint at a given location."
-            },
-            {
-                "name": "removeBreakpoint",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId" }
-                ],
-                "description": "Removes JavaScript breakpoint."
-            },
-            {
-                "name": "continueToLocation",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to continue to." }
-                ],
-                "description": "Continues execution until specific location is reached."
-            },
-            {
-                "name": "stepOver",
-                "description": "Steps over the statement."
-            },
-            {
-                "name": "stepInto",
-                "description": "Steps into the function call."
-            },
-            {
-                "name": "stepOut",
-                "description": "Steps out of the function call."
-            },
-            {
-                "name": "pause",
-                "description": "Stops on the next JavaScript statement."
-            },
-            {
-                "name": "resume",
-                "description": "Resumes JavaScript execution."
-            },
-            {
-                "name": "setScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to edit." },
-                    { "name": "scriptSource", "type": "string", "description": "New content of the script." },
-                    { "name": "preview", "type": "boolean", "optional": true, "description": " If true the change will not actually be applied. Preview mode may be used to get result description without actually modifying the code.", "hidden": true }
-                ],
-                "returns": [
-                    { "name": "callFrames", "type": "array", "optional": true, "items": { "$ref": "CallFrame"}, "description": "New stack trace in case editing has happened while VM was stopped." },
-                    { "name": "result", "type": "object", "optional": true, "description": "VM-specific description of the changes applied.", "hidden": true }
-                ],
-                "description": "Edits JavaScript source live."
-            },
-            {
-                "name": "getScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to get source for." }
-                ],
-                "returns": [
-                    { "name": "scriptSource", "type": "string", "description": "Script source." }
-                ],
-                "description": "Returns source for the script with given id."
-            },
-            {
-                "name": "setPauseOnExceptions",
-                "parameters": [
-                    { "name": "state", "type": "string", "enum": ["none", "uncaught", "all"], "description": "Pause on exceptions mode." }
-                ],
-                "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>."
-            },
-            {
-                "name": "evaluateOnCallFrame",
-                "parameters": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier to evaluate on." },
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>)." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Specifies whether command line API should be available to the evaluated expression, defaults to false.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Object wrapper for the evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on a given call frame."
-            }
-        ],
-        "events": [
-            {
-                "name": "debuggerWasEnabled",
-                "description": "Fired when debugger gets enabled (deprecated).",
-                "hidden": true
-            },
-            {
-                "name": "debuggerWasDisabled",
-                "description": "Fired when debugger gets disabled (deprecated).",
-                "hidden": true
-            },
-            {
-                "name": "scriptParsed",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Identifier of the script parsed." },
-                    { "name": "url", "type": "string", "description": "URL or name of the script parsed (if any)." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource with given URL (for script tags)." },
-                    { "name": "startColumn", "type": "integer", "description": "Column offset of the script within the resource with given URL." },
-                    { "name": "endLine", "type": "integer", "description": "Last line of the script." },
-                    { "name": "endColumn", "type": "integer", "description": "Length of the last line of the script." },
-                    { "name": "isContentScript", "type": "boolean", "optional": true, "description": "Determines whether this script is a user extension script." }
-                ],
-                "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger."
-            },
-            {
-                "name": "scriptFailedToParse",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the script that failed to parse." },
-                    { "name": "scriptSource", "type": "string", "description": "Source text of the script that failed to parse." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource." },
-                    { "name": "errorLine", "type": "integer", "description": "Line with error." },
-                    { "name": "errorMessage", "type": "string", "description": "Parse error message." }
-                ],
-                "description": "Fired when virtual machine fails to parse the script."
-            },
-            {
-                "name": "breakpointResolved",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Breakpoint unique identifier." },
-                    { "name": "location", "$ref": "Location", "description": "Actual breakpoint location." }
-                ],
-                "description": "Fired when breakpoint is resolved to an actual script and location."
-            },
-            {
-                "name": "paused",
-                "parameters": [
-                    { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
-                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "other" ], "description": "Pause reason." },
-                    { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." }
-                ],
-                "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria."
-            },
-            {
-                "name": "resumed",
-                "description": "Fired when the virtual machine resumed execution."
-            }
-        ]
-    },
-    {
-        "domain": "DOMDebugger",
-        "description": "DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript execution will stop on these operations as if there was a regular breakpoint set.",
-        "types": [
-            {
-                "id": "DOMBreakpointType",
-                "type": "string",
-                "enum": ["subtree-modified", "attribute-modified", "node-removed"],
-                "description": "DOM breakpoint type."
-            }
-        ],
-        "commands": [
-            {
-                "name": "setDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to set breakpoint on." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the operation to stop upon." }
-                ],
-                "description": "Sets breakpoint on particular operation with DOM."
-            },
-            {
-                "name": "removeDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to remove breakpoint from." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the breakpoint to remove." }
-                ],
-                "description": "Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>."
-            },
-            {
-                "name": "setEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Event name to stop on (any DOM event will do)." }
-                ],
-                "description": "Sets breakpoint on particular DOM event."
-            },
-            {
-                "name": "removeEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Event name." }
-                ],
-                "description": "Removes breakpoint on particular DOM event."
-            },
-            {
-                "name": "setXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring. All XHRs having this substring in the URL will get stopped upon." }
-                ],
-                "description": "Sets breakpoint on XMLHttpRequest."
-            },
-            {
-                "name": "removeXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring." }
-                ],
-                "description": "Removes breakpoint from XMLHttpRequest."
-            }
-        ]
-    },
-    {
-        "domain": "Profiler",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Profile",
-                "type": "object",
-                "description": "Profile."
-            },
-            {
-                "id": "ProfileHeader",
-                "type": "object",
-                "description": "Profile header."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable"
-            },
-            {
-                "name": "disable"
-            },
-            {
-                "name": "isEnabled",
-                "returns": [
-                    { "name": "state", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "start"
-            },
-            {
-                "name": "stop"
-            },
-            {
-                "name": "getProfileHeaders",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "ProfileHeader"} }
-                ]
-            },
-            {
-                "name": "getProfile",
-                "parameters": [
-                    { "name": "type", "type": "string" },
-                    { "name": "uid", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "profile", "$ref": "Profile" }
-                ]
-            },
-            {
-                "name": "removeProfile",
-                "parameters": [
-                    { "name": "type", "type": "string" },
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "clearProfiles"
-            },
-            {
-                "name": "takeHeapSnapshot"
-            },
-            {
-                "name": "collectGarbage"
-            }
-        ],
-        "events": [
-            {
-                "name": "profilerWasEnabled"
-            },
-            {
-                "name": "profilerWasDisabled"
-            },
-            {
-                "name": "addProfileHeader",
-                "parameters": [
-                    { "name": "header", "$ref": "ProfileHeader" }
-                ]
-            },
-            {
-                "name": "addHeapSnapshotChunk",
-                "parameters": [
-                    { "name": "uid", "type": "integer" },
-                    { "name": "chunk", "type": "string" }
-                ]
-            },
-            {
-                "name": "finishHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setRecordingProfile",
-                "parameters": [
-                    { "name": "isProfiling", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "resetProfiles"
-            },
-            {
-                "name": "reportHeapSnapshotProgress",
-                "parameters": [
-                    { "name": "done", "type": "integer" },
-                    { "name": "total", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Worker",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "setWorkerInspectionEnabled",
-                "parameters": [
-                    { "name": "value", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "sendMessageToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            },
-            {
-                "name": "connectToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "disconnectFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setAutoconnectToWorkers",
-                "parameters": [
-                    { "name": "value", "type": "boolean" }
-                ]
-            }
-
-        ],
-        "events": [
-            {
-                "name": "workerCreated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "url", "type": "string" },
-                    { "name": "inspectorConnected", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "workerTerminated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "dispatchMessageFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            }
-        ]
-    }]
-}
diff --git a/inspector/Inspector-1.0.json b/inspector/Inspector-1.0.json
deleted file mode 100644
index e19e7e0..0000000
--- a/inspector/Inspector-1.0.json
+++ /dev/null
@@ -1,2503 +0,0 @@
-{
-    "domains": [{
-        "domain": "Inspector",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables inspector domain notifications."
-            },
-            {
-                "name": "disable",
-                "description": "Disables inspector domain notifications."
-            }
-        ],
-        "events": [
-            {
-                "name": "evaluateForTestInFrontend",
-                "parameters": [
-                    { "name": "testCallId", "type": "integer" },
-                    { "name": "script", "type": "string" }
-                ]
-            },
-            {
-                "name": "inspect",
-                "parameters": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject" },
-                    { "name": "hints", "type": "object" }
-                ]
-            },
-            {
-                "name": "didCreateWorker",
-                "parameters": [
-                    { "name": "id", "type": "integer" },
-                    { "name": "url", "type": "string" },
-                    { "name": "isShared", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "didDestroyWorker",
-                "parameters": [
-                    { "name": "id", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Memory",
-        "hidden": true,
-        "types": [
-            {
-                "id": "NodeCount",
-                "type": "object",
-                "properties": [
-                    { "name": "nodeName", "type": "string" },
-                    { "name": "count", "type": "integer" }
-                ],
-                "description": "Number of nodes with given name."
-            },
-            {
-                "id": "ListenerCount",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string" },
-                    { "name": "count", "type": "integer" }
-                ],
-                "description": "Number of JS event listeners by event type."
-            },
-            {
-                "id": "StringStatistics",
-                "type": "object",
-                "properties": [
-                    { "name": "dom", "type": "integer" },
-                    { "name": "js", "type": "integer" },
-                    { "name": "shared", "type": "integer" }
-                ],
-                "description": "Character data statistics for the page."
-            },
-            {
-                "id": "DOMGroup",
-                "type": "object",
-                "properties": [
-                    { "name": "size", "type": "integer" },
-                    { "name": "title", "type": "string" },
-                    { "name": "documentURI", "type": "string", "optional": true },
-                    { "name": "nodeCount", "type": "array", "items": { "$ref": "NodeCount" }},
-                    { "name": "listenerCount", "type": "array", "items": { "$ref": "ListenerCount" }}
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "getDOMNodeCount",
-                "returns": [
-                    { "name": "domGroups", "type": "array", "items": { "$ref": "DOMGroup" }},
-                    { "name": "strings", "$ref": "StringStatistics" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Page",
-        "description": "Actions and events related to the inspected page belong to the page domain.",
-        "types": [
-            {
-                "id": "ResourceType",
-                "type": "string",
-                "enum": ["Document", "Stylesheet", "Image", "Font", "Script", "XHR", "WebSocket", "Other"],
-                "description": "Resource type as it was perceived by the rendering engine."
-            },
-            {
-                "id": "Frame",
-                "type": "object",
-                "description": "Information about the Frame on the page.",
-                "properties": [
-                    { "name": "id", "type": "string", "description": "Frame unique identifier." },
-                    { "name": "parentId", "type": "string", "optional": true, "description": "Parent frame identifier." },
-                    { "name": "loaderId", "$ref": "Network.LoaderId", "description": "Identifier of the loader associated with this frame." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Frame's name as specified in the tag." },
-                    { "name": "url", "type": "string", "description": "Frame document's URL." },
-                    { "name": "securityOrigin", "type": "string", "optional": true, "description": "Frame document's security origin." },
-                    { "name": "mimeType", "type": "string", "description": "Frame document's mimeType as determined by the browser." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "FrameResourceTree",
-                "type": "object",
-                "description": "Information about the Frame hierarchy along with their cached resources.",
-                "properties": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame information for this tree item." },
-                    { "name": "childFrames", "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" }, "description": "Child frames." },
-                    { "name": "resources", "type": "array",
-                        "items": {
-                            "type": "object",
-                            "properties": [
-                                { "name": "url", "type": "string", "description": "Resource URL." },
-                                { "name": "type", "$ref": "ResourceType", "description": "Type of this resource." },
-                                { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." }
-                            ]
-                        },
-                        "description": "Information about frame resources."
-                    }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "SearchMatch",
-                "type": "object",
-                "description": "Search match for resource.",
-                "properties": [
-                    { "name": "lineNumber", "type": "number", "description": "Line number in resource content." },
-                    { "name": "lineContent", "type": "string", "description": "Line with match content." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "SearchResult",
-                "type": "object",
-                "description": "Search result for resource.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource URL." },
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Resource frame id." },
-                    { "name": "matchesCount", "type": "number", "description": "Number of matches in the resource content." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "Cookie",
-                "type": "object",
-                "description": "Cookie object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Cookie name." },
-                    { "name": "value", "type": "string", "description": "Cookie value." },
-                    { "name": "domain", "type": "string", "description": "Cookie domain." },
-                    { "name": "path", "type": "string", "description": "Cookie path." },
-                    { "name": "expires", "type": "integer", "description": "Cookie expires." },
-                    { "name": "size", "type": "integer", "description": "Cookie size." },
-                    { "name": "httpOnly", "type": "boolean", "description": "True if cookie is http-only." },
-                    { "name": "secure", "type": "boolean", "description": "True if cookie is secure." },
-                    { "name": "session", "type": "boolean", "description": "True in case of session cookie." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "ScriptIdentifier",
-                "type": "string",
-                "description": "Unique script identifier.",
-                "hidden": true
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables page domain notifications."
-            },
-            {
-                "name": "disable",
-                "description": "Disables page domain notifications."
-            },
-            {
-                "name": "addScriptToEvaluateOnLoad",
-                "parameters": [
-                    { "name": "scriptSource", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "identifier", "$ref": "ScriptIdentifier", "description": "Identifier of the added script." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "removeScriptToEvaluateOnLoad",
-                "parameters": [
-                    { "name": "identifier", "$ref": "ScriptIdentifier" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "reload",
-                "parameters": [
-                    { "name": "ignoreCache", "type": "boolean", "optional": true, "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh)." },
-                    { "name": "scriptToEvaluateOnLoad", "type": "string", "optional": true, "description": "If set, the script will be injected into all frames of the inspected page after reload." }
-                ],
-                "description": "Reloads given page optionally ignoring the cache."
-            },
-            {
-                "name": "navigate",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL to navigate the page to." }
-                ],
-                "description": "Navigates current page to the given URL."
-            },
-            {
-                "name": "getCookies",
-                "returns": [
-                    { "name": "cookies", "type": "array", "items": { "$ref": "Cookie"}, "description": "Array of cookie objects." },
-                    { "name": "cookiesString", "type": "string", "description": "document.cookie string representation of the cookies." }
-                ],
-                "description": "Returns all browser cookies. Depending on the backend support, will either return detailed cookie information in the <code>cookie</code> field or string cookie representation using <code>cookieString</code>.",
-                "hidden": true
-            },
-            {
-                "name": "deleteCookie",
-                "parameters": [
-                    { "name": "cookieName", "type": "string", "description": "Name of the cookie to remove." },
-                    { "name": "domain", "type": "string", "description": "Domain of the cookie to remove." }
-                ],
-                "description": "Deletes browser cookie with given name for the given domain.",
-                "hidden": true
-            },
-            {
-                "name": "getResourceTree",
-                "description": "Returns present frame / resource tree structure.",
-                "returns": [
-                    { "name": "frameTree", "$ref": "FrameResourceTree", "description": "Present frame / resource tree structure." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "getResourceContent",
-                "description": "Returns content of the given resource.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id to get resource for." },
-                    { "name": "url", "type": "string", "description": "URL of the resource to get content for." }
-                ],
-                "returns": [
-                    { "name": "content", "type": "string", "description": "Resource content." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was served as base64." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "searchInResource",
-                "description": "Searches for given string in resource content.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id for resource to search in." },
-                    { "name": "url", "type": "string", "description": "URL of the resource to search in." },
-                    { "name": "query", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "SearchMatch" }, "description": "List of search matches." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "searchInResources",
-                "description": "Searches for given string in frame / resource tree structure.",
-                "parameters": [
-                    { "name": "text", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "SearchResult" }, "description": "List of search results." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setDocumentContent",
-                "description": "Sets given markup as the document's HTML.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id to set HTML for." },
-                    { "name": "html", "type": "string", "description": "HTML content to set."  }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setScreenSizeOverride",
-                "description": "Overrides the values of window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results",
-                "parameters": [
-                    { "name": "width", "type": "integer", "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
-                    { "name": "height", "type": "integer", "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override." }
-                ],
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "domContentEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "loadEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "frameNavigated",
-                "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.",
-                "parameters": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame object." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameDetached",
-                "description": "Fired when frame has been detached from its parent.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has been detached." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Runtime",
-        "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
-        "types": [
-            {
-                "id": "RemoteObjectId",
-                "type": "string",
-                "description": "Unique object identifier."
-            },
-            {
-                "id": "RemoteObject",
-                "type": "object",
-                "description": "Mirror object referencing original JavaScript object.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean"], "description": "Object type." },
-                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date"], "description": "Object subtype hint. Specified for <code>object</code> type values only." },
-                    { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for <code>object</code> type values only." },
-                    { "name": "value", "type": "any", "optional": true, "description": "Remote object value (in case of primitive values or JSON values if it was requested)." },
-                    { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." }
-                ]
-            },
-            {
-                "id": "PropertyDescriptor",
-                "type": "object",
-                "description": "Object property descriptor.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Property name." },
-                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." },
-                    { "name": "writable", "type": "boolean", "optional": true, "description": "True if the value associated with the property may be changed (data descriptors only)." },
-                    { "name": "get", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only)." },
-                    { "name": "set", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only)." },
-                    { "name": "configurable", "type": "boolean", "description": "True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object." },
-                    { "name": "enumerable", "type": "boolean", "description": "True if this property shows up during enumeration of the properties on the corresponding object." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ]
-            },
-            {
-                "id": "CallArgument",
-                "type": "object",
-                "description": "Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.",
-                "properties": [
-                    { "name": "value", "type": "any", "optional": true, "description": "Primitive value." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Remote object handle." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "evaluate",
-                "parameters": [
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Determines whether Command Line API should be available during the evaluation.", "hidden": true },
-                    { "name": "doNotPauseOnExceptions", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions. Overrides setPauseOnException state.", "hidden": true },
-                    { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Specifies in which frame to perform evaluation.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on global object."
-            },
-            {
-                "name": "callFunctionOn",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to call function on." },
-                    { "name": "functionDeclaration", "type": "string", "description": "Declaration of the function to call." },
-                    { "name": "arguments", "type": "array", "items": { "$ref": "CallArgument", "description": "Call argument." }, "optional": true, "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target object." },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Call result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "getProperties",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to return properties for." },
-                    { "name": "ownProperties", "optional": true, "type": "boolean", "description": "If true, returns properties belonging only to the element itself, not to its prototype chain." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "PropertyDescriptor"}, "description": "Object properties." }
-                ],
-                "description": "Returns properties of a given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "releaseObject",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to release." }
-                ],
-                "description": "Releases remote object with given id."
-            },
-            {
-                "name": "releaseObjectGroup",
-                "parameters": [
-                    { "name": "objectGroup", "type": "string", "description": "Symbolic object group name." }
-                ],
-                "description": "Releases all remote objects that belong to a given group."
-            },
-            {
-                "name": "run",
-                "hidden": true,
-                "description": "Tells inspected instance(worker or page) that it can run in case it was started paused."
-            }
-        ]
-    },
-    {
-        "domain": "Console",
-        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> command in order to start receiving the console messages. Browser collects messages issued while console domain is not enabled as well and reports them using <code>messageAdded</code> notification upon enabling.",
-        "types": [
-            {
-                "id": "ConsoleMessage",
-                "type": "object",
-                "description": "Console message.",
-                "properties": [
-                    { "name": "source", "type": "string", "enum": ["html", "wml", "xml", "javascript", "network", "console-api", "other"], "description": "Message source." },
-                    { "name": "level", "type": "string", "enum": ["tip", "log", "warning", "error", "debug"], "description": "Message severity." },
-                    { "name": "text", "type": "string", "description": "Message text." },
-                    { "name": "type", "type": "string", "optional": true, "enum": ["log", "dir", "dirxml", "trace", "startGroup", "startGroupCollapsed", "endGroup", "assert"], "description": "Console message type." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the message origin." },
-                    { "name": "line", "type": "integer", "optional": true, "description": "Line number in the resource that generated this message." },
-                    { "name": "repeatCount", "type": "integer", "optional": true, "description": "Repeat count for repeated messages." },
-                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "optional": true, "description": "Message parameters in case of the formatted message." },
-                    { "name": "stackTrace", "$ref": "StackTrace", "optional": true, "description": "JavaScript stack trace for assertions and error messages." },
-                    { "name": "networkRequestId", "$ref": "Network.RequestId", "optional": true, "description": "Identifier of the network request associated with this message." }
-                ]
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "description": "Stack entry for console errors and assertions.",
-                "properties": [
-                    { "name": "functionName", "type": "string", "description": "JavaScript function name." },
-                    { "name": "url", "type": "string", "description": "JavaScript script name or url." },
-                    { "name": "lineNumber", "type": "integer", "description": "JavaScript script line number." },
-                    { "name": "columnNumber", "type": "integer", "description": "JavaScript script column number." }
-                ]
-            },
-            {
-                "id": "StackTrace",
-                "type": "array",
-                "items": { "$ref": "CallFrame" },
-                "description": "Call frames for assertions or error messages."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification." 
-            },
-            {
-                "name": "disable",
-                "description": "Disables console domain, prevents further console messages from being reported to the client." 
-            },
-            {
-                "name": "clearMessages",
-                "description": "Clears console messages collected in the browser." 
-            },
-            {
-                "name": "setMonitoringXHREnabled",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "Monitoring enabled state." }
-                ],
-                "description": "Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.", 
-                "hidden": true
-            },
-            {
-                "name": "addInspectedNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "DOM node id to be accessible by means of $x command line API." }
-                ],
-                "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "messageAdded",
-                "parameters": [
-                    { "name": "message", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
-                ],
-                "description": "Issued when new console message is added."
-            },
-            {
-                "name": "messageRepeatCountUpdated",
-                "parameters": [
-                    { "name": "count", "type": "integer", "description": "New repeat count value." }
-                ],
-                "description": "Issued when subsequent message(s) are equal to the previous one(s)."
-            },
-            {
-                "name": "messagesCleared",
-                "description": "Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation."
-            }
-        ]
-    },
-    {
-        "domain": "Network",
-        "description": "Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.",
-        "types": [
-            {
-                "id": "LoaderId",
-                "type": "string",
-                "description": "Unique loader identifier."
-            },
-            {
-                "id": "FrameId",
-                "type": "string",
-                "description": "Unique frame identifier.",
-                "hidden": true
-            },
-            {
-                "id": "RequestId",
-                "type": "string",
-                "description": "Unique request identifier."
-            },
-            {
-                "id": "Timestamp",
-                "type": "number",
-                "description": "Number of seconds since epoch."
-            },
-            {
-                "id": "Headers",
-                "type": "object",
-                "description": "Request / response headers as keys / values of JSON object."
-            },
-            {
-                "id": "ResourceTiming",
-                "type": "object",
-                "description": "Timing information for the request.",
-                "properties": [
-                    { "name": "requestTime", "type": "number", "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this requestTime." },
-                    { "name": "proxyStart", "type": "number", "description": "Started resolving proxy." },
-                    { "name": "proxyEnd", "type": "number", "description": "Finished resolving proxy." },
-                    { "name": "dnsStart", "type": "number", "description": "Started DNS address resolve." },
-                    { "name": "dnsEnd", "type": "number", "description": "Finished DNS address resolve." },
-                    { "name": "connectStart", "type": "number", "description": "Started connecting to the remote host." },
-                    { "name": "connectEnd", "type": "number", "description": "Connected to the remote host." },
-                    { "name": "sslStart", "type": "number", "description": "Started SSL handshake." },
-                    { "name": "sslEnd", "type": "number", "description": "Finished SSL handshake." },
-                    { "name": "sendStart", "type": "number", "description": "Started sending request." },
-                    { "name": "sendEnd", "type": "number", "description": "Finished sending request." },
-                    { "name": "receiveHeadersEnd", "type": "number", "description": "Finished receiving response headers." }
-                ]
-            },
-            {
-                "id": "Request",
-                "type": "object",
-                "description": "HTTP request data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Request URL." },
-                    { "name": "method", "type": "string", "description": "HTTP request method." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." },
-                    { "name": "postData", "type": "string", "optional": true, "description": "HTTP POST request data." }
-                ]
-            },
-            {
-                "id": "Response",
-                "type": "object",
-                "description": "HTTP response data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Response URL." },
-                    { "name": "status", "type": "number", "description": "HTTP response status code." },
-                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
-                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
-                    { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
-                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
-                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
-                    { "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
-                    { "name": "connectionId", "type": "number", "description": "Physical connection id that was actually used for this request." },
-                    { "name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache." },
-                    { "name": "timing", "$ref": "ResourceTiming", "optional": true, "description": "Timing information for the given request." }
-                ]
-            },
-            {
-                "id": "WebSocketRequest",
-                "type": "object",
-                "description": "WebSocket request data.",
-                "hidden": true,
-                "properties": [
-                    { "name": "requestKey3", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." }
-                ]
-            },
-            {
-                "id": "WebSocketResponse",
-                "type": "object",
-                "description": "WebSocket response data.",
-                "hidden": true,
-                "properties": [
-                    { "name": "status", "type": "number", "description": "HTTP response status code." },
-                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
-                    { "name": "challengeResponse", "type": "string", "description": "Challenge response." }
-                ]
-            },
-            {
-                "id": "CachedResource",
-                "type": "object",
-                "description": "Information about the cached resource.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource URL." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Type of this resource." },
-                    { "name": "response", "$ref": "Response", "optional": true, "description": "Cached response data." },
-                    { "name": "bodySize", "type": "number", "description": "Cached response body size." }
-                ]
-            },
-            {
-                "id": "Initiator",
-                "type": "object",
-                "description": "Information about the request initiator.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["parser", "script", "other"], "description": "Type of this initiator." },
-                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "Initiator JavaScript stack trace, set for Script only." },
-                    { "name": "url", "type": "string", "optional": true, "description": "Initiator URL, set for Parser type only." },
-                    { "name": "lineNumber", "type": "number", "optional": true, "description": "Initiator line number, set for Parser type only." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables network tracking, network events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables network tracking, prevents network events from being sent to the client."
-            },
-            {
-                "name": "setUserAgentOverride",
-                "description": "Allows overriding user agent with the given string.",
-                "parameters": [
-                    { "name": "userAgent", "type": "string", "description": "User agent to use." }
-                ]
-            },
-            {
-                "name": "setExtraHTTPHeaders",
-                "description": "Specifies whether to always send extra HTTP headers with the requests from this page.",
-                "parameters": [
-                    { "name": "headers", "$ref": "Headers", "description": "Map with extra HTTP headers." }
-                ]
-            },
-            {
-                "name": "getResponseBody",
-                "description": "Returns content served for the given request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of the network request to get content for." }
-                ],
-                "returns": [
-                    { "name": "body", "type": "string", "description": "Response body." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was sent as base64." }
-                ]
-            },
-            {
-                "name": "canClearBrowserCache",
-                "description": "Tells whether clearing browser cache is supported.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser cache can be cleared." }
-                ]
-            },
-            {
-                "name": "clearBrowserCache",
-                "description": "Clears browser cache."
-            },
-            {
-                "name": "canClearBrowserCookies",
-                "description": "Tells whether clearing browser cookies is supported.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser cookies can be cleared." }
-                ]
-            },
-            {
-                "name": "clearBrowserCookies",
-                "description": "Clears browser cookies."
-            },
-            {
-                "name": "setCacheDisabled",
-                "parameters": [
-                    { "name": "cacheDisabled", "type": "boolean", "description": "Cache disabled state." }
-                ],
-                "description": "Toggles ignoring cache for each request. If <code>true</code>, cache will not be used." 
-            }
-        ],
-        "events": [
-            {
-                "name": "requestWillBeSent",
-                "description": "Fired when page is about to send HTTP request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "request", "$ref": "Request", "description": "Request data." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "JavaScript stack trace upon issuing this request." },
-                    { "name": "redirectResponse", "optional": true, "$ref": "Response", "description": "Redirect response data." }
-                ]
-            },
-            {
-                "name": "requestServedFromCache",
-                "description": "Fired if request ended up loading from cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." }
-                ]
-            },
-            {
-                "name": "responseReceived",
-                "description": "Fired when HTTP response is available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
-                    { "name": "response", "$ref": "Response", "description": "Response data." }
-                ]
-            },
-            {
-                "name": "dataReceived",
-                "description": "Fired when data chunk was received over the network.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "dataLength", "type": "integer", "description": "Data chunk length." },
-                    { "name": "encodedDataLength", "type": "integer", "description": "Actual bytes received (might be less than dataLength for compressed encodings)." }
-                ]
-            },
-            {
-                "name": "loadingFinished",
-                "description": "Fired when HTTP request has finished loading.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ]
-            },
-            {
-                "name": "loadingFailed",
-                "description": "Fired when HTTP request has failed to load.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "errorText", "type": "string", "description": "User friendly error message." },
-                    { "name": "canceled", "type": "boolean", "optional": true, "description": "True if loading was canceled." }
-                ]
-            },
-            {
-                "name": "requestServedFromMemoryCache",
-                "description": "Fired when HTTP request has been served from memory cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "resource", "$ref": "CachedResource", "description": "Cached resource data." }
-                ]
-            },
-            {
-                "name": "webSocketWillSendHandshakeRequest",
-                "description": "Fired when WebSocket is about to initiate handshake.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "request", "$ref": "WebSocketRequest", "description": "WebSocket request data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketHandshakeResponseReceived",
-                "description": "Fired when WebSocket handshake response becomes available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "response", "$ref": "WebSocketResponse", "description": "WebSocket response data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketCreated",
-                "description": "Fired upon WebSocket creation.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "url", "type": "string", "description": "WebSocket request URL." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketClosed",
-                "description": "Fired when WebSocket is closed.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Database",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Database",
-                "type": "object",
-                "description": "Database object.",
-                "hidden": true,
-                "properties": [
-                    { "name": "id", "type": "string", "description": "Database ID." },
-                    { "name": "domain", "type": "string", "description": "Database domain." },
-                    { "name": "name", "type": "string", "description": "Database name." },
-                    { "name": "version", "type": "string", "description": "Database version." }
-                ]
-            },
-            {
-                "id": "Error",
-                "type": "object",
-                "description": "Database error."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables database tracking, database events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables database tracking, prevents database events from being sent to the client."
-            },
-            {
-                "name": "getDatabaseTableNames",
-                "parameters": [
-                    { "name": "databaseId", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "tableNames", "type": "array", "items": { "type": "string" } }
-                ]
-            },
-            {
-                "name": "executeSQL",
-                "parameters": [
-                    { "name": "databaseId", "type": "integer" },
-                    { "name": "query", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" },
-                    { "name": "transactionId", "type": "integer" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addDatabase",
-                "parameters": [
-                    { "name": "database", "$ref": "Database" }
-                ]
-            },
-            {
-                "name": "sqlTransactionSucceeded",
-                "parameters": [
-                    { "name": "transactionId", "type": "integer" },
-                    { "name": "columnNames", "type": "array", "items": { "type": "string" } },
-                    { "name": "values", "type": "array", "items": { "type": "any" }}
-                ]
-            },
-            {
-                "name": "sqlTransactionFailed",
-                "parameters": [
-                    { "name": "transactionId", "type": "integer" },
-                    { "name": "sqlError", "$ref": "Error" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "IndexedDB",
-        "hidden": true,
-        "types": [
-            {
-                "id": "SecurityOriginWithDatabaseNames",
-                "type": "object",
-                "description": "Security origin with database names.",
-                "properties": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
-                    { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for this origin." }
-                ]
-            },
-            {
-                "id": "DatabaseWithObjectStores",
-                "type": "object",
-                "description": "Database with an array of object stores.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Database name." },
-                    { "name": "version", "type": "string", "description": "Database version." },
-                    { "name": "objectStores", "type": "array", "items": { "$ref": "ObjectStore" }, "description": "Object stores in this database." }
-                ]
-            },
-            {
-                "id": "ObjectStore",
-                "type": "object",
-                "description": "Object store.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Object store name." },
-                    { "name": "keyPath", "type": "string", "description": "Object store key path." },
-                    { "name": "indexes", "type": "array", "items": { "$ref": "ObjectStoreIndex" }, "description": "Indexes in this object store." }
-                ]
-            },
-            {
-                "id": "ObjectStoreIndex",
-                "type": "object",
-                "description": "Object store index.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Index name." },
-                    { "name": "keyPath", "type": "string", "description": "Index key path." },
-                    { "name": "unique", "type": "boolean", "description": "If true, index is unique." },
-                    { "name": "multiEntry", "type": "boolean", "description": "If true, index allows multiple entries for a key." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables events from backend."
-            },
-            {
-                "name": "disable",
-                "description": "Disables events from backend."
-            },
-            {
-                "name": "requestDatabaseNamesForFrame",
-                "parameters": [
-                    { "name": "requestId", "type": "integer", "description": "Request id." },
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id." }
-                ],
-                "description": "Requests database names for given frame's security origin."
-            },
-            {
-                "name": "requestDatabase",
-                "parameters": [
-                    { "name": "requestId", "type": "integer", "description": "Request id." },
-                    { "name": "frameId", "$ref": "Network.FrameId" },
-                    { "name": "databaseName", "type": "string" }
-                ],
-                "description": "Requests database with given name in given frame."
-            }
-        ],
-        "events": [
-            {
-                "name": "databaseNamesLoaded",
-                "parameters": [
-                    { "name": "requestId", "type": "number", "description": "Request id." },
-                    { "name": "securityOriginWithDatabaseNames", "$ref": "SecurityOriginWithDatabaseNames", "description": "Frame with database names." }
-                ]
-            },
-            {
-                "name": "databaseLoaded",
-                "parameters": [
-                    { "name": "requestId", "type": "integer", "description": "Request id." },
-                    { "name": "databaseWithObjectStores", "$ref": "DatabaseWithObjectStores", "description": "Database with an array of object stores." }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "DOMStorage",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Entry",
-                "type": "object",
-                "description": "DOM Storage entry.",
-                "hidden": true,
-                "properties": [
-                    { "name": "host", "type": "string", "description": "Domain name." },
-                    { "name": "isLocalStorage", "type": "boolean", "description": "True for local storage." },
-                    { "name": "id", "type": "number", "description": "Entry id for further reference." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables storage tracking, storage events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables storage tracking, prevents storage events from being sent to the client."
-            },
-            {
-                "name": "getDOMStorageEntries",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "entries", "type": "array", "items": { "$ref": "Entry"} }
-                ]
-            },
-            {
-                "name": "setDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" },
-                    { "name": "key", "type": "string" },
-                    { "name": "value", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "removeDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" },
-                    { "name": "key", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "success", "type": "boolean" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addDOMStorage",
-                "parameters": [
-                    { "name": "storage", "$ref": "Entry" }
-                ]
-            },
-            {
-                "name": "updateDOMStorage",
-                "parameters": [
-                    { "name": "storageId", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "ApplicationCache",
-        "hidden": true,
-        "types": [
-            {
-                "id": "ApplicationCacheResource",
-                "type": "object",
-                "description": "Detailed application cache resource information.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource url." },
-                    { "name": "size", "type": "integer", "description": "Resource size." },
-                    { "name": "type", "type": "string", "description": "Resource type." }
-                ]
-            },
-            {
-                "id": "ApplicationCache",
-                "type": "object",
-                "description": "Detailed application cache information.",
-                "properties": [
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "size", "type": "number", "description": "Application cache size." },
-                    { "name": "creationTime", "type": "number", "description": "Application cache creation time." },
-                    { "name": "updateTime", "type": "number", "description": "Application cache update time." },
-                    { "name": "resources", "type": "array", "items": { "$ref": "ApplicationCacheResource" }, "description": "Application cache resources." }
-                ]
-            },
-            {
-                "id": "FrameWithManifest",
-                "type": "object",
-                "description": "Frame identifier - manifest URL pair.",
-                "properties": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame identifier." },
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "status", "type": "integer", "description": "Application cache status." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "getFramesWithManifests",
-                "returns": [
-                    { "name": "frameIds", "type": "array", "items": { "$ref": "FrameWithManifest" }, "description": "Array of frame identifiers with manifest urls for each frame containing a document associated with some application cache." }
-                ],
-                "description": "Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache."
-            },
-            {
-                "name": "enable",
-                "description": "Enables application cache domain notifications."
-            },
-            {
-                "name": "getManifestForFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose manifest is retrieved." }
-                ],
-                "returns": [
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL for document in the given frame." }
-                ],
-                "description": "Returns manifest URL for document in the given frame."
-            },
-            {
-                "name": "getApplicationCacheForFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose application cache is retrieved." }
-                ],
-                "returns": [
-                    { "name": "applicationCache", "$ref": "ApplicationCache", "description": "Relevant application cache data for the document in given frame." }
-                ],
-                "description": "Returns relevant application cache data for the document in given frame."
-            }
-        ],
-        "events": [
-            {
-                "name": "applicationCacheStatusUpdated",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose application cache updated status." },
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "status", "type": "integer", "description": "Updated application cache status." }
-                ]
-            },
-            {
-                "name": "networkStateUpdated",
-                "parameters": [
-                    { "name": "isNowOnline", "type": "boolean" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "FileSystem",
-        "hidden": true,
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables events from backend."
-            },
-            {
-                "name": "disable",
-                "description": "Disables events from backend.."
-            }
-        ],
-        "events": [
-        ]
-    },
-    {
-        "domain": "DOM",
-        "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an <code>id</code>. This <code>id</code> can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.<p>Note that <code>iframe</code> owner elements will return corresponding document elements as their child nodes.</p>",
-        "types": [
-            {
-                "id": "NodeId",
-                "type": "integer",
-                "description": "Unique DOM node identifier."
-            },
-            {
-                "id": "Node",
-                "type": "object",
-                "properties": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." },
-                    { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
-                    { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
-                    { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
-                    { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
-                    { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
-                    { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
-                    { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
-                    { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
-                    { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
-                    { "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
-                    { "name": "xmlVersion", "type": "string", "optional": true, "description": "<code>Document</code>'s XML version in case of XML documents." },
-                    { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
-                    { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." },
-                    { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "EventListener",
-                "type": "object",
-                "hidden": true,
-                "properties": [
-                    { "name": "type", "type": "string", "description": "<code>EventListener</code>'s type." },
-                    { "name": "useCapture", "type": "boolean", "description": "<code>EventListener</code>'s useCapture." },
-                    { "name": "isAttribute", "type": "boolean", "description": "<code>EventListener</code>'s isAttribute." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
-                    { "name": "handlerBody", "type": "string", "description": "Event handler function body." },
-                    { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "RGBA",
-                "type": "object",
-                "properties": [
-                    { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
-                    { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
-                    { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
-                    { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
-                ],
-                "description": "A structure holding an RGBA color."
-            },
-            {
-                "id": "HighlightConfig",
-                "type": "object",
-                "properties": [
-                    { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
-                    { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." },
-                    { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." }
-                ],
-                "description": "Configuration data for the highlighting of page elements."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getDocument",
-                "returns": [
-                    { "name": "root", "$ref": "Node", "description": "Resulting node." }
-                ],
-                "description": "Returns the root DOM node to the caller."
-            },
-            {
-                "name": "requestChildNodes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." }
-                ],
-                "description": "Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events."
-            },
-            {
-                "name": "querySelector",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelector</code> on a given node."
-            },
-            {
-                "name": "querySelectorAll",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelectorAll</code> on a given node."
-            },
-            {
-                "name": "setNodeName",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
-                    { "name": "name", "type": "string", "description": "New node's name." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
-                ],
-                "description": "Sets node name for a node with given id."
-            },
-            {
-                "name": "setNodeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
-                    { "name": "value", "type": "string", "description": "New node's value." }
-                ],
-                "description": "Sets node value for a node with given id."
-            },
-            {
-                "name": "removeNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
-                ],
-                "description": "Removes node with given id."
-            },
-            {
-                "name": "setAttributeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Sets attribute for an element with given id."
-            },
-            {
-                "name": "setAttributesAsText",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
-                    { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
-                ],
-                "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs."
-            },
-            {
-                "name": "removeAttribute",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
-                    { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
-                ],
-                "description": "Removes attribute with given name from an element with given id."
-            },
-            {
-                "name": "getEventListenersForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get listeners for." }
-                ],
-                "returns": [
-                    { "name": "listeners", "type": "array", "items": { "$ref": "EventListener"}, "description": "Array of relevant listeners." }
-                ],
-                "description": "Returns event listeners relevant to the node.",
-                "hidden": true
-            },
-            {
-                "name": "getOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
-                ],
-                "returns": [
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
-                ],
-                "description": "Returns node's HTML markup."
-            },
-            {
-                "name": "setOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
-                ],
-                "description": "Sets node HTML markup, returns new node id."
-            },
-            {
-                "name": "performSearch",
-                "parameters": [
-                    { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." }
-                ],
-                "returns": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
-                    { "name": "resultCount", "type": "integer", "description": "Number of search results." }
-                ],
-                "description": "Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.",
-                "hidden": true
-            },
-            {
-                "name": "getSearchResults",
-                "parameters": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
-                    { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." },
-                    { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." }
-                ],
-                "returns": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
-                ],
-                "description": "Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.",
-                "hidden": true
-            },
-            {
-                "name": "discardSearchResults",
-                "parameters": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." }
-                ],
-                "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.",
-                "hidden": true
-            },
-            {
-                "name": "requestNode",
-                "parameters": [
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
-                ],
-                "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications."
-            },
-            {
-                "name": "setInspectModeEnabled",
-                "hidden": true,
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." },
-                    { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>." }
-                ],
-                "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection."
-            },
-            {
-                "name": "highlightRect",
-                "parameters": [
-                    { "name": "x", "type": "integer", "description": "X coordinate" },
-                    { "name": "y", "type": "integer", "description": "Y coordinate" },
-                    { "name": "width", "type": "integer", "description": "Rectangle width" },
-                    { "name": "height", "type": "integer", "description": "Rectangle height" },
-                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport."
-            },
-            {
-                "name": "highlightNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Identifier of the node to highlight." },
-                    { "name": "highlightConfig", "$ref": "HighlightConfig", "description": "A descriptor for the highlight appearance." }
-                ],
-                "description": "Highlights DOM node with given id."
-            },
-            {
-                "name": "hideHighlight",
-                "description": "Hides DOM node highlight."
-            },
-            {
-                "name": "highlightFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame to highlight." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "contentOutlineColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights owner element of the frame with given id.",
-                "hidden": true
-            },
-            {
-                "name": "pushNodeByPathToFrontend",
-                "parameters": [
-                    { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
-                ],
-                "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath",
-                "hidden": true
-            },
-            {
-                "name": "resolveNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
-                ],
-                "returns": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
-                ],
-                "description": "Resolves JavaScript node object for given node id."
-            },
-            {
-                "name": "getAttributes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." }
-                ],
-                "returns": [
-                    { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
-                ],
-                "description": "Returns attributes for the specified node."
-            },
-            {
-                "name": "moveTo",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to drop." },
-                    { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop into." },
-                    { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before given one." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
-                ],
-                "description": "Moves node into the new container, places it before the given anchor."
-            }
-        ],
-        "events": [
-            {
-                "name": "documentUpdated",
-                "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
-            },
-            {
-                "name": "setChildNodes",
-                "parameters": [
-                    { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
-                    { "name": "nodes", "type": "array", "items": { "$ref": "Node"}, "description": "Child nodes array." }
-                ],
-                "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids."
-            },
-            {
-                "name": "attributeModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is modified."
-            },
-            {
-                "name": "attributeRemoved",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "A ttribute name." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is removed."
-            },
-            {
-                "name": "inlineStyleInvalidated",
-                "parameters": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
-                ],
-                "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
-                "hidden": true
-            },
-            {
-                "name": "characterDataModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "characterData", "type": "string", "description": "New text value." }
-                ],
-                "description": "Mirrors <code>DOMCharacterDataModified</code> event."
-            },
-            {
-                "name": "childNodeCountUpdated",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "childNodeCount", "type": "integer", "description": "New node count." }
-                ],
-                "description": "Fired when <code>Container</code>'s child node count has changed."
-            },
-            {
-                "name": "childNodeInserted",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." },
-                    { "name": "node", "$ref": "Node", "description": "Inserted node data." }
-                ],
-                "description": "Mirrors <code>DOMNodeInserted</code> event."
-            },
-            {
-                "name": "childNodeRemoved",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
-                ],
-                "description": "Mirrors <code>DOMNodeRemoved</code> event."
-            }
-        ]
-    },
-    {
-        "domain": "CSS",
-        "hidden": true,
-        "description": "This domain exposes CSS read/write operations. All CSS objects, like stylesheets, rules, and styles, have an associated <code>id</code> used in subsequent operations on the related object. Each object type has a specific <code>id</code> structure, and those are not interchangeable between objects of different kinds. CSS objects can be loaded using the <code>get*ForNode()</code> calls (which accept a DOM node id). Alternatively, a client can discover all the existing stylesheets with the <code>getAllStyleSheets()</code> method and subsequently load the required stylesheet contents using the <code>getStyleSheet[Text]()</code> methods.",
-        "types": [
-            {
-                "id": "CSSStyleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The style ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS style in a unique way."
-            },
-            {
-                "id": "CSSRuleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The rule ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS rule in a unique way."
-            },
-            {
-                "id": "PseudoIdRules",
-                "type": "object",
-                "properties": [
-                    { "name": "pseudoId", "type": "integer", "description": "Pseudo style identifier (see <code>enum PseudoId</code> in <code>RenderStyleConstants.h</code>)."},
-                    { "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "CSS rules applicable to the pseudo style."}
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "InheritedStyleEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "CSS rules matching the ancestor node in the style inheritance chain." }
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "CSSStyleAttribute",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "DOM attribute name (e.g. \"width\")."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "CSS style generated by the respective DOM attribute."}
-                ],
-                "description": "CSS style information for a DOM style attribute."
-            },
-            {
-                "id": "CSSStyleSheetHeader",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "The stylesheet identifier."},
-                    { "name": "sourceURL", "type": "string", "description": "Stylesheet resource URL."},
-                    { "name": "title", "type": "string", "description": "Stylesheet title."},
-                    { "name": "disabled", "type": "boolean", "description": "Denotes whether the stylesheet is disabled."}
-                ],
-                "description": "CSS stylesheet metainformation."
-            },
-            {
-                "id": "CSSStyleSheetBody",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "type": "string", "description": "The stylesheet identifier."},
-                    { "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "Stylesheet resource URL."},
-                    { "name": "text", "type": "string", "optional": true, "description": "Stylesheet resource contents (if available)."}
-                ],
-                "description": "CSS stylesheet contents."
-            },
-            {
-                "id": "CSSRule",
-                "type": "object",
-                "properties": [
-                    { "name": "ruleId", "$ref": "CSSRuleId", "optional": true, "description": "The CSS rule identifier (absent for user agent stylesheet and user-specified stylesheet rules)."},
-                    { "name": "selectorText", "type": "string", "description": "Rule selector."},
-                    { "name": "sourceURL", "type": "string", "optional": true, "description": "Parent stylesheet resource URL (for regular rules)."},
-                    { "name": "sourceLine", "type": "integer", "description": "Line ordinal of the rule selector start character in the resource."},
-                    { "name": "origin", "type": "string", "enum": ["user", "user-agent", "inspector", "regular"], "description": "The parent stylesheet type: \"user\" for user stylesheets, \"user-agent\" for user-agent stylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding new rules created with <code>addRule()</code>), \"regular\" for regular stylesheets."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." },
-                    { "name": "selectorRange", "$ref": "SourceRange", "optional": true, "description": "The rule selector range in the underlying resource (if available)." },
-                    { "name": "media", "type": "array", "items": { "$ref": "CSSMedia" }, "optional": true, "description": "Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards." }
-                ],
-                "description": "CSS rule representation."
-            },
-            {
-                "id": "SourceRange",
-                "type": "object",
-                "properties": [
-                    { "name": "start", "type": "integer", "description": "Start of range (inclusive)."},
-                    { "name": "end", "type": "integer", "description": "End of range (exclusive)."}
-                ],
-                "description": "Text range within a resource."
-            },
-            {
-                "id": "ShorthandEntry",
-                "type": "object"
-            },
-            {
-                "id": "CSSComputedStyleProperty",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Computed style property name." },
-                    { "name": "value", "type": "string", "description": "Computed style property value." }
-                ]
-            },            
-            {
-                "id": "CSSStyle",
-                "type": "object",
-                "properties": [
-                    { "name": "styleId", "$ref": "CSSStyleId", "optional": true, "description": "The CSS style identifier (absent for attribute styles)." },
-                    { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style." },
-                    { "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
-                    { "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." },
-                    { "name": "width", "type": "string", "optional": true, "description": "The effective \"width\" property value from this style." },
-                    { "name": "height", "type": "string", "optional": true, "description": "The effective \"height\" property value from this style." }
-                ],
-                "description": "CSS style representation."
-            },
-            {
-                "id": "CSSProperty",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "The property name." },
-                    { "name": "value", "type": "string", "description": "The property value." },
-                    { "name": "priority", "type": "string", "optional": true, "description": "The property priority (implies \"\" if absent)." },
-                    { "name": "implicit", "type": "boolean", "optional": true, "description": "Whether the property is implicit (implies <code>false</code> if absent)." },
-                    { "name": "text", "type": "string", "optional": true, "description": "The full property text as specified in the style." },
-                    { "name": "parsedOk", "type": "boolean", "optional": true, "description": "Whether the property is understood by the browser (implies <code>true</code> if absent)." },
-                    { "name": "status", "type": "string", "enum": ["active", "inactive", "disabled", "style"], "optional": true, "description": "The property status: \"active\" (implied if absent) if the property is effective in the style, \"inactive\" if the property is overridden by a same-named property in this style later on, \"disabled\" if the property is disabled by the user, \"style\" if the property is reported by the browser rather than by the CSS source parser." },
-                    { "name": "shorthandName", "type": "string", "optional": true, "description": "The related shorthand property name (absent if this property is not a longhand)." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The entire property range in the enclosing style declaration (if available)." }
-                ],
-                "description": "CSS style effective visual dimensions and source offsets."
-            },
-            {
-                "id": "CSSMedia",
-                "type": "object",
-                "properties": [
-                    { "name": "text", "type": "string", "description": "Media query text." },
-                    { "name": "source", "type": "string", "enum": ["mediaRule", "importRule", "linkedSheet", "inlineSheet"], "description": "Source of the media query: \"mediaRule\" if specified by a @media rule, \"importRule\" if specified by an @import rule, \"linkedSheet\" if specified by a \"media\" attribute in a linked stylesheet's LINK tag, \"inlineSheet\" if specified by a \"media\" attribute in an inline stylesheet's STYLE tag." },
-                    { "name": "sourceURL", "type": "string", "optional": true, "description": "URL of the document containing the media query description." },
-                    { "name": "sourceLine", "type": "integer", "optional": true, "description": "Line in the document containing the media query (not defined for the \"stylesheet\" source)." }
-                ],
-                "description": "CSS media query descriptor."
-            },
-            {
-                "id": "SelectorProfileEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "selector", "type": "string", "description": "CSS selector of the corresponding rule." },
-                    { "name": "url", "type": "string", "description": "URL of the resource containing the corresponding rule." },
-                    { "name": "lineNumber", "type": "integer", "description": "Selector line number in the resource for the corresponding rule." },
-                    { "name": "time", "type": "number", "description": "Total time this rule handling contributed to the browser running time during profiling (in milliseconds.)" },
-                    { "name": "hitCount", "type": "integer", "description": "Number of times this rule was considered a candidate for matching against DOM elements." },
-                    { "name": "matchCount", "type": "integer", "description": "Number of times this rule actually matched a DOM element." }
-                ],
-                "description": "CSS selector profile entry."
-            },
-            {
-                "id": "SelectorProfile",
-                "type": "object",
-                "properties": [
-                    { "name": "totalTime", "type": "number", "description": "Total processing time for all selectors in the profile (in milliseconds.)" },
-                    { "name": "data", "type": "array", "items": { "$ref": "SelectorProfileEntry" }, "description": "CSS selector profile entries." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received."
-            },
-            {
-                "name": "disable",
-                "description": "Disables the CSS agent for the given page."
-            },
-            {
-                "name": "getMatchedStylesForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" },
-                    { "name": "forcedPseudoClasses", "type": "array", "items": { "type": "string", "enum": ["active", "focus", "hover", "visited"] }, "optional": true, "description": "Element pseudo classes to force when computing applicable style rules." },
-                    { "name": "includePseudo", "type": "boolean", "optional": true, "description": "Whether to include pseudo styles (default: true)." },
-                    { "name": "includeInherited", "type": "boolean", "optional": true, "description": "Whether to include inherited styles (default: true)." }
-                ],
-                "returns": [
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "CSSRule" }, "optional": true, "description": "CSS rules matching this node, from all applicable stylesheets." },
-                    { "name": "pseudoElements", "type": "array", "items": { "$ref": "PseudoIdRules" }, "optional": true, "description": "Pseudo style rules for this node." },
-                    { "name": "inherited", "type": "array", "items": { "$ref": "InheritedStyleEntry" }, "optional": true, "description": "A chain of inherited styles (from the immediate node parent up to the DOM tree root)." }
-                ],
-                "description": "Returns requested styles for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getInlineStylesForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" }
-                ],
-                "returns": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "Inline style for the specified DOM node." },
-                    { "name": "styleAttributes", "type": "array", "items": { "$ref": "CSSStyleAttribute" }, "optional": true, "description": "Entries for style-related element attributes (e.g. width=20)."}
-                ],
-                "description": "Returns the styles defined inline (explicitly in the \"style\" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getComputedStyleForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" },
-                    { "name": "forcedPseudoClasses", "type": "array", "items": { "type": "string", "enum": ["active", "focus", "hover", "visited"] }, "optional": true, "description": "Element pseudo classes to force when computing applicable style rules." }
-                ],
-                "returns": [
-                    { "name": "computedStyle", "type": "array", "items": { "$ref": "CSSComputedStyleProperty" }, "description": "Computed style for the specified DOM node." }
-                ],
-                "description": "Returns the computed style for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getAllStyleSheets",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "CSSStyleSheetHeader" }, "description": "Descriptor entries for all available stylesheets." }
-                ],
-                "description": "Returns metainfo entries for all known stylesheets."
-            },
-            {
-                "name": "getStyleSheet",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "styleSheet", "$ref": "CSSStyleSheetBody", "description": "Stylesheet contents for the specified <code>styleSheetId</code>." }
-                ],
-                "description": "Returns stylesheet data for the specified <code>styleSheetId</code>."
-            },
-            {
-                "name": "getStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "text", "type": "string", "description": "The stylesheet text." }
-                ],
-                "description": "Returns the current textual content and the URL for a stylesheet."
-            },
-            {
-                "name": "setStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "type": "string" },
-                    { "name": "text", "type": "string" }
-                ],
-                "description": "Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet."
-            },
-            {
-                "name": "setPropertyText",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "text", "type": "string" },
-                    { "name": "overwrite", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property text modification." }
-                ],
-                "description": "Sets the new <code>text</code> for a property in the respective style, at offset <code>propertyIndex</code>. If <code>overwrite</code> is <code>true</code>, a property at the given offset is overwritten, otherwise inserted. <code>text</code> entirely replaces the property <code>name: value</code>."
-            },
-            {
-                "name": "toggleProperty",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "disable", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property toggling." }
-                ],
-                "description": "Toggles the property in the respective style, at offset <code>propertyIndex</code>. The <code>disable</code> parameter denotes whether the property should be disabled (i.e. removed from the style declaration). If <code>disable == false</code>, the property gets put back into its original place in the style declaration."
-            },
-            {
-                "name": "setRuleSelector",
-                "parameters": [
-                    { "name": "ruleId", "$ref": "CSSRuleId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The resulting rule after the selector modification." }
-                ],
-                "description": "Modifies the rule selector."
-            },
-            {
-                "name": "addRule",
-                "parameters": [
-                    { "name": "contextNodeId", "$ref": "DOM.NodeId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The newly created rule." }
-                ],
-                "description": "Creates a new empty rule with the given <code>selector</code> in a special \"inspector\" stylesheet in the owner document of the context node."
-            },
-            {
-                "name": "getSupportedCSSProperties",
-                "returns": [
-                    { "name": "cssProperties", "type": "array", "items": { "type": "string" }, "description": "Supported property names." }
-                ],
-                "description": "Returns all supported CSS property names."
-            },
-            {
-                "name": "startSelectorProfiler"
-            },
-            {
-                "name": "stopSelectorProfiler",
-                "returns": [
-                    { "name": "profile", "$ref": "SelectorProfile" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "mediaQueryResultChanged",
-                "description": "Fires whenever a MediaQuery result changes (for example, after a browser window has been resized.) The current implementation considers only viewport-dependent media features."
-            }
-        ]
-    },
-    {
-        "domain": "Timeline",
-        "description": "Timeline provides its clients with instrumentation records that are generated during the page runtime. Timeline instrumentation can be started and stopped using corresponding commands. While timeline is started, it is generating timeline event records.",
-        "types": [
-            {
-                "id": "TimelineEvent",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "description": "Event type." },
-                    { "name": "data", "type": "object", "description": "Event data." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "TimelineEvent" }, "description": "Nested records." }
-                ],
-                "description": "Timeline record contains information about the recorded activity."
-            }
-        ],
-        "commands": [
-            {
-                "name": "start",
-                "parameters": [
-                    { "name": "maxCallStackDepth", "optional": true, "type": "integer", "description": "Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5." }
-                ],
-                "description": "Starts capturing instrumentation events."
-            },
-            {
-                "name": "stop",
-                "description": "Stops capturing instrumentation events."
-            },
-            {
-                "name": "setIncludeMemoryDetails",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "True to start collecting DOM counters." }
-                ],
-                "hidden": true,
-                "description": "Starts calculating various DOM statistics and sending them as part of timeline events."
-            }
-        ],
-        "events": [
-            {
-                "name": "eventRecorded",
-                "parameters": [
-                    { "name": "record", "$ref": "TimelineEvent", "description": "Timeline event record data." }
-                ],
-                "description": "Fired for every instrumentation event while timeline is started."
-            }
-        ]
-    },
-    {
-        "domain": "Debugger",
-        "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.",
-        "types": [
-            {
-                "id": "BreakpointId",
-                "type": "string",
-                "description": "Breakpoint identifier."
-            },
-            {
-                "id": "ScriptId",
-                "type": "string",
-                "description": "Unique script identifier."
-            },
-            {
-                "id": "CallFrameId",
-                "type": "string",
-                "description": "Call frame identifier."
-            },
-            {
-                "id": "Location",
-                "type": "object",
-                "properties": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
-                    { "name": "lineNumber", "type": "integer", "description": "Line number in the script." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script." }
-                ],
-                "description": "Location in the source code."
-            },
-            {
-                "id": "FunctionDetails",
-                "hidden": true,
-                "type": "object",
-                "properties": [
-                    { "name": "location", "$ref": "Location", "description": "Location of the function." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Name of the function. Not present for anonymous functions." },
-                    { "name": "displayName", "type": "string", "optional": true, "description": "Display name of the function(specified in 'displayName' property on the function object)." },
-                    { "name": "inferredName", "type": "string", "optional": true, "description": "Name of the function inferred from its initial assignment." }
-                ],
-                "description": "Information about the function."
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "properties": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused." },
-                    { "name": "functionName", "type": "string", "description": "Name of the JavaScript function called on this call frame." },
-                    { "name": "location", "$ref": "Location", "description": "Location in the source code." },
-                    { "name": "scopeChain", "type": "array", "items": { "$ref": "Scope" }, "description": "Scope chain for this call frame." },
-                    { "name": "this", "$ref": "Runtime.RemoteObject", "description": "<code>this</code> object for this call frame." }
-                ],
-                "description": "JavaScript call frame. Array of call frames form the call stack."
-            },
-            {
-                "id": "Scope",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["global", "local", "with", "closure", "catch"], "description": "Scope type." },
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." }
-                ],
-                "description": "Scope description."
-            }
-        ],
-        "commands": [
-            {
-                "name": "causesRecompilation",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if enabling debugger causes scripts recompilation." }
-                ],
-                "hidden": true,
-                "description": "Tells whether enabling debugger causes scripts recompilation."
-            },
-            {
-                "name": "supportsNativeBreakpoints",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if debugger supports native breakpoints." }
-                ],
-                "hidden": true,
-                "description": "Tells whether debugger supports native breakpoints."
-            },
-            {
-                "name": "enable",
-                "description": "Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received."
-            },
-            {
-                "name": "disable",
-                "description": "Disables debugger for given page."
-            },
-            {
-                "name": "setBreakpointsActive",
-                "parameters": [
-                    { "name": "active", "type": "boolean", "description": "New value for breakpoints active state." }
-                ],
-                "description": "Activates / deactivates all breakpoints on the page."
-            },
-            {
-                "name": "setBreakpointByUrl",
-                "parameters": [
-                    { "name": "lineNumber", "type": "integer", "description": "Line number to set breakpoint at." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the resources to set breakpoint on." },
-                    { "name": "urlRegex", "type": "string", "optional": true, "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Offset in the line to set breakpoint at." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "locations", "optional": true, "type": "array", "items": { "$ref": "Location"}, "description": "List of the locations this breakpoint resolved into upon addition." }
-                ],
-                "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads."
-            },
-            {
-                "name": "setBreakpoint",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to set breakpoint in." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "actualLocation", "$ref": "Location", "description": "Location this breakpoint resolved into." }
-                ],
-                "description": "Sets JavaScript breakpoint at a given location."
-            },
-            {
-                "name": "removeBreakpoint",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId" }
-                ],
-                "description": "Removes JavaScript breakpoint."
-            },
-            {
-                "name": "continueToLocation",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to continue to." }
-                ],
-                "description": "Continues execution until specific location is reached."
-            },
-            {
-                "name": "stepOver",
-                "description": "Steps over the statement."
-            },
-            {
-                "name": "stepInto",
-                "description": "Steps into the function call."
-            },
-            {
-                "name": "stepOut",
-                "description": "Steps out of the function call."
-            },
-            {
-                "name": "pause",
-                "description": "Stops on the next JavaScript statement."
-            },
-            {
-                "name": "resume",
-                "description": "Resumes JavaScript execution."
-            },
-            {
-                "name": "searchInContent",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to search in." },
-                    { "name": "query", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "Page.SearchMatch" }, "description": "List of search matches." }
-                ],
-                "description": "Searches for given string in script content."
-            },
-            {
-                "name": "canSetScriptSource",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if <code>setScriptSource</code> is supported." }
-                ],
-                "description": "Tells whether <code>setScriptSource</code> is supported."
-            },
-            {
-                "name": "setScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to edit." },
-                    { "name": "scriptSource", "type": "string", "description": "New content of the script." },
-                    { "name": "preview", "type": "boolean", "optional": true, "description": " If true the change will not actually be applied. Preview mode may be used to get result description without actually modifying the code.", "hidden": true }
-                ],
-                "returns": [
-                    { "name": "callFrames", "type": "array", "optional": true, "items": { "$ref": "CallFrame"}, "description": "New stack trace in case editing has happened while VM was stopped." },
-                    { "name": "result", "type": "object", "optional": true, "description": "VM-specific description of the changes applied.", "hidden": true }
-                ],
-                "description": "Edits JavaScript source live."
-            },
-            {
-                "name": "getScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to get source for." }
-                ],
-                "returns": [
-                    { "name": "scriptSource", "type": "string", "description": "Script source." }
-                ],
-                "description": "Returns source for the script with given id."
-            },
-            {
-                "name": "getFunctionDetails",
-                "hidden": true,
-                "parameters": [
-                    { "name": "functionId", "$ref": "Runtime.RemoteObjectId", "description": "Id of the function to get location for." }
-                ],
-                "returns": [
-                    { "name": "details", "$ref": "FunctionDetails", "description": "Information about the function." }
-                ],
-                "description": "Returns detailed informtation on given function."
-            },
-            {
-                "name": "setPauseOnExceptions",
-                "parameters": [
-                    { "name": "state", "type": "string", "enum": ["none", "uncaught", "all"], "description": "Pause on exceptions mode." }
-                ],
-                "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>."
-            },
-            {
-                "name": "evaluateOnCallFrame",
-                "parameters": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier to evaluate on." },
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>)." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Specifies whether command line API should be available to the evaluated expression, defaults to false.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Object wrapper for the evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on a given call frame."
-            }
-        ],
-        "events": [
-            {
-                "name": "globalObjectCleared",
-                "description": "Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload."
-            },
-            {
-                "name": "scriptParsed",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Identifier of the script parsed." },
-                    { "name": "url", "type": "string", "description": "URL or name of the script parsed (if any)." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource with given URL (for script tags)." },
-                    { "name": "startColumn", "type": "integer", "description": "Column offset of the script within the resource with given URL." },
-                    { "name": "endLine", "type": "integer", "description": "Last line of the script." },
-                    { "name": "endColumn", "type": "integer", "description": "Length of the last line of the script." },
-                    { "name": "isContentScript", "type": "boolean", "optional": true, "description": "Determines whether this script is a user extension script." },
-                    { "name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with script (if any)." }
-                ],
-                "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger."
-            },
-            {
-                "name": "scriptFailedToParse",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the script that failed to parse." },
-                    { "name": "scriptSource", "type": "string", "description": "Source text of the script that failed to parse." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource." },
-                    { "name": "errorLine", "type": "integer", "description": "Line with error." },
-                    { "name": "errorMessage", "type": "string", "description": "Parse error message." }
-                ],
-                "description": "Fired when virtual machine fails to parse the script."
-            },
-            {
-                "name": "breakpointResolved",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Breakpoint unique identifier." },
-                    { "name": "location", "$ref": "Location", "description": "Actual breakpoint location." }
-                ],
-                "description": "Fired when breakpoint is resolved to an actual script and location."
-            },
-            {
-                "name": "paused",
-                "parameters": [
-                    { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
-                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "other" ], "description": "Pause reason." },
-                    { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." }
-                ],
-                "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria."
-            },
-            {
-                "name": "resumed",
-                "description": "Fired when the virtual machine resumed execution."
-            }
-        ]
-    },
-    {
-        "domain": "DOMDebugger",
-        "description": "DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript execution will stop on these operations as if there was a regular breakpoint set.",
-        "types": [
-            {
-                "id": "DOMBreakpointType",
-                "type": "string",
-                "enum": ["subtree-modified", "attribute-modified", "node-removed"],
-                "description": "DOM breakpoint type."
-            }
-        ],
-        "commands": [
-            {
-                "name": "setDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to set breakpoint on." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the operation to stop upon." }
-                ],
-                "description": "Sets breakpoint on particular operation with DOM."
-            },
-            {
-                "name": "removeDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to remove breakpoint from." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the breakpoint to remove." }
-                ],
-                "description": "Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>."
-            },
-            {
-                "name": "setEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "DOM Event name to stop on (any DOM event will do)." }
-                ],
-                "description": "Sets breakpoint on particular DOM event."
-            },
-            {
-                "name": "removeEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Event name." }
-                ],
-                "description": "Removes breakpoint on particular DOM event."
-            },
-            {
-                "name": "setInstrumentationBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Instrumentation name to stop on." }
-                ],
-                "description": "Sets breakpoint on particular native event.",
-                "hidden": true
-            },
-            {
-                "name": "removeInstrumentationBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Instrumentation name to stop on." }
-                ],
-                "description": "Sets breakpoint on particular native event.",
-                "hidden": true
-            },
-            {
-                "name": "setXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring. All XHRs having this substring in the URL will get stopped upon." }
-                ],
-                "description": "Sets breakpoint on XMLHttpRequest."
-            },
-            {
-                "name": "removeXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring." }
-                ],
-                "description": "Removes breakpoint from XMLHttpRequest."
-            }
-        ]
-    },
-    {
-        "domain": "Profiler",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Profile",
-                "type": "object",
-                "description": "Profile."
-            },
-            {
-                "id": "ProfileHeader",
-                "type": "object",
-                "description": "Profile header."
-            }
-        ],
-        "commands": [
-            {
-                "name": "causesRecompilation",
-                "returns": [
-                    { "name": "result", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "isSampling",
-                "returns": [
-                    { "name": "result", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "hasHeapProfiler",
-                "returns": [
-                    { "name": "result", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "enable"
-            },
-            {
-                "name": "disable"
-            },
-            {
-                "name": "start"
-            },
-            {
-                "name": "stop"
-            },
-            {
-                "name": "getProfileHeaders",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "ProfileHeader"} }
-                ]
-            },
-            {
-                "name": "getProfile",
-                "parameters": [
-                    { "name": "type", "type": "string" },
-                    { "name": "uid", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "profile", "$ref": "Profile" }
-                ]
-            },
-            {
-                "name": "removeProfile",
-                "parameters": [
-                    { "name": "type", "type": "string" },
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "clearProfiles"
-            },
-            {
-                "name": "takeHeapSnapshot"
-            },
-            {
-                "name": "collectGarbage"
-            },
-            {
-                "name": "getObjectByHeapObjectId",
-                "parameters": [
-                    { "name": "objectId", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Evaluation result." }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addProfileHeader",
-                "parameters": [
-                    { "name": "header", "$ref": "ProfileHeader" }
-                ]
-            },
-            {
-                "name": "addHeapSnapshotChunk",
-                "parameters": [
-                    { "name": "uid", "type": "integer" },
-                    { "name": "chunk", "type": "string" }
-                ]
-            },
-            {
-                "name": "finishHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setRecordingProfile",
-                "parameters": [
-                    { "name": "isProfiling", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "resetProfiles"
-            },
-            {
-                "name": "reportHeapSnapshotProgress",
-                "parameters": [
-                    { "name": "done", "type": "integer" },
-                    { "name": "total", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Worker",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "setWorkerInspectionEnabled",
-                "parameters": [
-                    { "name": "value", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "sendMessageToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            },
-            {
-                "name": "connectToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "disconnectFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setAutoconnectToWorkers",
-                "parameters": [
-                    { "name": "value", "type": "boolean" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "workerCreated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "url", "type": "string" },
-                    { "name": "inspectorConnected", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "workerTerminated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "dispatchMessageFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            },
-            {
-                "name": "disconnectedFromWorker"
-            }
-        ]
-    }]
-}
diff --git a/inspector/Inspector.json b/inspector/Inspector.json
deleted file mode 100644
index 0e39e3e..0000000
--- a/inspector/Inspector.json
+++ /dev/null
@@ -1,3741 +0,0 @@
-{
-    "version": { "major": "1", "minor": "0" },
-    "domains": [{
-        "domain": "Inspector",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables inspector domain notifications."
-            },
-            {
-                "name": "disable",
-                "description": "Disables inspector domain notifications."
-            }
-        ],
-        "events": [
-            {
-                "name": "evaluateForTestInFrontend",
-                "parameters": [
-                    { "name": "testCallId", "type": "integer" },
-                    { "name": "script", "type": "string" }
-                ]
-            },
-            {
-                "name": "inspect",
-                "parameters": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject" },
-                    { "name": "hints", "type": "object" }
-                ]
-            },
-            {
-                "name": "detached",
-                "description": "Fired when remote debugging connection is about to be terminated. Contains detach reason.",
-                "parameters": [
-                    { "name": "reason", "type": "string", "description": "The reason why connection has been terminated." }
-                ]
-            },
-            {
-                "name": "targetCrashed",
-                "description": "Fired when debugging target has crashed"
-            }
-        ]
-    },
-    {
-        "domain": "Memory",
-        "hidden": true,
-        "types": [
-            {
-                "id": "MemoryBlock",
-                "type": "object",
-                "properties": [
-                    { "name": "size", "type": "number", "optional": true, "description": "Size of the block in bytes if available" },
-                    { "name": "name", "type": "string", "description": "Unique name used to identify the component that allocated this block" },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "MemoryBlock" }}
-                ]
-            },
-            {
-                "id": "HeapSnapshotChunk",
-                "type": "object",
-                "properties": [
-                    { "name": "strings", "type": "array", "items": { "type": "string" }, "description": "An array of strings that were found since last update." },
-                    { "name": "nodes", "type": "array", "items": { "type": "integer" }, "description": "An array of nodes that were found since last update." },
-                    { "name": "edges", "type": "array", "items": { "type": "integer" }, "description": "An array of edges that were found since last update." },
-                    { "name": "baseToRealNodeId", "type": "array", "items": { "type": "integer" }, "description": "An array of integers for nodeId remapping. Even nodeId has to be mapped to the following odd nodeId." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "getDOMCounters",
-                "returns": [
-                    { "name": "documents", "type": "integer" },
-                    { "name": "nodes", "type": "integer" },
-                    { "name": "jsEventListeners", "type": "integer" }
-                ]
-            },
-            {
-                "name": "getProcessMemoryDistribution",
-                "parameters": [
-                    { "name": "reportGraph", "type": "boolean", "optional": true, "description": "Whether native memory graph should be reported in addition to aggregated statistics." }
-                ],
-                "returns": [
-                    { "name": "distribution", "$ref": "MemoryBlock", "description": "An object describing all memory allocated by the process"},
-                    { "name": "graphMetaInformation", "type": "object", "optional": true, "description": "An object describing structures of nodes and edges in the graph."}
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addNativeSnapshotChunk",
-                "parameters": [
-                    { "name": "chunk", "$ref": "HeapSnapshotChunk", "description": "A chunk of the serialized the snapshot." }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Page",
-        "description": "Actions and events related to the inspected page belong to the page domain.",
-        "types": [
-            {
-                "id": "ResourceType",
-                "type": "string",
-                "enum": ["Document", "Stylesheet", "Image", "Font", "Script", "XHR", "WebSocket", "Other"],
-                "description": "Resource type as it was perceived by the rendering engine."
-            },
-            {
-                "id": "Frame",
-                "type": "object",
-                "description": "Information about the Frame on the page.",
-                "properties": [
-                    { "name": "id", "type": "string", "description": "Frame unique identifier." },
-                    { "name": "parentId", "type": "string", "optional": true, "description": "Parent frame identifier." },
-                    { "name": "loaderId", "$ref": "Network.LoaderId", "description": "Identifier of the loader associated with this frame." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Frame's name as specified in the tag." },
-                    { "name": "url", "type": "string", "description": "Frame document's URL." },
-                    { "name": "securityOrigin", "type": "string", "description": "Frame document's security origin." },
-                    { "name": "mimeType", "type": "string", "description": "Frame document's mimeType as determined by the browser." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "FrameResourceTree",
-                "type": "object",
-                "description": "Information about the Frame hierarchy along with their cached resources.",
-                "properties": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame information for this tree item." },
-                    { "name": "childFrames", "type": "array", "optional": true, "items": { "$ref": "FrameResourceTree" }, "description": "Child frames." },
-                    { "name": "resources", "type": "array",
-                        "items": {
-                            "type": "object",
-                            "properties": [
-                                { "name": "url", "type": "string", "description": "Resource URL." },
-                                { "name": "type", "$ref": "ResourceType", "description": "Type of this resource." },
-                                { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
-                                { "name": "failed", "type": "boolean", "optional": true, "description": "True if the resource failed to load." },
-                                { "name": "canceled", "type": "boolean", "optional": true, "description": "True if the resource was canceled during loading." }
-                            ]
-                        },
-                        "description": "Information about frame resources."
-                    }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "SearchMatch",
-                "type": "object",
-                "description": "Search match for resource.",
-                "properties": [
-                    { "name": "lineNumber", "type": "number", "description": "Line number in resource content." },
-                    { "name": "lineContent", "type": "string", "description": "Line with match content." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "SearchResult",
-                "type": "object",
-                "description": "Search result for resource.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource URL." },
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Resource frame id." },
-                    { "name": "matchesCount", "type": "number", "description": "Number of matches in the resource content." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "Cookie",
-                "type": "object",
-                "description": "Cookie object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Cookie name." },
-                    { "name": "value", "type": "string", "description": "Cookie value." },
-                    { "name": "domain", "type": "string", "description": "Cookie domain." },
-                    { "name": "path", "type": "string", "description": "Cookie path." },
-                    { "name": "expires", "type": "number", "description": "Cookie expires." },
-                    { "name": "size", "type": "integer", "description": "Cookie size." },
-                    { "name": "httpOnly", "type": "boolean", "description": "True if cookie is http-only." },
-                    { "name": "secure", "type": "boolean", "description": "True if cookie is secure." },
-                    { "name": "session", "type": "boolean", "description": "True in case of session cookie." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "ScriptIdentifier",
-                "type": "string",
-                "description": "Unique script identifier.",
-                "hidden": true
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables page domain notifications."
-            },
-            {
-                "name": "disable",
-                "description": "Disables page domain notifications."
-            },
-            {
-                "name": "addScriptToEvaluateOnLoad",
-                "parameters": [
-                    { "name": "scriptSource", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "identifier", "$ref": "ScriptIdentifier", "description": "Identifier of the added script." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "removeScriptToEvaluateOnLoad",
-                "parameters": [
-                    { "name": "identifier", "$ref": "ScriptIdentifier" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "reload",
-                "parameters": [
-                    { "name": "ignoreCache", "type": "boolean", "optional": true, "description": "If true, browser cache is ignored (as if the user pressed Shift+refresh)." },
-                    { "name": "scriptToEvaluateOnLoad", "type": "string", "optional": true, "description": "If set, the script will be injected into all frames of the inspected page after reload." },
-                    { "name": "scriptPreprocessor", "type": "string", "optional": true, "description": "Script body that should evaluate to function that will preprocess all the scripts before their compilation.", "hidden": true }
-                ],
-                "description": "Reloads given page optionally ignoring the cache."
-            },
-            {
-                "name": "navigate",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL to navigate the page to." }
-                ],
-                "description": "Navigates current page to the given URL."
-            },
-            {
-                "name": "getCookies",
-                "returns": [
-                    { "name": "cookies", "type": "array", "items": { "$ref": "Cookie"}, "description": "Array of cookie objects." },
-                    { "name": "cookiesString", "type": "string", "description": "document.cookie string representation of the cookies." }
-                ],
-                "description": "Returns all browser cookies. Depending on the backend support, will either return detailed cookie information in the <code>cookie</code> field or string cookie representation using <code>cookieString</code>.",
-                "hidden": true
-            },
-            {
-                "name": "deleteCookie",
-                "parameters": [
-                    { "name": "cookieName", "type": "string", "description": "Name of the cookie to remove." },
-                    { "name": "url", "type": "string", "description": "URL to match cooke domain and path." }
-                ],
-                "description": "Deletes browser cookie with given name, domain and path.",
-                "hidden": true
-            },
-            {
-                "name": "getResourceTree",
-                "description": "Returns present frame / resource tree structure.",
-                "returns": [
-                    { "name": "frameTree", "$ref": "FrameResourceTree", "description": "Present frame / resource tree structure." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "getResourceContent",
-                "description": "Returns content of the given resource.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id to get resource for." },
-                    { "name": "url", "type": "string", "description": "URL of the resource to get content for." }
-                ],
-                "returns": [
-                    { "name": "content", "type": "string", "description": "Resource content." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was served as base64." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "searchInResource",
-                "description": "Searches for given string in resource content.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id for resource to search in." },
-                    { "name": "url", "type": "string", "description": "URL of the resource to search in." },
-                    { "name": "query", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "SearchMatch" }, "description": "List of search matches." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "searchInResources",
-                "description": "Searches for given string in frame / resource tree structure.",
-                "parameters": [
-                    { "name": "text", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "SearchResult" }, "description": "List of search results." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setDocumentContent",
-                "description": "Sets given markup as the document's HTML.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id to set HTML for." },
-                    { "name": "html", "type": "string", "description": "HTML content to set."  }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setDeviceMetricsOverride",
-                "description": "Overrides the values of device screen dimensions (window.screen.width, window.screen.height, window.innerWidth, window.innerHeight, and \"device-width\"/\"device-height\"-related CSS media query results) and the font scale factor.",
-                "parameters": [
-                    { "name": "width", "type": "integer", "description": "Overriding width value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
-                    { "name": "height", "type": "integer", "description": "Overriding height value in pixels (minimum 0, maximum 10000000). 0 disables the override." },
-                    { "name": "fontScaleFactor", "type": "number", "description": "Overriding font scale factor value (must be positive). 1 disables the override." },
-                    { "name": "fitWindow", "type": "boolean", "description": "Whether a view that exceeds the available browser window area should be scaled down to fit." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setShowPaintRects",
-                "description": "Requests that backend shows paint rectangles",
-                "parameters": [
-                    { "name": "result", "type": "boolean", "description": "True for showing paint rectangles" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setShowDebugBorders",
-                "description": "Requests that backend shows debug borders on layers",
-                "parameters": [
-                    { "name": "show", "type": "boolean", "description": "True for showing debug borders" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "canShowFPSCounter",
-                "description": "Tells if backend supports a FPS counter display",
-                "returns": [
-                    { "name": "show", "type": "boolean", "description": "True if the FPS count can be shown" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setShowFPSCounter",
-                "description": "Requests that backend shows the FPS counter",
-                "parameters": [
-                    { "name": "show", "type": "boolean", "description": "True for showing the FPS counter" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "canContinuouslyPaint",
-                "description": "Tells if backend supports continuous painting",
-                "returns": [
-                    { "name": "value", "type": "boolean", "description": "True if continuous painting is available" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setContinuousPaintingEnabled",
-                "description": "Requests that backend enables continuous painting",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "True for enabling cointinuous painting" }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "getScriptExecutionStatus",
-                "description": "Determines if scripts can be executed in the page.",
-                "returns": [
-                    { "name": "result", "type": "string", "enum": ["allowed", "disabled", "forbidden"], "description": "Script execution status: \"allowed\" if scripts can be executed, \"disabled\" if script execution has been disabled through page settings, \"forbidden\" if script execution for the given page is not possible for other reasons." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setScriptExecutionDisabled",
-                "description": "Switches script execution in the page.",
-                "parameters": [
-                    { "name": "value", "type": "boolean", "description": "Whether script execution should be disabled in the page." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setGeolocationOverride",
-                "description": "Overrides the Geolocation Position or Error.",
-                "parameters": [
-                    { "name": "latitude", "type": "number", "optional": true, "description": "Mock longitude"},
-                    { "name": "longitude", "type": "number", "optional": true, "description": "Mock latitude"},
-                    { "name": "accuracy", "type": "number", "optional": true, "description": "Mock accuracy"}
-                ]
-            },
-            {
-                "name": "clearGeolocationOverride",
-                "description": "Clears the overriden Geolocation Position and Error."
-            },
-            {
-                "name": "canOverrideGeolocation",
-                "description": "Checks if Geolocation can be overridden.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser can ovrride Geolocation." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setDeviceOrientationOverride",
-                "description": "Overrides the Device Orientation.",
-                "parameters": [
-                    { "name": "alpha", "type": "number", "description": "Mock alpha"},
-                    { "name": "beta", "type": "number", "description": "Mock beta"},
-                    { "name": "gamma", "type": "number", "description": "Mock gamma"}
-                ],
-                "hidden": true
-            },
-            {
-                "name": "clearDeviceOrientationOverride",
-                "description": "Clears the overridden Device Orientation.",
-                "hidden": true
-            },
-            {
-                "name": "canOverrideDeviceOrientation",
-                "description": "Check the backend if Web Inspector can override the device orientation.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "If true, <code>setDeviceOrientationOverride</code> can safely be invoked on the agent." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setTouchEmulationEnabled",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "Whether the touch event emulation should be enabled." }
-                ],
-                "description": "Toggles mouse event-based touch event emulation.",
-                "hidden": true
-            },
-            {
-                "name": "setEmulatedMedia",
-                "parameters": [
-                    { "name": "media", "type": "string", "description": "Media type to emulate. Empty string disables the override." }
-                ],
-                "description": "Emulates the given media for CSS media queries.",
-                "hidden": true
-            },
-            {
-                "name": "getCompositingBordersVisible",
-                "description": "Indicates the visibility of compositing borders.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "If true, compositing borders are visible." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "setCompositingBordersVisible",
-                "description": "Controls the visibility of compositing borders.",
-                "parameters": [
-                    { "name": "visible", "type": "boolean", "description": "True for showing compositing borders." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "captureScreenshot",
-                "description": "Capture page screenshot.",
-                "returns": [
-                    { "name": "data", "type": "string", "description": "Base64-encoded image data (PNG)." }
-                ]
-            },
-            {
-                "name": "handleJavaScriptDialog",
-                "description": "Accepts or dismisses a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload).",
-                "parameters": [
-                    { "name": "accept", "type": "boolean", "description": "Whether to accept or dismiss the dialog." },
-                    { "name": "promptText", "type": "string", "optional": "true", "description": "The text to enter into the dialog prompt before accepting. Used only if this is a prompt dialog." }
-                ],
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "domContentEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "loadEventFired",
-                "parameters": [
-                    { "name": "timestamp", "type": "number" }
-                ]
-            },
-            {
-                "name": "frameNavigated",
-                "description": "Fired once navigation of the frame has completed. Frame is now associated with the new loader.",
-                "parameters": [
-                    { "name": "frame", "$ref": "Frame", "description": "Frame object." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameDetached",
-                "description": "Fired when frame has been detached from its parent.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has been detached." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameStartedLoading",
-                "description": "Fired when frame has started loading.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has started loading." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameStoppedLoading",
-                "description": "Fired when frame has stopped loading.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has stopped loading." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameScheduledNavigation",
-                "description": "Fired when frame schedules a potential navigation.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has scheduled a navigation." },
-                    { "name": "delay", "type": "number", "description": "Delay (in seconds) until the navigation is scheduled to begin. The navigation is not guaranteed to start." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "frameClearedScheduledNavigation",
-                "description": "Fired when frame no longer has a scheduled navigation.",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the frame that has cleared its scheduled navigation." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "javascriptDialogOpening",
-                "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) is about to open.",
-                "parameters": [
-                    { "name": "message", "type": "string", "description": "Message that will be displayed by the dialog." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "javascriptDialogClosed",
-                "description": "Fired when a JavaScript initiated dialog (alert, confirm, prompt, or onbeforeunload) has been closed.",
-                "hidden": true
-            },
-            {
-                "name": "scriptsEnabled",
-                "description": "Fired when the JavaScript is enabled/disabled on the page",
-                "parameters": [
-                    { "name": "isEnabled", "type": "boolean", "description": "Whether script execution is enabled or disabled on the page." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Runtime",
-        "description": "Runtime domain exposes JavaScript runtime by means of remote evaluation and mirror objects. Evaluation results are returned as mirror object that expose object type, string representation and unique identifier that can be used for further object reference. Original objects are maintained in memory unless they are either explicitly released or are released along with the other objects in their object group.",
-        "types": [
-            {
-                "id": "RemoteObjectId",
-                "type": "string",
-                "description": "Unique object identifier."
-            },
-            {
-                "id": "RemoteObject",
-                "type": "object",
-                "description": "Mirror object referencing original JavaScript object.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean"], "description": "Object type." },
-                    { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date"], "description": "Object subtype hint. Specified for <code>object</code> type values only." },
-                    { "name": "className", "type": "string", "optional": true, "description": "Object class (constructor) name. Specified for <code>object</code> type values only." },
-                    { "name": "value", "type": "any", "optional": true, "description": "Remote object value (in case of primitive values or JSON values if it was requested)." },
-                    { "name": "description", "type": "string", "optional": true, "description": "String representation of the object." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Unique object identifier (for non-primitive values)." },
-                    { "name": "preview", "$ref": "ObjectPreview", "optional": true, "description": "Preview containsing abbreviated property values.", "hidden": true }
-                ]
-            },
-            {
-                "id": "ObjectPreview",
-                "type": "object",
-                "hidden": true,
-                "description": "Object containing abbreviated remote object value.",
-                "properties": [
-                    { "name": "lossless", "type": "boolean", "description": "Determines whether preview is lossless (contains all information of the original object)." },
-                    { "name": "overflow", "type": "boolean", "description": "True iff some of the properties of the original did not fit." },
-                    { "name": "properties", "type": "array", "items": { "$ref": "PropertyPreview" }, "description": "List of the properties." }
-                ]
-            },
-            {
-                "id": "PropertyPreview",
-                "type": "object",
-                "hidden": true,
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Property name." },
-	                { "name": "type", "type": "string", "enum": ["object", "function", "undefined", "string", "number", "boolean"], "description": "Object type." },
-	                { "name": "value", "type": "string", "optional": true, "description": "User-friendly property value string." },
-	                { "name": "valuePreview", "$ref": "ObjectPreview", "optional": true, "description": "Nested value preview." },
-	                { "name": "subtype", "type": "string", "optional": true, "enum": ["array", "null", "node", "regexp", "date"], "description": "Object subtype hint. Specified for <code>object</code> type values only." }
-                ]
-            },
-            {
-                "id": "PropertyDescriptor",
-                "type": "object",
-                "description": "Object property descriptor.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Property name." },
-                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." },
-                    { "name": "writable", "type": "boolean", "optional": true, "description": "True if the value associated with the property may be changed (data descriptors only)." },
-                    { "name": "get", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a getter for the property, or <code>undefined</code> if there is no getter (accessor descriptors only)." },
-                    { "name": "set", "$ref": "RemoteObject", "optional": true, "description": "A function which serves as a setter for the property, or <code>undefined</code> if there is no setter (accessor descriptors only)." },
-                    { "name": "configurable", "type": "boolean", "description": "True if the type of this property descriptor may be changed and if the property may be deleted from the corresponding object." },
-                    { "name": "enumerable", "type": "boolean", "description": "True if this property shows up during enumeration of the properties on the corresponding object." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." },
-                    { "name": "isOwn", "optional": true, "type": "boolean", "description": "True if the property is owned for the object.", "hidden": true }
-
-                ]
-            },
-            {
-                "id": "InternalPropertyDescriptor",
-                "type": "object",
-                "description": "Object internal property descriptor. This property isn't normally visible in JavaScript code.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Conventional property name." },
-                    { "name": "value", "$ref": "RemoteObject", "optional": true, "description": "The value associated with the property." }
-                ],
-                "hidden": true
-            },
-            {
-                "id": "CallArgument",
-                "type": "object",
-                "description": "Represents function call argument. Either remote object id <code>objectId</code> or primitive <code>value</code> or neither of (for undefined) them should be specified.",
-                "properties": [
-                    { "name": "value", "type": "any", "optional": true, "description": "Primitive value." },
-                    { "name": "objectId", "$ref": "RemoteObjectId", "optional": true, "description": "Remote object handle." }
-                ]
-            },
-            {
-                "id": "ExecutionContextId",
-                "type": "integer",
-                "description": "Id of an execution context."
-            },
-            {
-                "id": "ExecutionContextDescription",
-                "type": "object",
-                "description": "Description of an isolated world.",
-                "properties": [
-                    { "name": "id", "$ref": "ExecutionContextId", "description": "Unique id of the execution context. It can be used to specify in which execution context script evaluation should be performed." },
-                    { "name": "isPageContext", "type": "boolean", "description": "True if this is a context where inpspected web page scripts run. False if it is a content script isolated context.", "hidden": true },
-                    { "name": "name", "type": "string", "description": "Human readable name describing given context.", "hidden": true},
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Id of the owning frame." }
-                ]
-            }
-
-        ],
-        "commands": [
-            {
-                "name": "evaluate",
-                "parameters": [
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Determines whether Command Line API should be available during the evaluation.", "hidden": true },
-                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.", "hidden": true },
-                    { "name": "contextId", "$ref": "Runtime.ExecutionContextId", "optional": true, "description": "Specifies in which isolated context to perform evaluation. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page." },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." },
-                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the result." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on global object."
-            },
-            {
-                "name": "callFunctionOn",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to call function on." },
-                    { "name": "functionDeclaration", "type": "string", "description": "Declaration of the function to call." },
-                    { "name": "arguments", "type": "array", "items": { "$ref": "CallArgument", "description": "Call argument." }, "optional": true, "description": "Call arguments. All call arguments must belong to the same JavaScript world as the target object." },
-                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether function call should stop on exceptions and mute console. Overrides setPauseOnException state.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object which should be sent by value." },
-                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the result." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "RemoteObject", "description": "Call result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Calls function with given declaration on the given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "getProperties",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to return properties for." },
-                    { "name": "ownProperties", "optional": true, "type": "boolean", "description": "If true, returns properties belonging only to the element itself, not to its prototype chain." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "PropertyDescriptor"}, "description": "Object properties." },
-                    { "name": "internalProperties", "optional": true, "type": "array", "items": { "$ref": "InternalPropertyDescriptor"}, "description": "Internal object properties.", "hidden": true }
-                ],
-                "description": "Returns properties of a given object. Object group of the result is inherited from the target object."
-            },
-            {
-                "name": "releaseObject",
-                "parameters": [
-                    { "name": "objectId", "$ref": "RemoteObjectId", "description": "Identifier of the object to release." }
-                ],
-                "description": "Releases remote object with given id."
-            },
-            {
-                "name": "releaseObjectGroup",
-                "parameters": [
-                    { "name": "objectGroup", "type": "string", "description": "Symbolic object group name." }
-                ],
-                "description": "Releases all remote objects that belong to a given group."
-            },
-            {
-                "name": "run",
-                "hidden": true,
-                "description": "Tells inspected instance(worker or page) that it can run in case it was started paused."
-            },
-            {
-                "name": "enable",
-                "description": "Enables reporting of execution contexts creation by means of <code>executionContextCreated</code> event. When the reporting gets enabled the event will be sent immediately for each existing execution context."
-            },
-            {
-                "name": "disable",
-                "hidden": true,
-                "description": "Disables reporting of execution contexts creation."
-            }
-        ],
-        "events": [
-            {
-                "name": "executionContextCreated",
-                "parameters": [
-                    { "name": "context", "$ref": "ExecutionContextDescription", "description": "A newly created execution contex." }
-                ],
-                "description": "Issued when new execution context is created."
-            }
-        ]
-    },
-    {
-        "domain": "Console",
-        "description": "Console domain defines methods and events for interaction with the JavaScript console. Console collects messages created by means of the <a href='http://getfirebug.com/wiki/index.php/Console_API'>JavaScript Console API</a>. One needs to enable this domain using <code>enable</code> command in order to start receiving the console messages. Browser collects messages issued while console domain is not enabled as well and reports them using <code>messageAdded</code> notification upon enabling.",
-        "types": [
-            {
-                "id": "ConsoleMessage",
-                "type": "object",
-                "description": "Console message.",
-                "properties": [
-                    { "name": "source", "type": "string", "enum": ["xml", "javascript", "network", "console-api", "storage", "appcache", "rendering", "css", "security", "other"], "description": "Message source." },
-                    { "name": "level", "type": "string", "enum": ["log", "warning", "error", "debug"], "description": "Message severity." },
-                    { "name": "text", "type": "string", "description": "Message text." },
-                    { "name": "type", "type": "string", "optional": true, "enum": ["log", "dir", "dirxml", "table", "trace", "clear", "startGroup", "startGroupCollapsed", "endGroup", "assert", "timing", "profile", "profileEnd"], "description": "Console message type." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the message origin." },
-                    { "name": "line", "type": "integer", "optional": true, "description": "Line number in the resource that generated this message." },
-                    { "name": "repeatCount", "type": "integer", "optional": true, "description": "Repeat count for repeated messages." },
-                    { "name": "parameters", "type": "array", "items": { "$ref": "Runtime.RemoteObject" }, "optional": true, "description": "Message parameters in case of the formatted message." },
-                    { "name": "stackTrace", "$ref": "StackTrace", "optional": true, "description": "JavaScript stack trace for assertions and error messages." },
-                    { "name": "networkRequestId", "$ref": "Network.RequestId", "optional": true, "description": "Identifier of the network request associated with this message." }
-                ]
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "description": "Stack entry for console errors and assertions.",
-                "properties": [
-                    { "name": "functionName", "type": "string", "description": "JavaScript function name." },
-                    { "name": "url", "type": "string", "description": "JavaScript script name or url." },
-                    { "name": "lineNumber", "type": "integer", "description": "JavaScript script line number." },
-                    { "name": "columnNumber", "type": "integer", "description": "JavaScript script column number." }
-                ]
-            },
-            {
-                "id": "StackTrace",
-                "type": "array",
-                "items": { "$ref": "CallFrame" },
-                "description": "Call frames for assertions or error messages."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables console domain, sends the messages collected so far to the client by means of the <code>messageAdded</code> notification."
-            },
-            {
-                "name": "disable",
-                "description": "Disables console domain, prevents further console messages from being reported to the client."
-            },
-            {
-                "name": "clearMessages",
-                "description": "Clears console messages collected in the browser."
-            },
-            {
-                "name": "setMonitoringXHREnabled",
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "Monitoring enabled state." }
-                ],
-                "description": "Toggles monitoring of XMLHttpRequest. If <code>true</code>, console will receive messages upon each XHR issued.",
-                "hidden": true
-            },
-            {
-                "name": "addInspectedNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "DOM node id to be accessible by means of $x command line API." }
-                ],
-                "description": "Enables console to refer to the node with given id via $x (see Command Line API for more details $x functions).",
-                "hidden": true
-            },
-            {
-                "name": "addInspectedHeapObject",
-                "parameters": [
-                    { "name": "heapObjectId", "type": "integer" }
-                ],
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "messageAdded",
-                "parameters": [
-                    { "name": "message", "$ref": "ConsoleMessage", "description": "Console message that has been added." }
-                ],
-                "description": "Issued when new console message is added."
-            },
-            {
-                "name": "messageRepeatCountUpdated",
-                "parameters": [
-                    { "name": "count", "type": "integer", "description": "New repeat count value." }
-                ],
-                "description": "Issued when subsequent message(s) are equal to the previous one(s)."
-            },
-            {
-                "name": "messagesCleared",
-                "description": "Issued when console is cleared. This happens either upon <code>clearMessages</code> command or after page navigation."
-            }
-        ]
-    },
-    {
-        "domain": "Network",
-        "description": "Network domain allows tracking network activities of the page. It exposes information about http, file, data and other requests and responses, their headers, bodies, timing, etc.",
-        "types": [
-            {
-                "id": "LoaderId",
-                "type": "string",
-                "description": "Unique loader identifier."
-            },
-            {
-                "id": "FrameId",
-                "type": "string",
-                "description": "Unique frame identifier.",
-                "hidden": true
-            },
-            {
-                "id": "RequestId",
-                "type": "string",
-                "description": "Unique request identifier."
-            },
-            {
-                "id": "Timestamp",
-                "type": "number",
-                "description": "Number of seconds since epoch."
-            },
-            {
-                "id": "Headers",
-                "type": "object",
-                "description": "Request / response headers as keys / values of JSON object."
-            },
-            {
-                "id": "ResourceTiming",
-                "type": "object",
-                "description": "Timing information for the request.",
-                "properties": [
-                    { "name": "requestTime", "type": "number", "description": "Timing's requestTime is a baseline in seconds, while the other numbers are ticks in milliseconds relatively to this requestTime." },
-                    { "name": "proxyStart", "type": "number", "description": "Started resolving proxy." },
-                    { "name": "proxyEnd", "type": "number", "description": "Finished resolving proxy." },
-                    { "name": "dnsStart", "type": "number", "description": "Started DNS address resolve." },
-                    { "name": "dnsEnd", "type": "number", "description": "Finished DNS address resolve." },
-                    { "name": "connectStart", "type": "number", "description": "Started connecting to the remote host." },
-                    { "name": "connectEnd", "type": "number", "description": "Connected to the remote host." },
-                    { "name": "sslStart", "type": "number", "description": "Started SSL handshake." },
-                    { "name": "sslEnd", "type": "number", "description": "Finished SSL handshake." },
-                    { "name": "sendStart", "type": "number", "description": "Started sending request." },
-                    { "name": "sendEnd", "type": "number", "description": "Finished sending request." },
-                    { "name": "receiveHeadersEnd", "type": "number", "description": "Finished receiving response headers." }
-                ]
-            },
-            {
-                "id": "Request",
-                "type": "object",
-                "description": "HTTP request data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Request URL." },
-                    { "name": "method", "type": "string", "description": "HTTP request method." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP request headers." },
-                    { "name": "postData", "type": "string", "optional": true, "description": "HTTP POST request data." }
-                ]
-            },
-            {
-                "id": "Response",
-                "type": "object",
-                "description": "HTTP response data.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Response URL. This URL can be different from CachedResource.url in case of redirect." },
-                    { "name": "status", "type": "number", "description": "HTTP response status code." },
-                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." },
-                    { "name": "headersText", "type": "string", "optional": true, "description": "HTTP response headers text." },
-                    { "name": "mimeType", "type": "string", "description": "Resource mimeType as determined by the browser." },
-                    { "name": "requestHeaders", "$ref": "Headers", "optional": true, "description": "Refined HTTP request headers that were actually transmitted over the network." },
-                    { "name": "requestHeadersText", "type": "string", "optional": true, "description": "HTTP request headers text." },
-                    { "name": "connectionReused", "type": "boolean", "description": "Specifies whether physical connection was actually reused for this request." },
-                    { "name": "connectionId", "type": "number", "description": "Physical connection id that was actually used for this request." },
-                    { "name": "fromDiskCache", "type": "boolean", "optional": true, "description": "Specifies that the request was served from the disk cache." },
-                    { "name": "timing", "$ref": "ResourceTiming", "optional": true, "description": "Timing information for the given request." }
-                ]
-            },
-            {
-                "id": "WebSocketRequest",
-                "type": "object",
-                "description": "WebSocket request data.",
-                "hidden": true,
-                "properties": [
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." }
-                ]
-            },
-            {
-                "id": "WebSocketResponse",
-                "type": "object",
-                "description": "WebSocket response data.",
-                "hidden": true,
-                "properties": [
-                    { "name": "status", "type": "number", "description": "HTTP response status code." },
-                    { "name": "statusText", "type": "string", "description": "HTTP response status text." },
-                    { "name": "headers", "$ref": "Headers", "description": "HTTP response headers." }
-                ]
-            },
-            {
-                "id": "WebSocketFrame",
-                "type": "object",
-                "description": "WebSocket frame data.",
-                "hidden": true,
-                "properties": [
-                    { "name": "opcode", "type": "number", "description": "WebSocket frame opcode." },
-                    { "name": "mask", "type": "boolean", "description": "WebSocke frame mask." },
-                    { "name": "payloadData", "type": "string", "description": "WebSocke frame payload data." }
-                ]
-            },
-            {
-                "id": "CachedResource",
-                "type": "object",
-                "description": "Information about the cached resource.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource URL. This is the url of the original network request." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Type of this resource." },
-                    { "name": "response", "$ref": "Response", "optional": true, "description": "Cached response data." },
-                    { "name": "bodySize", "type": "number", "description": "Cached response body size." }
-                ]
-            },
-            {
-                "id": "Initiator",
-                "type": "object",
-                "description": "Information about the request initiator.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["parser", "script", "other"], "description": "Type of this initiator." },
-                    { "name": "stackTrace", "$ref": "Console.StackTrace", "optional": true, "description": "Initiator JavaScript stack trace, set for Script only." },
-                    { "name": "url", "type": "string", "optional": true, "description": "Initiator URL, set for Parser type only." },
-                    { "name": "lineNumber", "type": "number", "optional": true, "description": "Initiator line number, set for Parser type only." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables network tracking, network events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables network tracking, prevents network events from being sent to the client."
-            },
-            {
-                "name": "setUserAgentOverride",
-                "description": "Allows overriding user agent with the given string.",
-                "parameters": [
-                    { "name": "userAgent", "type": "string", "description": "User agent to use." }
-                ]
-            },
-            {
-                "name": "setExtraHTTPHeaders",
-                "description": "Specifies whether to always send extra HTTP headers with the requests from this page.",
-                "parameters": [
-                    { "name": "headers", "$ref": "Headers", "description": "Map with extra HTTP headers." }
-                ]
-            },
-            {
-                "name": "getResponseBody",
-                "description": "Returns content served for the given request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of the network request to get content for." }
-                ],
-                "returns": [
-                    { "name": "body", "type": "string", "description": "Response body." },
-                    { "name": "base64Encoded", "type": "boolean", "description": "True, if content was sent as base64." }
-                ]
-            },
-            {
-                "name": "replayXHR",
-                "description": "This method sends a new XMLHttpRequest which is identical to the original one. The following parameters should be identical: method, url, async, request body, extra headers, withCredentials attribute, user, password.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Identifier of XHR to replay." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "canClearBrowserCache",
-                "description": "Tells whether clearing browser cache is supported.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser cache can be cleared." }
-                ]
-            },
-            {
-                "name": "clearBrowserCache",
-                "description": "Clears browser cache."
-            },
-            {
-                "name": "canClearBrowserCookies",
-                "description": "Tells whether clearing browser cookies is supported.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser cookies can be cleared." }
-                ]
-            },
-            {
-                "name": "clearBrowserCookies",
-                "description": "Clears browser cookies."
-            },
-            {
-                "name": "setCacheDisabled",
-                "parameters": [
-                    { "name": "cacheDisabled", "type": "boolean", "description": "Cache disabled state." }
-                ],
-                "description": "Toggles ignoring cache for each request. If <code>true</code>, cache will not be used."
-            }
-        ],
-        "events": [
-            {
-                "name": "requestWillBeSent",
-                "description": "Fired when page is about to send HTTP request.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "request", "$ref": "Request", "description": "Request data." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "redirectResponse", "optional": true, "$ref": "Response", "description": "Redirect response data." }
-                ]
-            },
-            {
-                "name": "requestServedFromCache",
-                "description": "Fired if request ended up loading from cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." }
-                ]
-            },
-            {
-                "name": "responseReceived",
-                "description": "Fired when HTTP response is available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "type", "$ref": "Page.ResourceType", "description": "Resource type." },
-                    { "name": "response", "$ref": "Response", "description": "Response data." }
-                ]
-            },
-            {
-                "name": "dataReceived",
-                "description": "Fired when data chunk was received over the network.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "dataLength", "type": "integer", "description": "Data chunk length." },
-                    { "name": "encodedDataLength", "type": "integer", "description": "Actual bytes received (might be less than dataLength for compressed encodings)." }
-                ]
-            },
-            {
-                "name": "loadingFinished",
-                "description": "Fired when HTTP request has finished loading.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ]
-            },
-            {
-                "name": "loadingFailed",
-                "description": "Fired when HTTP request has failed to load.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "errorText", "type": "string", "description": "User friendly error message." },
-                    { "name": "canceled", "type": "boolean", "optional": true, "description": "True if loading was canceled." }
-                ]
-            },
-            {
-                "name": "requestServedFromMemoryCache",
-                "description": "Fired when HTTP request has been served from memory cache.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "frameId", "$ref": "FrameId", "description": "Frame identifier.", "hidden": true },
-                    { "name": "loaderId", "$ref": "LoaderId", "description": "Loader identifier." },
-                    { "name": "documentURL", "type": "string", "description": "URL of the document this request is loaded for." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "initiator", "$ref": "Initiator", "description": "Request initiator." },
-                    { "name": "resource", "$ref": "CachedResource", "description": "Cached resource data." }
-                ]
-            },
-            {
-                "name": "webSocketWillSendHandshakeRequest",
-                "description": "Fired when WebSocket is about to initiate handshake.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "request", "$ref": "WebSocketRequest", "description": "WebSocket request data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketHandshakeResponseReceived",
-                "description": "Fired when WebSocket handshake response becomes available.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "response", "$ref": "WebSocketResponse", "description": "WebSocket response data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketCreated",
-                "description": "Fired upon WebSocket creation.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "url", "type": "string", "description": "WebSocket request URL." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketClosed",
-                "description": "Fired when WebSocket is closed.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketFrameReceived",
-                "description": "Fired when WebSocket frame is received.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "response", "$ref": "WebSocketFrame", "description": "WebSocket response data." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketFrameError",
-                "description": "Fired when WebSocket frame error occurs.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "errorMessage", "type": "string", "description": "WebSocket frame error message." }
-                ],
-                "hidden": true
-            },
-            {
-                "name": "webSocketFrameSent",
-                "description": "Fired when WebSocket frame is sent.",
-                "parameters": [
-                    { "name": "requestId", "$ref": "RequestId", "description": "Request identifier." },
-                    { "name": "timestamp", "$ref": "Timestamp", "description": "Timestamp." },
-                    { "name": "response", "$ref": "WebSocketFrame", "description": "WebSocket response data." }
-                ],
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Database",
-        "hidden": true,
-        "types": [
-            {
-                "id": "DatabaseId",
-                "type": "string",
-                "description": "Unique identifier of Database object.",
-                "hidden": true
-            },
-            {
-                "id": "Database",
-                "type": "object",
-                "description": "Database object.",
-                "hidden": true,
-                "properties": [
-                    { "name": "id", "$ref": "DatabaseId", "description": "Database ID." },
-                    { "name": "domain", "type": "string", "description": "Database domain." },
-                    { "name": "name", "type": "string", "description": "Database name." },
-                    { "name": "version", "type": "string", "description": "Database version." }
-                ]
-            },
-            {
-                "id": "Error",
-                "type": "object",
-                "description": "Database error.",
-                "properties": [
-                    { "name": "message", "type": "string", "description": "Error message." },
-                    { "name": "code", "type": "integer", "description": "Error code." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables database tracking, database events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables database tracking, prevents database events from being sent to the client."
-            },
-            {
-                "name": "getDatabaseTableNames",
-                "parameters": [
-                    { "name": "databaseId", "$ref": "DatabaseId" }
-                ],
-                "returns": [
-                    { "name": "tableNames", "type": "array", "items": { "type": "string" } }
-                ]
-            },
-            {
-                "name": "executeSQL",
-                "async": true,
-                "parameters": [
-                    { "name": "databaseId", "$ref": "DatabaseId" },
-                    { "name": "query", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "columnNames", "type": "array", "optional": true, "items": { "type": "string" } },
-                    { "name": "values", "type": "array", "optional": true, "items": { "type": "any" }},
-                    { "name": "sqlError", "$ref": "Error", "optional": true }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addDatabase",
-                "parameters": [
-                    { "name": "database", "$ref": "Database" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "IndexedDB",
-        "hidden": true,
-        "types": [
-            {
-                "id": "DatabaseWithObjectStores",
-                "type": "object",
-                "description": "Database with an array of object stores.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Database name." },
-                    { "name": "version", "type": "string", "description": "Deprecated string database version." },
-                    { "name": "intVersion", "type": "integer", "description": "Integer database version." },
-                    { "name": "objectStores", "type": "array", "items": { "$ref": "ObjectStore" }, "description": "Object stores in this database." }
-                ]
-            },
-            {
-                "id": "ObjectStore",
-                "type": "object",
-                "description": "Object store.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Object store name." },
-                    { "name": "keyPath", "$ref": "KeyPath", "description": "Object store key path." },
-                    { "name": "autoIncrement", "type": "boolean", "description": "If true, object store has auto increment flag set." },
-                    { "name": "indexes", "type": "array", "items": { "$ref": "ObjectStoreIndex" }, "description": "Indexes in this object store." }
-                ]
-            },
-            {
-                "id": "ObjectStoreIndex",
-                "type": "object",
-                "description": "Object store index.",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Index name." },
-                    { "name": "keyPath", "$ref": "KeyPath", "description": "Index key path." },
-                    { "name": "unique", "type": "boolean", "description": "If true, index is unique." },
-                    { "name": "multiEntry", "type": "boolean", "description": "If true, index allows multiple entries for a key." }
-                ]
-            },
-            {
-                "id": "Key",
-                "type": "object",
-                "description": "Key.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["number", "string", "date", "array"], "description": "Key type." },
-                    { "name": "number", "type": "number", "optional": true, "description": "Number value." },
-                    { "name": "string", "type": "string", "optional": true, "description": "String value." },
-                    { "name": "date", "type": "number", "optional": true, "description": "Date value." },
-                    { "name": "array", "type": "array", "optional": true, "items": { "$ref": "Key" }, "description": "Array value." }
-                ]
-            },
-            {
-                "id": "KeyRange",
-                "type": "object",
-                "description": "Key range.",
-                "properties": [
-                    { "name": "lower", "$ref": "Key", "optional": true, "description": "Lower bound." },
-                    { "name": "upper", "$ref": "Key", "optional": true, "description": "Upper bound." },
-                    { "name": "lowerOpen", "type": "boolean", "description": "If true lower bound is open." },
-                    { "name": "upperOpen", "type": "boolean", "description": "If true upper bound is open." }
-                ]
-            },
-            {
-                "id": "DataEntry",
-                "type": "object",
-                "description": "Data entry.",
-                "properties": [
-                    { "name": "key", "$ref": "Runtime.RemoteObject", "description": "Key." },
-                    { "name": "primaryKey", "$ref": "Runtime.RemoteObject", "description": "Primary key." },
-                    { "name": "value", "$ref": "Runtime.RemoteObject", "description": "Value." }
-                ]
-            },
-            {
-                "id": "KeyPath",
-                "type": "object",
-                "description": "Key path.",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["null", "string", "array"], "description": "Key path type." },
-                    { "name": "string", "type": "string", "optional": true, "description": "String value." },
-                    { "name": "array", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Array value." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables events from backend."
-            },
-            {
-                "name": "disable",
-                "description": "Disables events from backend."
-            },
-            {
-                "name": "requestDatabaseNames",
-                "async": true,
-                "parameters": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." }
-                ],
-                "returns": [
-                    { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for origin." }
-                ],
-                "description": "Requests database names for given security origin."
-            },
-            {
-                "name": "requestDatabase",
-                "async": true,
-                "parameters": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
-                    { "name": "databaseName", "type": "string", "description": "Database name." }
-                ],
-                "returns": [
-                    { "name": "databaseWithObjectStores", "$ref": "DatabaseWithObjectStores", "description": "Database with an array of object stores." }
-                ],
-                "description": "Requests database with given name in given frame."
-            },
-            {
-                "name": "requestData",
-                "async": true,
-                "parameters": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
-                    { "name": "databaseName", "type": "string", "description": "Database name." },
-                    { "name": "objectStoreName", "type": "string", "description": "Object store name." },
-                    { "name": "indexName", "type": "string", "description": "Index name, empty string for object store data requests." },
-                    { "name": "skipCount", "type": "integer", "description": "Number of records to skip." },
-                    { "name": "pageSize", "type": "integer", "description": "Number of records to fetch." },
-                    { "name": "keyRange", "$ref": "KeyRange", "optional": true, "description": "Key range." }
-                ],
-                "returns": [
-                    { "name": "objectStoreDataEntries", "type": "array", "items": { "$ref": "DataEntry" }, "description": "Array of object store data entries." },
-                    { "name": "hasMore", "type": "boolean", "description": "If true, there are more entries to fetch in the given range." }
-                ],
-                "description": "Requests data from object store or index."
-            },
-            {
-                "name": "clearObjectStore",
-                "async": true,
-                "parameters": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
-                    { "name": "databaseName", "type": "string", "description": "Database name." },
-                    { "name": "objectStoreName", "type": "string", "description": "Object store name." }
-                ],
-                "returns": [
-                ],
-                "description": "Clears all entries from an object store."
-            }
-        ]
-    },
-    {
-        "domain": "DOMStorage",
-        "hidden": true,
-        "description": "Query and modify DOM storage.",
-        "types": [
-            {
-                "id": "StorageId",
-                "type": "object",
-                "description": "DOM Storage identifier.",
-                "hidden": true,
-                "properties": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin for the storage." },
-                    { "name": "isLocalStorage", "type": "boolean", "description": "Whether the storage is local storage (not session storage)." }
-                ]
-            },
-            {
-                "id": "Item",
-                "type": "array",
-                "description": "DOM Storage item.",
-                "hidden": true,
-                "items": { "type": "string" }
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables storage tracking, storage events will now be delivered to the client."
-            },
-            {
-                "name": "disable",
-                "description": "Disables storage tracking, prevents storage events from being sent to the client."
-            },
-            {
-                "name": "getDOMStorageItems",
-                "parameters": [
-                    { "name": "storageId", "$ref": "StorageId" }
-                ],
-                "returns": [
-                    { "name": "entries", "type": "array", "items": { "$ref": "Item" } }
-                ]
-            },
-            {
-                "name": "setDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "$ref": "StorageId" },
-                    { "name": "key", "type": "string" },
-                    { "name": "value", "type": "string" }
-                ]
-            },
-            {
-                "name": "removeDOMStorageItem",
-                "parameters": [
-                    { "name": "storageId", "$ref": "StorageId" },
-                    { "name": "key", "type": "string" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "domStorageItemsCleared",
-                "parameters": [
-                    { "name": "storageId",  "$ref": "StorageId" }
-                ]
-            },
-            {
-                "name": "domStorageItemRemoved",
-                "parameters": [
-                    { "name": "storageId",  "$ref": "StorageId" },
-                    { "name": "key", "type": "string" }
-                ]
-            },
-            {
-                "name": "domStorageItemAdded",
-                "parameters": [
-                    { "name": "storageId",  "$ref": "StorageId" },
-                    { "name": "key", "type": "string" },
-                    { "name": "newValue", "type": "string" }
-                ]
-            },
-            {
-                "name": "domStorageItemUpdated",
-                "parameters": [
-                    { "name": "storageId",  "$ref": "StorageId" },
-                    { "name": "key", "type": "string" },
-                    { "name": "oldValue", "type": "string" },
-                    { "name": "newValue", "type": "string" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "ApplicationCache",
-        "hidden": true,
-        "types": [
-            {
-                "id": "ApplicationCacheResource",
-                "type": "object",
-                "description": "Detailed application cache resource information.",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "Resource url." },
-                    { "name": "size", "type": "integer", "description": "Resource size." },
-                    { "name": "type", "type": "string", "description": "Resource type." }
-                ]
-            },
-            {
-                "id": "ApplicationCache",
-                "type": "object",
-                "description": "Detailed application cache information.",
-                "properties": [
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "size", "type": "number", "description": "Application cache size." },
-                    { "name": "creationTime", "type": "number", "description": "Application cache creation time." },
-                    { "name": "updateTime", "type": "number", "description": "Application cache update time." },
-                    { "name": "resources", "type": "array", "items": { "$ref": "ApplicationCacheResource" }, "description": "Application cache resources." }
-                ]
-            },
-            {
-                "id": "FrameWithManifest",
-                "type": "object",
-                "description": "Frame identifier - manifest URL pair.",
-                "properties": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame identifier." },
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "status", "type": "integer", "description": "Application cache status." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "getFramesWithManifests",
-                "returns": [
-                    { "name": "frameIds", "type": "array", "items": { "$ref": "FrameWithManifest" }, "description": "Array of frame identifiers with manifest urls for each frame containing a document associated with some application cache." }
-                ],
-                "description": "Returns array of frame identifiers with manifest urls for each frame containing a document associated with some application cache."
-            },
-            {
-                "name": "enable",
-                "description": "Enables application cache domain notifications."
-            },
-            {
-                "name": "getManifestForFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose manifest is retrieved." }
-                ],
-                "returns": [
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL for document in the given frame." }
-                ],
-                "description": "Returns manifest URL for document in the given frame."
-            },
-            {
-                "name": "getApplicationCacheForFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose application cache is retrieved." }
-                ],
-                "returns": [
-                    { "name": "applicationCache", "$ref": "ApplicationCache", "description": "Relevant application cache data for the document in given frame." }
-                ],
-                "description": "Returns relevant application cache data for the document in given frame."
-            }
-        ],
-        "events": [
-            {
-                "name": "applicationCacheStatusUpdated",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing document whose application cache updated status." },
-                    { "name": "manifestURL", "type": "string", "description": "Manifest URL." },
-                    { "name": "status", "type": "integer", "description": "Updated application cache status." }
-                ]
-            },
-            {
-                "name": "networkStateUpdated",
-                "parameters": [
-                    { "name": "isNowOnline", "type": "boolean" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "FileSystem",
-        "hidden": true,
-        "types": [
-            {
-                "id": "Entry",
-                "type": "object",
-                "properties": [
-                    { "name": "url", "type": "string", "description": "filesystem: URL for the entry." },
-                    { "name": "name", "type": "string", "description": "The name of the file or directory." },
-                    { "name": "isDirectory", "type": "boolean", "description": "True if the entry is a directory." },
-                    { "name": "mimeType", "type": "string", "optional": true, "description": "MIME type of the entry, available for a file only." },
-                    { "name": "resourceType", "$ref": "Page.ResourceType", "optional": true, "description": "ResourceType of the entry, available for a file only." },
-                    { "name": "isTextFile", "type": "boolean", "optional": true, "description": "True if the entry is a text file." }
-                ],
-                "description": "Represents a browser side file or directory."
-            },
-            {
-                "id": "Metadata",
-                "type": "object",
-                "properties": [
-                    { "name": "modificationTime", "type": "number", "description": "Modification time." },
-                    { "name": "size", "type": "number", "description": "File size. This field is always zero for directories." }
-                ],
-                "description": "Represents metadata of a file or entry."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables events from backend."
-            },
-            {
-                "name": "disable",
-                "description": "Disables events from backend."
-            },
-            {
-                "name": "requestFileSystemRoot",
-                "async": true,
-                "parameters": [
-                    { "name": "origin", "type": "string", "description": "Security origin of requesting FileSystem. One of frames in current page needs to have this security origin." },
-                    { "name": "type", "type": "string", "enum": ["temporary", "persistent"], "description": "FileSystem type of requesting FileSystem." }
-                ],
-                "returns": [
-                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
-                    { "name": "root", "$ref": "Entry", "optional": true, "description": "Contains root of the requested FileSystem if the command completed successfully." }
-                ],
-                "description": "Returns root directory of the FileSystem, if exists."
-            },
-            {
-                "name": "requestDirectoryContent",
-                "async": true,
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the directory that the frontend is requesting to read from." }
-                ],
-                "returns": [
-                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
-                    { "name": "entries", "type": "array", "items": { "$ref": "Entry" }, "optional": true, "description": "Contains all entries on directory if the command completed successfully." }
-                ],
-                "description": "Returns content of the directory."
-            },
-            {
-                "name": "requestMetadata",
-                "async": true,
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the entry that the frontend is requesting to get metadata from." }
-                ],
-                "returns": [
-                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
-                    { "name": "metadata", "$ref": "Metadata", "optional": true, "description": "Contains metadata of the entry if the command completed successfully." }
-                ],
-                "description": "Returns metadata of the entry."
-            },
-            {
-                "name": "requestFileContent",
-                "async": true,
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the file that the frontend is requesting to read from." },
-                    { "name": "readAsText", "type": "boolean", "description": "True if the content should be read as text, otherwise the result will be returned as base64 encoded text." },
-                    { "name": "start", "type": "integer", "optional": true, "description": "Specifies the start of range to read." },
-                    { "name": "end", "type": "integer", "optional": true, "description": "Specifies the end of range to read exclusively." },
-                    { "name": "charset", "type": "string", "optional": true, "description": "Overrides charset of the content when content is served as text." }
-                ],
-                "returns": [
-                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise, errorCode is set to FileError::ErrorCode value." },
-                    { "name": "content", "type": "string", "optional": true, "description": "Content of the file." },
-                    { "name": "charset", "type": "string", "optional": true, "description": "Charset of the content if it is served as text." }
-                ],
-                "description": "Returns content of the file. Result should be sliced into [start, end)."
-            },
-            {
-                "name": "deleteEntry",
-                "async": true,
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the entry to delete." }
-                ],
-                "returns": [
-                    { "name": "errorCode", "type": "integer", "description": "0, if no error. Otherwise errorCode is set to FileError::ErrorCode value." }
-                ],
-                "description": "Deletes specified entry. If the entry is a directory, the agent deletes children recursively."
-            }
-        ]
-    },
-    {
-        "domain": "DOM",
-        "description": "This domain exposes DOM read/write operations. Each DOM Node is represented with its mirror object that has an <code>id</code>. This <code>id</code> can be used to get additional information on the Node, resolve it into the JavaScript object wrapper, etc. It is important that client receives DOM events only for the nodes that are known to the client. Backend keeps track of the nodes that were sent to the client and never sends the same node twice. It is client's responsibility to collect information about the nodes that were sent to the client.<p>Note that <code>iframe</code> owner elements will return corresponding document elements as their child nodes.</p>",
-        "types": [
-            {
-                "id": "NodeId",
-                "type": "integer",
-                "description": "Unique DOM node identifier."
-            },
-            {
-                "id": "BackendNodeId",
-                "type": "integer",
-                "description": "Unique DOM node identifier used to reference a node that may not have been pushed to the front-end.",
-                "hidden": true
-            },
-            {
-                "id": "Node",
-                "type": "object",
-                "properties": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node identifier that is passed into the rest of the DOM messages as the <code>nodeId</code>. Backend will only push node with given <code>id</code> once. It is aware of all requested nodes and will only fire DOM events for nodes known to the client." },
-                    { "name": "nodeType", "type": "integer", "description": "<code>Node</code>'s nodeType." },
-                    { "name": "nodeName", "type": "string", "description": "<code>Node</code>'s nodeName." },
-                    { "name": "localName", "type": "string", "description": "<code>Node</code>'s localName." },
-                    { "name": "nodeValue", "type": "string", "description": "<code>Node</code>'s nodeValue." },
-                    { "name": "childNodeCount", "type": "integer", "optional": true, "description": "Child count for <code>Container</code> nodes." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Child nodes of this node when requested with children." },
-                    { "name": "attributes", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Attributes of the <code>Element</code> node in the form of flat array <code>[name1, value1, name2, value2]</code>." },
-                    { "name": "documentURL", "type": "string", "optional": true, "description": "Document URL that <code>Document</code> or <code>FrameOwner</code> node points to." },
-                    { "name": "baseURL", "type": "string", "optional": true, "description": "Base URL that <code>Document</code> or <code>FrameOwner</code> node uses for URL completion.", "hidden": true },
-                    { "name": "publicId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s publicId." },
-                    { "name": "systemId", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s systemId." },
-                    { "name": "internalSubset", "type": "string", "optional": true, "description": "<code>DocumentType</code>'s internalSubset." },
-                    { "name": "xmlVersion", "type": "string", "optional": true, "description": "<code>Document</code>'s XML version in case of XML documents." },
-                    { "name": "name", "type": "string", "optional": true, "description": "<code>Attr</code>'s name." },
-                    { "name": "value", "type": "string", "optional": true, "description": "<code>Attr</code>'s value." },
-                    { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Frame ID for frame owner elements.", "hidden": true },
-                    { "name": "contentDocument", "$ref": "Node", "optional": true, "description": "Content document for frame owner elements." },
-                    { "name": "shadowRoots", "type": "array", "optional": true, "items": { "$ref": "Node" }, "description": "Shadow root list for given element host.", "hidden": true },
-                    { "name": "templateContent", "$ref": "Node", "optional": true, "description": "Content document fragment for template elements", "hidden": true }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "EventListener",
-                "type": "object",
-                "hidden": true,
-                "properties": [
-                    { "name": "type", "type": "string", "description": "<code>EventListener</code>'s type." },
-                    { "name": "useCapture", "type": "boolean", "description": "<code>EventListener</code>'s useCapture." },
-                    { "name": "isAttribute", "type": "boolean", "description": "<code>EventListener</code>'s isAttribute." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Target <code>DOMNode</code> id." },
-                    { "name": "handlerBody", "type": "string", "description": "Event handler function body." },
-                    { "name": "location", "$ref": "Debugger.Location", "optional": true, "description": "Handler code location." },
-                    { "name": "sourceName", "type": "string", "optional": true, "description": "Source script URL." },
-                    { "name": "handler", "$ref": "Runtime.RemoteObject", "optional": true, "description": "Event handler function value." }
-                ],
-                "description": "DOM interaction is implemented in terms of mirror objects that represent the actual DOM nodes. DOMNode is a base node mirror type."
-            },
-            {
-                "id": "RGBA",
-                "type": "object",
-                "properties": [
-                    { "name": "r", "type": "integer", "description": "The red component, in the [0-255] range." },
-                    { "name": "g", "type": "integer", "description": "The green component, in the [0-255] range." },
-                    { "name": "b", "type": "integer", "description": "The blue component, in the [0-255] range." },
-                    { "name": "a", "type": "number", "optional": true, "description": "The alpha component, in the [0-1] range (default: 1)." }
-                ],
-                "description": "A structure holding an RGBA color."
-            },
-            {
-                "id": "Quad",
-                "type": "array",
-                "items": { "type": "number" },
-                "minItems": 8,
-                "maxItems": 8,
-                "description": "An array of quad vertices, x immediately followed by y for each point, points clock-wise."
-            },
-            {
-                "id": "HighlightConfig",
-                "type": "object",
-                "properties": [
-                    { "name": "showInfo", "type": "boolean", "optional": true, "description": "Whether the node info tooltip should be shown (default: false)." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "paddingColor", "$ref": "RGBA", "optional": true, "description": "The padding highlight fill color (default: transparent)." },
-                    { "name": "borderColor", "$ref": "RGBA", "optional": true, "description": "The border highlight fill color (default: transparent)." },
-                    { "name": "marginColor", "$ref": "RGBA", "optional": true, "description": "The margin highlight fill color (default: transparent)." }
-                ],
-                "description": "Configuration data for the highlighting of page elements."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getDocument",
-                "returns": [
-                    { "name": "root", "$ref": "Node", "description": "Resulting node." }
-                ],
-                "description": "Returns the root DOM node to the caller."
-            },
-            {
-                "name": "requestChildNodes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get children for." },
-                    { "name": "depth", "type": "integer", "optional": true, "description": "The maximum depth at which children should be retrieved, defaults to 1. Use -1 for the entire subtree or provide an integer larger than 0.", "hidden": true }
-                ],
-                "description": "Requests that children of the node with given id are returned to the caller in form of <code>setChildNodes</code> events where not only immediate children are retrieved, but all children down to the specified depth."
-            },
-            {
-                "name": "querySelector",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelector</code> on a given node."
-            },
-            {
-                "name": "querySelectorAll",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to query upon." },
-                    { "name": "selector", "type": "string", "description": "Selector string." }
-                ],
-                "returns": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Query selector result." }
-                ],
-                "description": "Executes <code>querySelectorAll</code> on a given node."
-            },
-            {
-                "name": "setNodeName",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set name for." },
-                    { "name": "name", "type": "string", "description": "New node's name." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New node's id." }
-                ],
-                "description": "Sets node name for a node with given id."
-            },
-            {
-                "name": "setNodeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set value for." },
-                    { "name": "value", "type": "string", "description": "New node's value." }
-                ],
-                "description": "Sets node value for a node with given id."
-            },
-            {
-                "name": "removeNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to remove." }
-                ],
-                "description": "Removes node with given id."
-            },
-            {
-                "name": "setAttributeValue",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attribute for." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Sets attribute for an element with given id."
-            },
-            {
-                "name": "setAttributesAsText",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to set attributes for." },
-                    { "name": "text", "type": "string", "description": "Text with a number of attributes. Will parse this text using HTML parser." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Attribute name to replace with new attributes derived from text in case text parsed successfully." }
-                ],
-                "description": "Sets attributes on element with given id. This method is useful when user edits some existing attribute value and types in several attribute name/value pairs."
-            },
-            {
-                "name": "removeAttribute",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the element to remove attribute from." },
-                    { "name": "name", "type": "string", "description": "Name of the attribute to remove." }
-                ],
-                "description": "Removes attribute with given name from an element with given id."
-            },
-            {
-                "name": "getEventListenersForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get listeners for." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name for handler value. Handler value is not returned without this parameter specified." }
-                ],
-                "returns": [
-                    { "name": "listeners", "type": "array", "items": { "$ref": "EventListener"}, "description": "Array of relevant listeners." }
-                ],
-                "description": "Returns event listeners relevant to the node.",
-                "hidden": true
-            },
-            {
-                "name": "getOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to get markup for." }
-                ],
-                "returns": [
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup." }
-                ],
-                "description": "Returns node's HTML markup."
-            },
-            {
-                "name": "setOuterHTML",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to set markup for." },
-                    { "name": "outerHTML", "type": "string", "description": "Outer HTML markup to set." }
-                ],
-                "description": "Sets node HTML markup, returns new node id."
-            },
-            {
-                "name": "performSearch",
-                "parameters": [
-                    { "name": "query", "type": "string", "description": "Plain text or query selector or XPath search query." }
-                ],
-                "returns": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
-                    { "name": "resultCount", "type": "integer", "description": "Number of search results." }
-                ],
-                "description": "Searches for a given string in the DOM tree. Use <code>getSearchResults</code> to access search results or <code>cancelSearch</code> to end this search session.",
-                "hidden": true
-            },
-            {
-                "name": "getSearchResults",
-                "parameters": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." },
-                    { "name": "fromIndex", "type": "integer", "description": "Start index of the search result to be returned." },
-                    { "name": "toIndex", "type": "integer", "description": "End index of the search result to be returned." }
-                ],
-                "returns": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the search result nodes." }
-                ],
-                "description": "Returns search results from given <code>fromIndex</code> to given <code>toIndex</code> from the sarch with the given identifier.",
-                "hidden": true
-            },
-            {
-                "name": "discardSearchResults",
-                "parameters": [
-                    { "name": "searchId", "type": "string", "description": "Unique search session identifier." }
-                ],
-                "description": "Discards search results from the session with the given id. <code>getSearchResults</code> should no longer be called for that search.",
-                "hidden": true
-            },
-            {
-                "name": "requestNode",
-                "parameters": [
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "JavaScript object id to convert into node." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Node id for given object." }
-                ],
-                "description": "Requests that the node is sent to the caller given the JavaScript node object reference. All nodes that form the path from the node to the root are also sent to the client as a series of <code>setChildNodes</code> notifications."
-            },
-            {
-                "name": "setInspectModeEnabled",
-                "hidden": true,
-                "parameters": [
-                    { "name": "enabled", "type": "boolean", "description": "True to enable inspection mode, false to disable it." },
-                    { "name": "highlightConfig", "$ref": "HighlightConfig", "optional": true, "description": "A descriptor for the highlight appearance of hovered-over nodes. May be omitted if <code>enabled == false</code>." }
-                ],
-                "description": "Enters the 'inspect' mode. In this mode, elements that user is hovering over are highlighted. Backend then generates 'inspect' command upon element selection."
-            },
-            {
-                "name": "highlightRect",
-                "parameters": [
-                    { "name": "x", "type": "integer", "description": "X coordinate" },
-                    { "name": "y", "type": "integer", "description": "Y coordinate" },
-                    { "name": "width", "type": "integer", "description": "Rectangle width" },
-                    { "name": "height", "type": "integer", "description": "Rectangle height" },
-                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport."
-            },
-            {
-                "name": "highlightQuad",
-                "parameters": [
-                    { "name": "quad", "$ref": "Quad", "description": "Quad to highlight" },
-                    { "name": "color", "$ref": "RGBA", "optional": true, "description": "The highlight fill color (default: transparent)." },
-                    { "name": "outlineColor", "$ref": "RGBA", "optional": true, "description": "The highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights given quad. Coordinates are absolute with respect to the main frame viewport."
-            },
-            {
-                "name": "highlightNode",
-                "parameters": [
-                    { "name": "highlightConfig", "$ref": "HighlightConfig",  "description": "A descriptor for the highlight appearance." },
-                    { "name": "nodeId", "$ref": "NodeId", "optional": true, "description": "Identifier of the node to highlight." },
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "optional": true, "description": "JavaScript object id of the node to be highlighted.", "hidden": true }
-                ],
-                "description": "Highlights DOM node with given id or with the given JavaScript object wrapper. Either nodeId or objectId must be specified."
-            },
-            {
-                "name": "hideHighlight",
-                "description": "Hides DOM node highlight."
-            },
-            {
-                "name": "highlightFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame to highlight." },
-                    { "name": "contentColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight fill color (default: transparent)." },
-                    { "name": "contentOutlineColor", "$ref": "RGBA", "optional": true, "description": "The content box highlight outline color (default: transparent)." }
-                ],
-                "description": "Highlights owner element of the frame with given id.",
-                "hidden": true
-            },
-            {
-                "name": "pushNodeByPathToFrontend",
-                "parameters": [
-                    { "name": "path", "type": "string", "description": "Path to node in the proprietary format." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node for given path." }
-                ],
-                "description": "Requests that the node is sent to the caller given its path. // FIXME, use XPath",
-                "hidden": true
-            },
-            {
-                "name": "pushNodeByBackendIdToFrontend",
-                "parameters": [
-                    { "name": "backendNodeId", "$ref": "BackendNodeId", "description": "The backend node id of the node." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "The pushed node's id." }
-                ],
-                "description": "Requests that the node is sent to the caller given its backend node id.",
-                "hidden": true
-            },
-            {
-                "name": "releaseBackendNodeIds",
-                "parameters": [
-                    { "name": "nodeGroup", "type": "string", "description": "The backend node ids group name." }
-                ],
-                "description": "Requests that group of <code>BackendNodeIds</code> is released.",
-                "hidden": true
-            },
-            {
-                "name": "resolveNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to resolve." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
-                ],
-                "returns": [
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "JavaScript object wrapper for given node." }
-                ],
-                "description": "Resolves JavaScript node object for given node id."
-            },
-            {
-                "name": "getAttributes",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to retrieve attibutes for." }
-                ],
-                "returns": [
-                    { "name": "attributes", "type": "array", "items": { "type": "string" }, "description": "An interleaved array of node attribute names and values." }
-                ],
-                "description": "Returns attributes for the specified node."
-            },
-            {
-                "name": "moveTo",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to drop." },
-                    { "name": "targetNodeId", "$ref": "NodeId", "description": "Id of the element to drop into." },
-                    { "name": "insertBeforeNodeId", "$ref": "NodeId", "optional": true, "description": "Drop node before given one." }
-                ],
-                "returns": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "New id of the moved node." }
-                ],
-                "description": "Moves node into the new container, places it before the given anchor."
-            },
-            {
-                "name": "undo",
-                "description": "Undoes the last performed action.",
-                "hidden": true
-            },
-            {
-                "name": "redo",
-                "description": "Re-does the last undone action.",
-                "hidden": true
-            },
-            {
-                "name": "markUndoableState",
-                "description": "Marks last undoable state.",
-                "hidden": true
-            },
-            {
-                "name": "focus",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node to focus." }
-                ],
-                "description": "Focuses the given element.",
-                "hidden": true
-            },
-            {
-                "name": "setFileInputFiles",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the file input node to set files for." },
-                    { "name": "files", "type": "array", "items": { "type": "string" }, "description": "Array of file paths to set." }
-                ],
-                "description": "Sets files for the given file input element.",
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "documentUpdated",
-                "description": "Fired when <code>Document</code> has been totally updated. Node ids are no longer valid."
-            },
-            {
-                "name": "setChildNodes",
-                "parameters": [
-                    { "name": "parentId", "$ref": "NodeId", "description": "Parent node id to populate with children." },
-                    { "name": "nodes", "type": "array", "items": { "$ref": "Node"}, "description": "Child nodes array." }
-                ],
-                "description": "Fired when backend wants to provide client with the missing DOM structure. This happens upon most of the calls requesting node ids."
-            },
-            {
-                "name": "attributeModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "Attribute name." },
-                    { "name": "value", "type": "string", "description": "Attribute value." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is modified."
-            },
-            {
-                "name": "attributeRemoved",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "name", "type": "string", "description": "A ttribute name." }
-                ],
-                "description": "Fired when <code>Element</code>'s attribute is removed."
-            },
-            {
-                "name": "inlineStyleInvalidated",
-                "parameters": [
-                    { "name": "nodeIds", "type": "array", "items": { "$ref": "NodeId" }, "description": "Ids of the nodes for which the inline styles have been invalidated." }
-                ],
-                "description": "Fired when <code>Element</code>'s inline style is modified via a CSS property modification.",
-                "hidden": true
-            },
-            {
-                "name": "characterDataModified",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "characterData", "type": "string", "description": "New text value." }
-                ],
-                "description": "Mirrors <code>DOMCharacterDataModified</code> event."
-            },
-            {
-                "name": "childNodeCountUpdated",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "childNodeCount", "type": "integer", "description": "New node count." }
-                ],
-                "description": "Fired when <code>Container</code>'s child node count has changed."
-            },
-            {
-                "name": "childNodeInserted",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Id of the node that has changed." },
-                    { "name": "previousNodeId", "$ref": "NodeId", "description": "If of the previous siblint." },
-                    { "name": "node", "$ref": "Node", "description": "Inserted node data." }
-                ],
-                "description": "Mirrors <code>DOMNodeInserted</code> event."
-            },
-            {
-                "name": "childNodeRemoved",
-                "parameters": [
-                    { "name": "parentNodeId", "$ref": "NodeId", "description": "Parent id." },
-                    { "name": "nodeId", "$ref": "NodeId", "description": "Id of the node that has been removed." }
-                ],
-                "description": "Mirrors <code>DOMNodeRemoved</code> event."
-            },
-            {
-                "name": "shadowRootPushed",
-                "parameters": [
-                    { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
-                    { "name": "root", "$ref": "Node", "description": "Shadow root." }
-                ],
-                "description": "Called when shadow root is pushed into the element.",
-                "hidden": true
-            },
-            {
-                "name": "shadowRootPopped",
-                "parameters": [
-                    { "name": "hostId", "$ref": "NodeId", "description": "Host element id." },
-                    { "name": "rootId", "$ref": "NodeId", "description": "Shadow root id." }
-                ],
-                "description": "Called when shadow root is popped from the element.",
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "CSS",
-        "hidden": true,
-        "description": "This domain exposes CSS read/write operations. All CSS objects, like stylesheets, rules, and styles, have an associated <code>id</code> used in subsequent operations on the related object. Each object type has a specific <code>id</code> structure, and those are not interchangeable between objects of different kinds. CSS objects can be loaded using the <code>get*ForNode()</code> calls (which accept a DOM node id). Alternatively, a client can discover all the existing stylesheets with the <code>getAllStyleSheets()</code> method and subsequently load the required stylesheet contents using the <code>getStyleSheet[Text]()</code> methods.",
-        "types": [
-            {
-                "id": "StyleSheetId",
-                "type": "string"
-            },
-            {
-                "id": "CSSStyleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The style ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS style in a unique way."
-            },
-            {
-                "id": "StyleSheetOrigin",
-                "type": "string",
-                "enum": ["user", "user-agent", "inspector", "regular"],
-                "description": "Stylesheet type: \"user\" for user stylesheets, \"user-agent\" for user-agent stylesheets, \"inspector\" for stylesheets created by the inspector (i.e. those holding the \"via inspector\" rules), \"regular\" for regular stylesheets."
-            },
-            {
-                "id": "CSSRuleId",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "Enclosing stylesheet identifier." },
-                    { "name": "ordinal", "type": "integer", "description": "The rule ordinal within the stylesheet." }
-                ],
-                "description": "This object identifies a CSS rule in a unique way."
-            },
-            {
-                "id": "PseudoIdMatches",
-                "type": "object",
-                "properties": [
-                    { "name": "pseudoId", "type": "integer", "description": "Pseudo style identifier (see <code>enum PseudoId</code> in <code>RenderStyleConstants.h</code>)."},
-                    { "name": "matches", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules applicable to the pseudo style."}
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "InheritedStyleEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "The ancestor node's inline style, if any, in the style inheritance chain." },
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "description": "Matches of CSS rules matching the ancestor node in the style inheritance chain." }
-                ],
-                "description": "CSS rule collection for a single pseudo style."
-            },
-            {
-                "id": "RuleMatch",
-                "type": "object",
-                "properties": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "CSS rule in the match." },
-                    { "name": "matchingSelectors", "type": "array", "items": { "type": "integer" }, "description": "Matching selector indices in the rule's selectorList selectors (0-based)." }
-                ],
-                "description": "Match data for a CSS rule."
-            },
-            {
-                "id": "SelectorList",
-                "type": "object",
-                "properties": [
-                    { "name": "selectors", "type": "array", "items": { "type": "string" }, "description": "Selectors in the list." },
-                    { "name": "text", "type": "string", "description": "Rule selector text." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Rule selector range in the underlying resource (if available)." }
-                ],
-                "description": "Selector list data."
-            },
-            {
-                "id": "CSSStyleAttribute",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "DOM attribute name (e.g. \"width\")."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "CSS style generated by the respective DOM attribute."}
-                ],
-                "description": "CSS style information for a DOM style attribute."
-            },
-            {
-                "id": "CSSStyleSheetHeader",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The stylesheet identifier."},
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Owner frame identifier."},
-                    { "name": "sourceURL", "type": "string", "description": "Stylesheet resource URL."},
-                    { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Stylesheet origin."},
-                    { "name": "title", "type": "string", "description": "Stylesheet title."},
-                    { "name": "disabled", "type": "boolean", "description": "Denotes whether the stylesheet is disabled."}
-                ],
-                "description": "CSS stylesheet metainformation."
-            },
-            {
-                "id": "CSSStyleSheetBody",
-                "type": "object",
-                "properties": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId", "description": "The stylesheet identifier."},
-                    { "name": "rules", "type": "array", "items": { "$ref": "CSSRule" }, "description": "Stylesheet resource URL."},
-                    { "name": "text", "type": "string", "optional": true, "description": "Stylesheet resource contents (if available)."}
-                ],
-                "description": "CSS stylesheet contents."
-            },
-            {
-                "id": "CSSRule",
-                "type": "object",
-                "properties": [
-                    { "name": "ruleId", "$ref": "CSSRuleId", "optional": true, "description": "The CSS rule identifier (absent for user agent stylesheet and user-specified stylesheet rules)."},
-                    { "name": "selectorList", "$ref": "SelectorList", "description": "Rule selector data." },
-                    { "name": "sourceURL", "type": "string", "optional": true, "description": "Parent stylesheet resource URL (for regular rules)."},
-                    { "name": "sourceLine", "type": "integer", "description": "Line ordinal of the rule selector start character in the resource."},
-                    { "name": "origin", "$ref": "StyleSheetOrigin", "description": "Parent stylesheet's origin."},
-                    { "name": "style", "$ref": "CSSStyle", "description": "Associated style declaration." },
-                    { "name": "media", "type": "array", "items": { "$ref": "CSSMedia" }, "optional": true, "description": "Media list array (for rules involving media queries). The array enumerates media queries starting with the innermost one, going outwards." }
-                ],
-                "description": "CSS rule representation."
-            },
-            {
-                "id": "SourceRange",
-                "type": "object",
-                "properties": [
-                    { "name": "startLine", "type": "integer", "description": "Start line of range." },
-                    { "name": "startColumn", "type": "integer", "description": "Start column of range (inclusive)." },
-                    { "name": "endLine", "type": "integer", "description": "End line of range" },
-                    { "name": "endColumn", "type": "integer", "description": "End column of range (exclusive)." }
-                ],
-                "description": "Text range within a resource."
-            },
-            {
-                "id": "ShorthandEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Shorthand name." },
-                    { "name": "value", "type": "string", "description": "Shorthand value." }
-                ]
-            },
-            {
-                "id": "CSSPropertyInfo",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Property name." },
-                    { "name": "longhands", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Longhand property names." }
-                ]
-            },
-            {
-                "id": "CSSComputedStyleProperty",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "Computed style property name." },
-                    { "name": "value", "type": "string", "description": "Computed style property value." }
-                ]
-            },
-            {
-                "id": "CSSStyle",
-                "type": "object",
-                "properties": [
-                    { "name": "styleId", "$ref": "CSSStyleId", "optional": true, "description": "The CSS style identifier (absent for attribute styles)." },
-                    { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSProperty" }, "description": "CSS properties in the style." },
-                    { "name": "shorthandEntries", "type": "array", "items": { "$ref": "ShorthandEntry" }, "description": "Computed values for all shorthands found in the style." },
-                    { "name": "cssText", "type": "string", "optional": true, "description": "Style declaration text (if available)." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "Style declaration range in the enclosing stylesheet (if available)." },
-                    { "name": "width", "type": "string", "optional": true, "description": "The effective \"width\" property value from this style." },
-                    { "name": "height", "type": "string", "optional": true, "description": "The effective \"height\" property value from this style." }
-                ],
-                "description": "CSS style representation."
-            },
-            {
-                "id": "CSSProperty",
-                "type": "object",
-                "properties": [
-                    { "name": "name", "type": "string", "description": "The property name." },
-                    { "name": "value", "type": "string", "description": "The property value." },
-                    { "name": "priority", "type": "string", "optional": true, "description": "The property priority (implies \"\" if absent)." },
-                    { "name": "implicit", "type": "boolean", "optional": true, "description": "Whether the property is implicit (implies <code>false</code> if absent)." },
-                    { "name": "text", "type": "string", "optional": true, "description": "The full property text as specified in the style." },
-                    { "name": "parsedOk", "type": "boolean", "optional": true, "description": "Whether the property is understood by the browser (implies <code>true</code> if absent)." },
-                    { "name": "status", "type": "string", "enum": ["active", "inactive", "disabled", "style"], "optional": true, "description": "The property status: \"active\" if the property is effective in the style, \"inactive\" if the property is overridden by a same-named property in this style later on, \"disabled\" if the property is disabled by the user, \"style\" (implied if absent) if the property is reported by the browser rather than by the CSS source parser." },
-                    { "name": "range", "$ref": "SourceRange", "optional": true, "description": "The entire property range in the enclosing style declaration (if available)." }
-                ],
-                "description": "CSS style effective visual dimensions and source offsets."
-            },
-            {
-                "id": "CSSMedia",
-                "type": "object",
-                "properties": [
-                    { "name": "text", "type": "string", "description": "Media query text." },
-                    { "name": "source", "type": "string", "enum": ["mediaRule", "importRule", "linkedSheet", "inlineSheet"], "description": "Source of the media query: \"mediaRule\" if specified by a @media rule, \"importRule\" if specified by an @import rule, \"linkedSheet\" if specified by a \"media\" attribute in a linked stylesheet's LINK tag, \"inlineSheet\" if specified by a \"media\" attribute in an inline stylesheet's STYLE tag." },
-                    { "name": "sourceURL", "type": "string", "optional": true, "description": "URL of the document containing the media query description." },
-                    { "name": "sourceLine", "type": "integer", "optional": true, "description": "Line in the document containing the media query (not defined for the \"stylesheet\" source)." }
-                ],
-                "description": "CSS media query descriptor."
-            },
-            {
-                "id": "SelectorProfileEntry",
-                "type": "object",
-                "properties": [
-                    { "name": "selector", "type": "string", "description": "CSS selector of the corresponding rule." },
-                    { "name": "url", "type": "string", "description": "URL of the resource containing the corresponding rule." },
-                    { "name": "lineNumber", "type": "integer", "description": "Selector line number in the resource for the corresponding rule." },
-                    { "name": "time", "type": "number", "description": "Total time this rule handling contributed to the browser running time during profiling (in milliseconds.)" },
-                    { "name": "hitCount", "type": "integer", "description": "Number of times this rule was considered a candidate for matching against DOM elements." },
-                    { "name": "matchCount", "type": "integer", "description": "Number of times this rule actually matched a DOM element." }
-                ],
-                "description": "CSS selector profile entry."
-            },
-            {
-                "id": "SelectorProfile",
-                "type": "object",
-                "properties": [
-                    { "name": "totalTime", "type": "number", "description": "Total processing time for all selectors in the profile (in milliseconds.)" },
-                    { "name": "data", "type": "array", "items": { "$ref": "SelectorProfileEntry" }, "description": "CSS selector profile entries." }
-                ]
-            },
-            {
-                "id": "Region",
-                "type": "object",
-                "properties": [
-                    { "name": "regionOverset", "type": "string", "enum": ["overset", "fit", "empty"], "description": "The \"overset\" attribute of a Named Flow." },
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "The corresponding DOM node id." }
-                ],
-                "description": "This object represents a region that flows from a Named Flow.",
-                "hidden": true
-            },
-            {
-                "id": "NamedFlow",
-                "type": "object",
-                "properties": [
-                    { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id." },
-                    { "name": "name", "type": "string", "description": "Named Flow identifier." },
-                    { "name": "overset", "type": "boolean", "description": "The \"overset\" attribute of a Named Flow." },
-                    { "name": "content", "type": "array", "items": { "$ref": "DOM.NodeId" }, "description": "An array of nodes that flow into the Named Flow." },
-                    { "name": "regions", "type": "array", "items": { "$ref": "Region" }, "description": "An array of regions associated with the Named Flow." }
-                ],
-                "description": "This object represents a Named Flow.",
-                "hidden": true
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables the CSS agent for the given page. Clients should not assume that the CSS agent has been enabled until the result of this command is received."
-            },
-            {
-                "name": "disable",
-                "description": "Disables the CSS agent for the given page."
-            },
-            {
-                "name": "getMatchedStylesForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" },
-                    { "name": "includePseudo", "type": "boolean", "optional": true, "description": "Whether to include pseudo styles (default: true)." },
-                    { "name": "includeInherited", "type": "boolean", "optional": true, "description": "Whether to include inherited styles (default: true)." }
-                ],
-                "returns": [
-                    { "name": "matchedCSSRules", "type": "array", "items": { "$ref": "RuleMatch" }, "optional": true, "description": "CSS rules matching this node, from all applicable stylesheets." },
-                    { "name": "pseudoElements", "type": "array", "items": { "$ref": "PseudoIdMatches" }, "optional": true, "description": "Pseudo style matches for this node." },
-                    { "name": "inherited", "type": "array", "items": { "$ref": "InheritedStyleEntry" }, "optional": true, "description": "A chain of inherited styles (from the immediate node parent up to the DOM tree root)." }
-                ],
-                "description": "Returns requested styles for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getInlineStylesForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" }
-                ],
-                "returns": [
-                    { "name": "inlineStyle", "$ref": "CSSStyle", "optional": true, "description": "Inline style for the specified DOM node." },
-                    { "name": "attributesStyle", "$ref": "CSSStyle", "optional": true, "description": "Attribute-defined element style (e.g. resulting from \"width=20 height=100%\")."}
-                ],
-                "description": "Returns the styles defined inline (explicitly in the \"style\" attribute and implicitly, using DOM attributes) for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getComputedStyleForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId" }
-                ],
-                "returns": [
-                    { "name": "computedStyle", "type": "array", "items": { "$ref": "CSSComputedStyleProperty" }, "description": "Computed style for the specified DOM node." }
-                ],
-                "description": "Returns the computed style for a DOM node identified by <code>nodeId</code>."
-            },
-            {
-                "name": "getAllStyleSheets",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "CSSStyleSheetHeader" }, "description": "Descriptor entries for all available stylesheets." }
-                ],
-                "description": "Returns metainfo entries for all known stylesheets."
-            },
-            {
-                "name": "getStyleSheet",
-                "parameters": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId" }
-                ],
-                "returns": [
-                    { "name": "styleSheet", "$ref": "CSSStyleSheetBody", "description": "Stylesheet contents for the specified <code>styleSheetId</code>." }
-                ],
-                "description": "Returns stylesheet data for the specified <code>styleSheetId</code>."
-            },
-            {
-                "name": "getStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId" }
-                ],
-                "returns": [
-                    { "name": "text", "type": "string", "description": "The stylesheet text." }
-                ],
-                "description": "Returns the current textual content and the URL for a stylesheet."
-            },
-            {
-                "name": "setStyleSheetText",
-                "parameters": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId" },
-                    { "name": "text", "type": "string" }
-                ],
-                "description": "Sets the new stylesheet text, thereby invalidating all existing <code>CSSStyleId</code>'s and <code>CSSRuleId</code>'s contained by this stylesheet."
-            },
-            {
-                "name": "setPropertyText",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "text", "type": "string" },
-                    { "name": "overwrite", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property text modification." }
-                ],
-                "description": "Sets the new <code>text</code> for a property in the respective style, at offset <code>propertyIndex</code>. If <code>overwrite</code> is <code>true</code>, a property at the given offset is overwritten, otherwise inserted. <code>text</code> entirely replaces the property <code>name: value</code>."
-            },
-            {
-                "name": "toggleProperty",
-                "parameters": [
-                    { "name": "styleId", "$ref": "CSSStyleId" },
-                    { "name": "propertyIndex", "type": "integer" },
-                    { "name": "disable", "type": "boolean" }
-                ],
-                "returns": [
-                    { "name": "style", "$ref": "CSSStyle", "description": "The resulting style after the property toggling." }
-                ],
-                "description": "Toggles the property in the respective style, at offset <code>propertyIndex</code>. The <code>disable</code> parameter denotes whether the property should be disabled (i.e. removed from the style declaration). If <code>disable == false</code>, the property gets put back into its original place in the style declaration."
-            },
-            {
-                "name": "setRuleSelector",
-                "parameters": [
-                    { "name": "ruleId", "$ref": "CSSRuleId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The resulting rule after the selector modification." }
-                ],
-                "description": "Modifies the rule selector."
-            },
-            {
-                "name": "addRule",
-                "parameters": [
-                    { "name": "contextNodeId", "$ref": "DOM.NodeId" },
-                    { "name": "selector", "type": "string" }
-                ],
-                "returns": [
-                    { "name": "rule", "$ref": "CSSRule", "description": "The newly created rule." }
-                ],
-                "description": "Creates a new empty rule with the given <code>selector</code> in a special \"inspector\" stylesheet in the owner document of the context node."
-            },
-            {
-                "name": "getSupportedCSSProperties",
-                "returns": [
-                    { "name": "cssProperties", "type": "array", "items": { "$ref": "CSSPropertyInfo" }, "description": "Supported property metainfo." }
-                ],
-                "description": "Returns all supported CSS property names."
-            },
-            {
-                "name": "forcePseudoState",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "The element id for which to force the pseudo state." },
-                    { "name": "forcedPseudoClasses", "type": "array", "items": { "type": "string", "enum": ["active", "focus", "hover", "visited"] }, "description": "Element pseudo classes to force when computing the element's style." }
-                ],
-                "description": "Ensures that the given node will have specified pseudo-classes whenever its style is computed by the browser."
-            },
-            {
-                "name": "startSelectorProfiler"
-            },
-            {
-                "name": "stopSelectorProfiler",
-                "returns": [
-                    { "name": "profile", "$ref": "SelectorProfile" }
-                ]
-            },
-            {
-                "name": "getNamedFlowCollection",
-                "parameters": [
-                    { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id for which to get the Named Flow Collection." }
-                ],
-                "returns": [
-                    { "name": "namedFlows", "type": "array", "items": { "$ref": "NamedFlow" }, "description": "An array containing the Named Flows in the document." }
-                ],
-                "description": "Returns the Named Flows from the document.",
-                "hidden": true
-            }
-        ],
-        "events": [
-            {
-                "name": "mediaQueryResultChanged",
-                "description": "Fires whenever a MediaQuery result changes (for example, after a browser window has been resized.) The current implementation considers only viewport-dependent media features."
-            },
-            {
-                "name": "styleSheetChanged",
-                "parameters": [
-                    { "name": "styleSheetId", "$ref": "StyleSheetId" }
-                ],
-                "description": "Fired whenever a stylesheet is changed as a result of the client operation."
-            },
-            {
-                "name": "namedFlowCreated",
-                "parameters": [
-                    { "name": "namedFlow", "$ref": "NamedFlow", "description": "The new Named Flow." }
-                ],
-                "description": "Fires when a Named Flow is created.",
-                "hidden": true
-            },
-            {
-                "name": "namedFlowRemoved",
-                "parameters": [
-                    { "name": "documentNodeId", "$ref": "DOM.NodeId", "description": "The document node id." },
-                    { "name": "flowName", "type": "string", "description": "Identifier of the removed Named Flow." }
-                ],
-                "description": "Fires when a Named Flow is removed: has no associated content nodes and regions.",
-                "hidden": true
-            },
-            {
-                "name": "regionLayoutUpdated",
-                "parameters": [
-                    { "name": "namedFlow", "$ref": "NamedFlow", "description": "The Named Flow whose layout may have changed." }
-                ],
-                "description": "Fires when a Named Flow's layout may have changed.",
-                "hidden": true
-            }
-        ]
-    },
-    {
-        "domain": "Timeline",
-        "description": "Timeline provides its clients with instrumentation records that are generated during the page runtime. Timeline instrumentation can be started and stopped using corresponding commands. While timeline is started, it is generating timeline event records.",
-        "types": [
-            {
-                "id": "DOMCounters",
-                "type": "object",
-                "properties": [
-                    { "name": "documents", "type": "integer" },
-                    { "name": "nodes", "type": "integer" },
-                    { "name": "jsEventListeners", "type": "integer" }
-                ],
-                "description": "Current values of DOM counters.",
-                "hidden": true
-            },
-            {
-                "id": "TimelineEvent",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "description": "Event type." },
-                    { "name": "thread", "type": "string", "optional": true, "description": "If present, identifies the thread that produced the event.", "hidden": true },
-                    { "name": "data", "type": "object", "description": "Event data." },
-                    { "name": "children", "type": "array", "optional": true, "items": { "$ref": "TimelineEvent" }, "description": "Nested records." },
-                    { "name": "counters", "$ref": "DOMCounters", "optional": true, "hidden": true, "description": "Current values of DOM counters." },
-                    { "name": "usedHeapSize", "type": "integer", "optional": true, "hidden": true, "description": "Current size of JS heap." },
-                    { "name": "nativeHeapStatistics", "type": "object", "optional": true, "hidden": true, "description": "Native heap statistics." }
-                ],
-                "description": "Timeline record contains information about the recorded activity."
-            }
-        ],
-        "commands": [
-            {
-                "name": "start",
-                "parameters": [
-                    { "name": "maxCallStackDepth", "optional": true, "type": "integer", "description": "Samples JavaScript stack traces up to <code>maxCallStackDepth</code>, defaults to 5." },
-                    { "name": "includeDomCounters", "optional": true, "type": "boolean", "hidden": true, "description": "Whether DOM counters data should be included into timeline events." },
-                    { "name": "includeNativeMemoryStatistics", "optional": true, "type": "boolean", "hidden": true, "description": "Whether native memory usage statistics should be reported as part of timeline events." }
-
-                ],
-                "description": "Starts capturing instrumentation events."
-            },
-            {
-                "name": "stop",
-                "description": "Stops capturing instrumentation events."
-            }
-        ],
-        "events": [
-            {
-                "name": "eventRecorded",
-                "parameters": [
-                    { "name": "record", "$ref": "TimelineEvent", "description": "Timeline event record data." }
-                ],
-                "description": "Fired for every instrumentation event while timeline is started."
-            }
-        ]
-    },
-    {
-        "domain": "Debugger",
-        "description": "Debugger domain exposes JavaScript debugging capabilities. It allows setting and removing breakpoints, stepping through execution, exploring stack traces, etc.",
-        "types": [
-            {
-                "id": "BreakpointId",
-                "type": "string",
-                "description": "Breakpoint identifier."
-            },
-            {
-                "id": "ScriptId",
-                "type": "string",
-                "description": "Unique script identifier."
-            },
-            {
-                "id": "CallFrameId",
-                "type": "string",
-                "description": "Call frame identifier."
-            },
-            {
-                "id": "Location",
-                "type": "object",
-                "properties": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Script identifier as reported in the <code>Debugger.scriptParsed</code>." },
-                    { "name": "lineNumber", "type": "integer", "description": "Line number in the script." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Column number in the script." }
-                ],
-                "description": "Location in the source code."
-            },
-            {
-                "id": "FunctionDetails",
-                "hidden": true,
-                "type": "object",
-                "properties": [
-                    { "name": "location", "$ref": "Location", "description": "Location of the function." },
-                    { "name": "name", "type": "string", "optional": true, "description": "Name of the function. Not present for anonymous functions." },
-                    { "name": "displayName", "type": "string", "optional": true, "description": "Display name of the function(specified in 'displayName' property on the function object)." },
-                    { "name": "inferredName", "type": "string", "optional": true, "description": "Name of the function inferred from its initial assignment." },
-                    { "name": "scopeChain", "type": "array", "optional": true, "items": { "$ref": "Scope" }, "description": "Scope chain for this closure." }
-                ],
-                "description": "Information about the function."
-            },
-            {
-                "id": "CallFrame",
-                "type": "object",
-                "properties": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier. This identifier is only valid while the virtual machine is paused." },
-                    { "name": "functionName", "type": "string", "description": "Name of the JavaScript function called on this call frame." },
-                    { "name": "location", "$ref": "Location", "description": "Location in the source code." },
-                    { "name": "scopeChain", "type": "array", "items": { "$ref": "Scope" }, "description": "Scope chain for this call frame." },
-                    { "name": "this", "$ref": "Runtime.RemoteObject", "description": "<code>this</code> object for this call frame." }
-                ],
-                "description": "JavaScript call frame. Array of call frames form the call stack."
-            },
-            {
-                "id": "Scope",
-                "type": "object",
-                "properties": [
-                    { "name": "type", "type": "string", "enum": ["global", "local", "with", "closure", "catch"], "description": "Scope type." },
-                    { "name": "object", "$ref": "Runtime.RemoteObject", "description": "Object representing the scope. For <code>global</code> and <code>with</code> scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties." }
-                ],
-                "description": "Scope description."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables debugger for the given page. Clients should not assume that the debugging has been enabled until the result for this command is received."
-            },
-            {
-                "name": "disable",
-                "description": "Disables debugger for given page."
-            },
-            {
-                "name": "setBreakpointsActive",
-                "parameters": [
-                    { "name": "active", "type": "boolean", "description": "New value for breakpoints active state." }
-                ],
-                "description": "Activates / deactivates all breakpoints on the page."
-            },
-            {
-                "name": "setBreakpointByUrl",
-                "parameters": [
-                    { "name": "lineNumber", "type": "integer", "description": "Line number to set breakpoint at." },
-                    { "name": "url", "type": "string", "optional": true, "description": "URL of the resources to set breakpoint on." },
-                    { "name": "urlRegex", "type": "string", "optional": true, "description": "Regex pattern for the URLs of the resources to set breakpoints on. Either <code>url</code> or <code>urlRegex</code> must be specified." },
-                    { "name": "columnNumber", "type": "integer", "optional": true, "description": "Offset in the line to set breakpoint at." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "locations", "type": "array", "items": { "$ref": "Location"}, "description": "List of the locations this breakpoint resolved into upon addition." }
-                ],
-                "description": "Sets JavaScript breakpoint at given location specified either by URL or URL regex. Once this command is issued, all existing parsed scripts will have breakpoints resolved and returned in <code>locations</code> property. Further matching script parsing will result in subsequent <code>breakpointResolved</code> events issued. This logical breakpoint will survive page reloads."
-            },
-            {
-                "name": "setBreakpoint",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to set breakpoint in." },
-                    { "name": "condition", "type": "string", "optional": true, "description": "Expression to use as a breakpoint condition. When specified, debugger will only stop on the breakpoint if this expression evaluates to true." }
-                ],
-                "returns": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Id of the created breakpoint for further reference." },
-                    { "name": "actualLocation", "$ref": "Location", "description": "Location this breakpoint resolved into." }
-                ],
-                "description": "Sets JavaScript breakpoint at a given location."
-            },
-            {
-                "name": "removeBreakpoint",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId" }
-                ],
-                "description": "Removes JavaScript breakpoint."
-            },
-            {
-                "name": "continueToLocation",
-                "parameters": [
-                    { "name": "location", "$ref": "Location", "description": "Location to continue to." }
-                ],
-                "description": "Continues execution until specific location is reached."
-            },
-            {
-                "name": "stepOver",
-                "description": "Steps over the statement."
-            },
-            {
-                "name": "stepInto",
-                "description": "Steps into the function call."
-            },
-            {
-                "name": "stepOut",
-                "description": "Steps out of the function call."
-            },
-            {
-                "name": "pause",
-                "description": "Stops on the next JavaScript statement."
-            },
-            {
-                "name": "resume",
-                "description": "Resumes JavaScript execution."
-            },
-            {
-                "name": "searchInContent",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to search in." },
-                    { "name": "query", "type": "string", "description": "String to search for."  },
-                    { "name": "caseSensitive", "type": "boolean", "optional": true, "description": "If true, search is case sensitive." },
-                    { "name": "isRegex", "type": "boolean", "optional": true, "description": "If true, treats string parameter as regex." }
-                ],
-                "returns": [
-                    { "name": "result", "type": "array", "items": { "$ref": "Page.SearchMatch" }, "description": "List of search matches." }
-                ],
-                "description": "Searches for given string in script content."
-            },
-            {
-                "name": "canSetScriptSource",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if <code>setScriptSource</code> is supported." }
-                ],
-                "description": "Always returns true."
-            },
-            {
-                "name": "setScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to edit." },
-                    { "name": "scriptSource", "type": "string", "description": "New content of the script." },
-                    { "name": "preview", "type": "boolean", "optional": true, "description": " If true the change will not actually be applied. Preview mode may be used to get result description without actually modifying the code.", "hidden": true }
-                ],
-                "returns": [
-                    { "name": "callFrames", "type": "array", "optional": true, "items": { "$ref": "CallFrame"}, "description": "New stack trace in case editing has happened while VM was stopped." },
-                    { "name": "result", "type": "object", "optional": true, "description": "VM-specific description of the changes applied.", "hidden": true }
-                ],
-                "description": "Edits JavaScript source live."
-            },
-            {
-                "name": "restartFrame",
-                "parameters": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier to evaluate on." }
-                ],
-                "returns": [
-                    { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame"}, "description": "New stack trace." },
-                    { "name": "result", "type": "object", "description": "VM-specific description.", "hidden": true }
-                ],
-                "hidden": true,
-                "description": "Restarts particular call frame from the beginning."
-            },
-            {
-                "name": "getScriptSource",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to get source for." }
-                ],
-                "returns": [
-                    { "name": "scriptSource", "type": "string", "description": "Script source." }
-                ],
-                "description": "Returns source for the script with given id."
-            },
-            {
-                "name": "getFunctionDetails",
-                "hidden": true,
-                "parameters": [
-                    { "name": "functionId", "$ref": "Runtime.RemoteObjectId", "description": "Id of the function to get location for." }
-                ],
-                "returns": [
-                    { "name": "details", "$ref": "FunctionDetails", "description": "Information about the function." }
-                ],
-                "description": "Returns detailed informtation on given function."
-            },
-            {
-                "name": "setPauseOnExceptions",
-                "parameters": [
-                    { "name": "state", "type": "string", "enum": ["none", "uncaught", "all"], "description": "Pause on exceptions mode." }
-                ],
-                "description": "Defines pause on exceptions state. Can be set to stop on all exceptions, uncaught exceptions or no exceptions. Initial pause on exceptions state is <code>none</code>."
-            },
-            {
-                "name": "evaluateOnCallFrame",
-                "parameters": [
-                    { "name": "callFrameId", "$ref": "CallFrameId", "description": "Call frame identifier to evaluate on." },
-                    { "name": "expression", "type": "string", "description": "Expression to evaluate." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "String object group name to put result into (allows rapid releasing resulting object handles using <code>releaseObjectGroup</code>)." },
-                    { "name": "includeCommandLineAPI", "type": "boolean", "optional": true, "description": "Specifies whether command line API should be available to the evaluated expression, defaults to false.", "hidden": true },
-                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether evaluation should stop on exceptions and mute console. Overrides setPauseOnException state.", "hidden": true },
-                    { "name": "returnByValue", "type": "boolean", "optional": true, "description": "Whether the result is expected to be a JSON object that should be sent by value." },
-                    { "name": "generatePreview", "type": "boolean", "optional": true, "hidden": true, "description": "Whether preview should be generated for the result." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Object wrapper for the evaluation result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the evaluation." }
-                ],
-                "description": "Evaluates expression on a given call frame."
-            },
-            {
-                "name": "compileScript",
-                "hidden": true,
-                "parameters": [
-                    { "name": "expression", "type": "string", "description": "Expression to compile." },
-                    { "name": "sourceURL", "type": "string", "description": "Source url to be set for the script." }
-                ],
-                "returns": [
-                    { "name": "scriptId", "$ref": "ScriptId", "optional": true, "description": "Id of the script." },
-                    { "name": "syntaxErrorMessage", "type": "string", "optional": true, "description": "Syntax error message if compilation failed." }
-                ],
-                "description": "Compiles expression."
-            },
-            {
-                "name": "runScript",
-                "hidden": true,
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Id of the script to run." },
-                    { "name": "contextId", "$ref": "Runtime.ExecutionContextId", "optional": true, "description": "Specifies in which isolated context to perform script run. Each content script lives in an isolated context and this parameter may be used to specify one of those contexts. If the parameter is omitted or 0 the evaluation will be performed in the context of the inspected page." },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." },
-                    { "name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true, "description": "Specifies whether script run should stop on exceptions and mute console. Overrides setPauseOnException state." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Run result." },
-                    { "name": "wasThrown", "type": "boolean", "optional": true, "description": "True if the result was thrown during the script run." }
-                ],
-                "description": "Runs script with given id in a given context."
-            },
-            {
-                "name": "setOverlayMessage",
-                "parameters": [
-                    { "name": "message", "type": "string", "optional": true, "description": "Overlay message to display when paused in debugger." }
-                ],
-                "hidden": true,
-                "description": "Sets overlay message."
-            },
-            {
-                "name": "setVariableValue",
-                "parameters": [
-                    { "name": "scopeNumber", "type": "integer", "description": "0-based number of scope as was listed in scope chain. Only 'local', 'closure' and 'catch' scope types are allowed. Other scopes could be manipulated manually." },
-                    { "name": "variableName", "type": "string", "description": "Variable name." },
-                    { "name": "newValue", "$ref": "Runtime.CallArgument", "description": "New variable value." },
-                    { "name": "callFrameId", "$ref": "CallFrameId", "optional": true, "description": "Id of callframe that holds variable." },
-                    { "name": "functionObjectId", "$ref": "Runtime.RemoteObjectId", "optional": true, "description": "Object id of closure (function) that holds variable." }
-                ],
-                "hidden": true,
-                "description": "Changes value of variable in a callframe or a closure. Either callframe or function must be specified. Object-based scopes are not supported and must be mutated manually."
-            }
-        ],
-        "events": [
-            {
-                "name": "globalObjectCleared",
-                "description": "Called when global has been cleared and debugger client should reset its state. Happens upon navigation or reload."
-            },
-            {
-                "name": "scriptParsed",
-                "parameters": [
-                    { "name": "scriptId", "$ref": "ScriptId", "description": "Identifier of the script parsed." },
-                    { "name": "url", "type": "string", "description": "URL or name of the script parsed (if any)." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource with given URL (for script tags)." },
-                    { "name": "startColumn", "type": "integer", "description": "Column offset of the script within the resource with given URL." },
-                    { "name": "endLine", "type": "integer", "description": "Last line of the script." },
-                    { "name": "endColumn", "type": "integer", "description": "Length of the last line of the script." },
-                    { "name": "isContentScript", "type": "boolean", "optional": true, "description": "Determines whether this script is a user extension script." },
-                    { "name": "sourceMapURL", "type": "string", "optional": true, "description": "URL of source map associated with script (if any)." },
-                    { "name": "hasSourceURL", "type": "boolean", "optional": true, "description": "True, if this script has sourceURL.", "hidden": true }
-                ],
-                "description": "Fired when virtual machine parses script. This event is also fired for all known and uncollected scripts upon enabling debugger."
-            },
-            {
-                "name": "scriptFailedToParse",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "URL of the script that failed to parse." },
-                    { "name": "scriptSource", "type": "string", "description": "Source text of the script that failed to parse." },
-                    { "name": "startLine", "type": "integer", "description": "Line offset of the script within the resource." },
-                    { "name": "errorLine", "type": "integer", "description": "Line with error." },
-                    { "name": "errorMessage", "type": "string", "description": "Parse error message." }
-                ],
-                "description": "Fired when virtual machine fails to parse the script."
-            },
-            {
-                "name": "breakpointResolved",
-                "parameters": [
-                    { "name": "breakpointId", "$ref": "BreakpointId", "description": "Breakpoint unique identifier." },
-                    { "name": "location", "$ref": "Location", "description": "Actual breakpoint location." }
-                ],
-                "description": "Fired when breakpoint is resolved to an actual script and location."
-            },
-            {
-                "name": "paused",
-                "parameters": [
-                    { "name": "callFrames", "type": "array", "items": { "$ref": "CallFrame" }, "description": "Call stack the virtual machine stopped on." },
-                    { "name": "reason", "type": "string", "enum": [ "XHR", "DOM", "EventListener", "exception", "assert", "CSPViolation", "other" ], "description": "Pause reason." },
-                    { "name": "data", "type": "object", "optional": true, "description": "Object containing break-specific auxiliary properties." }
-                ],
-                "description": "Fired when the virtual machine stopped on breakpoint or exception or any other stop criteria."
-            },
-            {
-                "name": "resumed",
-                "description": "Fired when the virtual machine resumed execution."
-            }
-        ]
-    },
-    {
-        "domain": "DOMDebugger",
-        "description": "DOM debugging allows setting breakpoints on particular DOM operations and events. JavaScript execution will stop on these operations as if there was a regular breakpoint set.",
-        "types": [
-            {
-                "id": "DOMBreakpointType",
-                "type": "string",
-                "enum": ["subtree-modified", "attribute-modified", "node-removed"],
-                "description": "DOM breakpoint type."
-            }
-        ],
-        "commands": [
-            {
-                "name": "setDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to set breakpoint on." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the operation to stop upon." }
-                ],
-                "description": "Sets breakpoint on particular operation with DOM."
-            },
-            {
-                "name": "removeDOMBreakpoint",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Identifier of the node to remove breakpoint from." },
-                    { "name": "type", "$ref": "DOMBreakpointType", "description": "Type of the breakpoint to remove." }
-                ],
-                "description": "Removes DOM breakpoint that was set using <code>setDOMBreakpoint</code>."
-            },
-            {
-                "name": "setEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "DOM Event name to stop on (any DOM event will do)." }
-                ],
-                "description": "Sets breakpoint on particular DOM event."
-            },
-            {
-                "name": "removeEventListenerBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Event name." }
-                ],
-                "description": "Removes breakpoint on particular DOM event."
-            },
-            {
-                "name": "setInstrumentationBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Instrumentation name to stop on." }
-                ],
-                "description": "Sets breakpoint on particular native event.",
-                "hidden": true
-            },
-            {
-                "name": "removeInstrumentationBreakpoint",
-                "parameters": [
-                    { "name": "eventName", "type": "string", "description": "Instrumentation name to stop on." }
-                ],
-                "description": "Sets breakpoint on particular native event.",
-                "hidden": true
-            },
-            {
-                "name": "setXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring. All XHRs having this substring in the URL will get stopped upon." }
-                ],
-                "description": "Sets breakpoint on XMLHttpRequest."
-            },
-            {
-                "name": "removeXHRBreakpoint",
-                "parameters": [
-                    { "name": "url", "type": "string", "description": "Resource URL substring." }
-                ],
-                "description": "Removes breakpoint from XMLHttpRequest."
-            }
-        ]
-    },
-    {
-        "domain": "Profiler",
-        "hidden": true,
-        "types": [
-            {
-                "id": "ProfileHeader",
-                "type": "object",
-                "description": "Profile header.",
-                "properties": [
-                    { "name": "typeId", "type": "string", "enum": ["CPU", "CSS", "HEAP"], "description": "Profile type name." },
-                    { "name": "title", "type": "string", "description": "Profile title." },
-                    { "name": "uid", "type": "integer", "description": "Unique identifier of the profile." },
-                    { "name": "maxJSObjectId", "type": "integer", "optional": true, "description": "Last seen JS object Id." }
-                ]
-            },
-            {
-                "id": "CPUProfileNode",
-                "type": "object",
-                "description": "CPU Profile node. Holds callsite information, execution statistics and child nodes.",
-                "properties": [
-                    { "name": "functionName", "type": "string", "description": "Function name." },
-                    { "name": "url", "type": "string", "description": "URL." },
-                    { "name": "lineNumber", "type": "integer", "description": "Line number." },
-                    { "name": "totalTime", "type": "number", "description": "Total execution time." },
-                    { "name": "selfTime", "type": "number", "description": "Self time." },
-                    { "name": "numberOfCalls", "type": "integer", "description": "Number of calls." },
-                    { "name": "visible", "type": "boolean", "description": "Visibility." },
-                    { "name": "callUID", "type": "number", "description": "Call UID." },
-                    { "name": "children", "type": "array", "items": { "$ref": "CPUProfileNode" }, "description": "Child nodes." },
-                    { "name": "id", "optional": true, "type": "integer", "description": "Unique id of the node." }
-                ]
-            },
-            {
-                "id": "CPUProfile",
-                "type": "object",
-                "description": "Profile.",
-                "properties": [
-                    { "name": "head", "$ref": "CPUProfileNode", "optional": true },
-                    { "name": "idleTime", "type": "number", "optional": true },
-                    { "name": "samples", "optional": true, "type": "array", "items": { "type": "integer" }, "description": "Ids of samples top nodes." }
-                ]
-            },
-            {
-                "id": "HeapSnapshotObjectId",
-                "type": "string",
-                "description": "Heap snashot object id."
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable"
-            },
-            {
-                "name": "disable"
-            },
-            {
-                "name": "start"
-            },
-            {
-                "name": "stop"
-            },
-            {
-                "name": "getProfileHeaders",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "ProfileHeader"} }
-                ]
-            },
-            {
-                "name": "getCPUProfile",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "profile", "$ref": "CPUProfile" }
-                ]
-            },
-            {
-                "name": "getHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "removeProfile",
-                "parameters": [
-                    { "name": "type", "type": "string" },
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "clearProfiles"
-            },
-            {
-                "name": "takeHeapSnapshot",
-                "parameters": [
-                    { "name": "reportProgress", "type": "boolean", "optional": true, "description": "If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken." }
-                ]
-            },
-            {
-                "name": "collectGarbage"
-            },
-            {
-                "name": "getObjectByHeapObjectId",
-                "parameters": [
-                    { "name": "objectId", "$ref": "HeapSnapshotObjectId" },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Evaluation result." }
-                ]
-            },
-            {
-                "name": "getHeapObjectId",
-                "parameters": [
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "Identifier of the object to get heap object id for." }
-                ],
-                "returns": [
-                    { "name": "heapSnapshotObjectId", "$ref": "HeapSnapshotObjectId", "description": "Id of the heap snapshot object corresponding to the passed remote object id." }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addProfileHeader",
-                "parameters": [
-                    { "name": "header", "$ref": "ProfileHeader" }
-                ]
-            },
-            {
-                "name": "addHeapSnapshotChunk",
-                "parameters": [
-                    { "name": "uid", "type": "integer" },
-                    { "name": "chunk", "type": "string" }
-                ]
-            },
-            {
-                "name": "finishHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setRecordingProfile",
-                "parameters": [
-                    { "name": "isProfiling", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "resetProfiles"
-            },
-            {
-                "name": "reportHeapSnapshotProgress",
-                "parameters": [
-                    { "name": "done", "type": "integer" },
-                    { "name": "total", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "HeapProfiler",
-        "hidden": true,
-        "types": [
-            {
-                "id": "ProfileHeader",
-                "type": "object",
-                "description": "Profile header.",
-                "properties": [
-                    { "name": "title", "type": "string", "description": "Profile title." },
-                    { "name": "uid", "type": "integer", "description": "Unique identifier of the profile." },
-                    { "name": "maxJSObjectId", "type": "integer", "optional": true, "description": "Last seen JS object Id." }
-                ]
-            },
-            {
-                "id": "HeapSnapshotObjectId",
-                "type": "string",
-                "description": "Heap snashot object id."
-            }
-        ],
-        "commands": [
-            {
-                "name": "getProfileHeaders",
-                "returns": [
-                    { "name": "headers", "type": "array", "items": { "$ref": "ProfileHeader"} }
-                ]
-            },
-            {
-                "name": "getHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "removeProfile",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "clearProfiles"
-            },
-            {
-                "name": "takeHeapSnapshot",
-                "parameters": [
-                    { "name": "reportProgress", "type": "boolean", "optional": true, "description": "If true 'reportHeapSnapshotProgress' events will be generated while snapshot is being taken." }
-                ]
-            },
-            {
-                "name": "collectGarbage"
-            },
-            {
-                "name": "getObjectByHeapObjectId",
-                "parameters": [
-                    { "name": "objectId", "$ref": "HeapSnapshotObjectId" },
-                    { "name": "objectGroup", "type": "string", "optional": true, "description": "Symbolic group name that can be used to release multiple objects." }
-                ],
-                "returns": [
-                    { "name": "result", "$ref": "Runtime.RemoteObject", "description": "Evaluation result." }
-                ]
-            },
-            {
-                "name": "getHeapObjectId",
-                "parameters": [
-                    { "name": "objectId", "$ref": "Runtime.RemoteObjectId", "description": "Identifier of the object to get heap object id for." }
-                ],
-                "returns": [
-                    { "name": "heapSnapshotObjectId", "$ref": "HeapSnapshotObjectId", "description": "Id of the heap snapshot object corresponding to the passed remote object id." }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "addProfileHeader",
-                "parameters": [
-                    { "name": "header", "$ref": "ProfileHeader" }
-                ]
-            },
-            {
-                "name": "addHeapSnapshotChunk",
-                "parameters": [
-                    { "name": "uid", "type": "integer" },
-                    { "name": "chunk", "type": "string" }
-                ]
-            },
-            {
-                "name": "finishHeapSnapshot",
-                "parameters": [
-                    { "name": "uid", "type": "integer" }
-                ]
-            },
-            {
-                "name": "resetProfiles"
-            },
-            {
-                "name": "reportHeapSnapshotProgress",
-                "parameters": [
-                    { "name": "done", "type": "integer" },
-                    { "name": "total", "type": "integer" }
-                ]
-            }
-        ]
-    },
-    {
-        "domain": "Worker",
-        "hidden": true,
-        "types": [],
-        "commands": [
-            {
-                "name": "enable"
-            },
-            {
-                "name": "disable"
-            },
-            {
-                "name": "sendMessageToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            },
-            {
-                "name": "canInspectWorkers",
-                "description": "Tells whether browser supports workers inspection.",
-                "returns": [
-                    { "name": "result", "type": "boolean", "description": "True if browser has workers support." }
-                ]
-            },
-            {
-                "name": "connectToWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "disconnectFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "setAutoconnectToWorkers",
-                "parameters": [
-                    { "name": "value", "type": "boolean" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "workerCreated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "url", "type": "string" },
-                    { "name": "inspectorConnected", "type": "boolean" }
-                ]
-            },
-            {
-                "name": "workerTerminated",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" }
-                ]
-            },
-            {
-                "name": "dispatchMessageFromWorker",
-                "parameters": [
-                    { "name": "workerId", "type": "integer" },
-                    { "name": "message", "type": "object" }
-                ]
-            },
-            {
-                "name": "disconnectedFromWorker"
-            }
-        ]
-    },
-    {
-        "domain": "Canvas",
-        "hidden": true,
-        "types": [
-            {
-                "id": "ResourceId",
-                "type": "string",
-                "description": "Unique resource identifier."
-            },
-            {
-                "id": "ResourceInfo",
-                "type": "object",
-                "properties": [
-                    { "name": "id", "$ref": "ResourceId" },
-                    { "name": "description", "type": "string" }
-                ]
-            },
-            {
-                "id": "ResourceState",
-                "type": "object",
-                "properties": [
-                    { "name": "id", "$ref": "ResourceId" },
-                    { "name": "traceLogId", "$ref": "TraceLogId" },
-                    { "name": "imageURL", "type": "string", "optional": true, "description": "Screenshot image data URL." }
-                ]
-            },
-            {
-                "id": "CallArgument",
-                "type": "object",
-                "properties": [
-                    { "name": "description", "type": "string" }
-                ]
-            },
-            {
-                "id": "Call",
-                "type": "object",
-                "properties": [
-                    { "name": "contextId", "$ref": "ResourceId" },
-                    { "name": "functionName", "type": "string", "optional": true },
-                    { "name": "arguments", "type": "array", "items": { "$ref": "CallArgument" }, "optional": true },
-                    { "name": "result", "$ref": "CallArgument", "optional": true },
-                    { "name": "isDrawingCall", "type": "boolean", "optional": true },
-                    { "name": "isFrameEndCall", "type": "boolean", "optional": true },
-                    { "name": "property", "type": "string", "optional": true },
-                    { "name": "value", "$ref": "CallArgument", "optional": true },
-                    { "name": "sourceURL", "type": "string", "optional": true },
-                    { "name": "lineNumber", "type": "integer", "optional": true },
-                    { "name": "columnNumber", "type": "integer", "optional": true }
-                ]
-            },
-            {
-                "id": "TraceLogId",
-                "type": "string",
-                "description": "Unique trace log identifier."
-            },
-            {
-                "id": "TraceLog",
-                "type": "object",
-                "properties": [
-                    { "name": "id", "$ref": "TraceLogId" },
-                    { "name": "calls", "type": "array", "items": { "$ref": "Call" } },
-                    { "name": "startOffset", "type": "integer" },
-                    { "name": "alive", "type": "boolean" },
-                    { "name": "totalAvailableCalls", "type": "number" }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables Canvas inspection."
-            },
-            {
-                "name": "disable",
-                "description": "Disables Canvas inspection."
-            },
-            {
-                "name": "dropTraceLog",
-                "parameters": [
-                    { "name": "traceLogId", "$ref": "TraceLogId" }
-                ]
-            },
-            {
-                "name": "hasUninstrumentedCanvases",
-                "returns": [
-                    { "name": "result", "type": "boolean" }
-                ],
-                "description": "Checks if there is any uninstrumented canvas in the inspected page."
-            },
-            {
-                "name": "captureFrame",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Identifier of the frame containing document whose canvases are to be captured. If omitted, main frame is assumed." }
-                ],
-                "returns": [
-                    { "name": "traceLogId", "$ref": "TraceLogId", "description": "Identifier of the trace log containing captured canvas calls." }
-                ],
-                "description": "Starts (or continues) a canvas frame capturing which will be stopped automatically after the next frame is prepared."
-            },
-            {
-                "name": "startCapturing",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "Identifier of the frame containing document whose canvases are to be captured. If omitted, main frame is assumed." }
-                ],
-                "returns": [
-                    { "name": "traceLogId", "$ref": "TraceLogId", "description": "Identifier of the trace log containing captured canvas calls." }
-                ],
-                "description": "Starts (or continues) consecutive canvas frames capturing. The capturing is stopped by the corresponding stopCapturing command."
-            },
-            {
-                "name": "stopCapturing",
-                "parameters": [
-                    { "name": "traceLogId", "$ref": "TraceLogId" }
-                ]
-            },
-            {
-                "name": "getTraceLog",
-                "parameters": [
-                    { "name": "traceLogId", "$ref": "TraceLogId" },
-                    { "name": "startOffset", "type": "integer", "optional": true },
-                    { "name": "maxLength", "type": "integer", "optional": true }
-                ],
-                "returns": [
-                    { "name": "traceLog", "$ref": "TraceLog" }
-                ]
-            },
-            {
-                "name": "replayTraceLog",
-                "parameters": [
-                    { "name": "traceLogId", "$ref": "TraceLogId" },
-                    { "name": "stepNo", "type": "integer" }
-                ],
-                "returns": [
-                    { "name": "resourceState", "$ref": "ResourceState" }
-                ]
-            },
-            {
-                "name": "getResourceInfo",
-                "parameters": [
-                    { "name": "resourceId", "$ref": "ResourceId" }
-                ],
-                "returns": [
-                    { "name": "resourceInfo", "$ref": "ResourceInfo" }
-                ]
-            },
-            {
-                "name": "getResourceState",
-                "parameters": [
-                    { "name": "traceLogId", "$ref": "TraceLogId" },
-                    { "name": "resourceId", "$ref": "ResourceId" }
-                ],
-                "returns": [
-                    { "name": "resourceState", "$ref": "ResourceState" }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "contextCreated",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Identifier of the frame containing a canvas with a context." }
-                ],
-                "description": "Fired when a canvas context has been created in the given frame. The context may not be instrumented (see hasUninstrumentedCanvases command)."
-            },
-            {
-                "name": "traceLogsRemoved",
-                "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "optional": true, "description": "If given, trace logs from the given frame were removed." },
-                    { "name": "traceLogId", "$ref": "TraceLogId", "optional": true, "description": "If given, trace log with the given ID was removed." }
-                ],
-                "description": "Fired when a set of trace logs were removed from the backend. If no parameters are given, all trace logs were removed."
-            }
-        ]
-    },
-    {
-        "domain": "Input",
-        "types": [],
-        "commands": [
-            {
-                "name": "dispatchKeyEvent",
-                "parameters": [
-                    { "name": "type", "type": "string", "enum": ["keyDown", "keyUp", "rawKeyDown", "char"], "description": "Type of the key event." },
-                    { "name": "modifiers", "type": "integer", "optional": true, "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0)." },
-                    { "name": "timestamp", "type": "number", "optional": true, "description": "Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time)." },
-                    { "name": "text", "type": "string", "optional": true, "description": "Text as generated by processing a virtual key code with a keyboard layout. Not needed for for <code>keyUp</code> and <code>rawKeyDown</code> events (default: \"\")" },
-                    { "name": "unmodifiedText", "type": "string", "optional": true, "description": "Text that would have been generated by the keyboard if no modifiers were pressed (except for shift). Useful for shortcut (accelerator) key handling (default: \"\")." },
-                    { "name": "keyIdentifier", "type": "string", "optional": true, "description": "Unique key identifier (e.g., 'U+0041') (default: \"\")." },
-                    { "name": "windowsVirtualKeyCode", "type": "integer", "optional": true, "description": "Windows virtual key code (default: 0)." },
-                    { "name": "nativeVirtualKeyCode", "type": "integer", "optional": true, "description": "Native virtual key code (default: 0)." },
-                    { "name": "macCharCode", "type": "integer", "optional": true, "description": "Mac character code (default: 0)." },
-                    { "name": "autoRepeat", "type": "boolean", "optional": true, "description": "Whether the event was generated from auto repeat (default: false)." },
-                    { "name": "isKeypad", "type": "boolean", "optional": true, "description": "Whether the event was generated from the keypad (default: false)." },
-                    { "name": "isSystemKey", "type": "boolean", "optional": true, "description": "Whether the event was a system key event (default: false)." }
-                ],
-                "description": "Dispatches a key event to the page."
-            },
-            {
-                "name": "dispatchMouseEvent",
-                "parameters": [
-                    { "name": "type", "type": "string", "enum": ["mousePressed", "mouseReleased", "mouseMoved"], "description": "Type of the mouse event." },
-                    { "name": "x", "type": "integer", "description": "X coordinate of the event relative to the main frame's viewport."},
-                    { "name": "y", "type": "integer", "description": "Y coordinate of the event relative to the main frame's viewport. 0 refers to the top of the viewport and Y increases as it proceeds towards the bottom of the viewport."},
-                    { "name": "modifiers", "type": "integer", "optional": true, "description": "Bit field representing pressed modifier keys. Alt=1, Ctrl=2, Meta/Command=4, Shift=8 (default: 0)." },
-                    { "name": "timestamp", "type": "number", "optional": true, "description": "Time at which the event occurred. Measured in UTC time in seconds since January 1, 1970 (default: current time)." },
-                    { "name": "button", "type": "string", "enum": ["none", "left", "middle", "right"], "optional": true, "description": "Mouse button (default: \"none\")." },
-                    { "name": "clickCount", "type": "integer", "optional": true, "description": "Number of times the mouse button was clicked (default: 0)." }
-                ],
-                "description": "Dispatches a mouse event to the page."
-            }
-        ],
-        "events": []
-    },
-    {
-        "domain": "LayerTree",
-        "hidden": true,
-        "types": [
-            {
-                "id": "LayerId",
-                "type": "string",
-                "description": "Unique RenderLayer identifier."
-            },
-            {
-                "id": "PseudoElementId",
-                "type": "string",
-                "description": "Unique PseudoElement identifier."
-            },
-            {
-                "id": "IntRect",
-                "type": "object",
-                "description": "A rectangle.",
-                "properties": [
-                    { "name": "x", "type": "integer", "description": "The x position." },
-                    { "name": "y", "type": "integer", "description": "The y position." },
-                    { "name": "width", "type": "integer", "description": "The width metric." },
-                    { "name": "height", "type": "integer", "description": "The height metric." }
-                ]
-            },
-            {
-                "id": "Layer",
-                "type": "object",
-                "description": "Information about a compositing layer.",
-                "properties": [
-                    { "name": "layerId", "$ref": "LayerId", "description": "The unique id for this layer." },
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "The id for the node associated with this layer." },
-                    { "name": "bounds", "$ref": "IntRect", "description": "Bounds of the layer in absolute page coordinates." },
-                    { "name": "paintCount", "type": "integer", "description": "Indicates how many time this layer has painted." },
-                    { "name": "memory", "type": "integer", "description": "Estimated memory used by this layer." },
-                    { "name": "compositedBounds", "$ref": "IntRect", "description": "The bounds of the composited layer." },
-                    { "name": "isInShadowTree", "type": "boolean", "optional": true, "description": "Indicates whether this layer is associated with an element hosted in a shadow tree." },
-                    { "name": "isReflection", "type": "boolean", "optional": true, "description": "Indicates whether this layer was used to provide a reflection for the element." },
-                    { "name": "isGeneratedContent", "type": "boolean", "optional": true, "description": "Indicates whether the layer is attached to a pseudo element that is CSS generated content." },
-                    { "name": "pseudoElementId", "$ref": "PseudoElementId", "optional": true, "description": "The id for the pseudo element associated with this layer." },
-                    { "name": "pseudoClass", "type": "string", "optional": true, "description": "The name of the CSS pseudo-class that prompted the layer's content to be generated." }
-                ]
-            },
-            {
-                "id": "CompositingReasons",
-                "type": "object",
-                "description": "An object containing the reasons why the layer was composited as properties.",
-                "properties": [
-                    { "name": "transform3D", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a CSS 3D transform." },
-                    { "name": "video", "type": "boolean", "optional": true, "description": "Composition due to association with a <video> element." },
-                    { "name": "canvas", "type": "boolean", "optional": true, "description": "Composition due to the element being a <canvas> element." },
-                    { "name": "plugin", "type": "boolean", "optional": true, "description": "Composition due to association with a plugin." },
-                    { "name": "iFrame", "type": "boolean", "optional": true, "description": "Composition due to association with an <iframe> element." },
-                    { "name": "backfaceVisibilityHidden", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a \"backface-visibility: hidden\" style." },
-                    { "name": "clipsCompositingDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element clipping compositing descendants." },
-                    { "name": "animation", "type": "boolean", "optional": true, "description": "Composition due to association with an animated element." },
-                    { "name": "filters", "type": "boolean", "optional": true, "description": "Composition due to association with an element with CSS filters applied." },
-                    { "name": "positionFixed", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a \"position: fixed\" style." },
-                    { "name": "positionSticky", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a \"position: sticky\" style." },
-                    { "name": "overflowScrollingTouch", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a \"overflow-scrolling: touch\" style." },
-                    { "name": "stacking", "type": "boolean", "optional": true, "description": "Composition due to association with an element establishing a stacking context." },
-                    { "name": "overlap", "type": "boolean", "optional": true, "description": "Composition due to association with an element overlapping other composited elements." },
-                    { "name": "negativeZIndexChildren", "type": "boolean", "optional": true, "description": "Composition due to association with an element with descendants that have a negative z-index." },
-                    { "name": "transformWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element with composited descendants." },
-                    { "name": "opacityWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element with opacity applied and composited descendants." },
-                    { "name": "maskWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with a masked element and composited descendants." },
-                    { "name": "reflectionWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a reflection and composited descendants." },
-                    { "name": "filterWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element with CSS filters applied and composited descendants." },
-                    { "name": "blendingWithCompositedDescendants", "type": "boolean", "optional": true, "description": "Composition due to association with an element with CSS blending applied and composited descendants." },
-                    { "name": "perspective", "type": "boolean", "optional": true, "description": "Composition due to association with an element with perspective applied." },
-                    { "name": "preserve3D", "type": "boolean", "optional": true, "description": "Composition due to association with an element with a \"transform-style: preserve-3d\" style." },
-                    { "name": "root", "type": "boolean", "optional": true, "description": "Composition due to association with the root element." }
-                ]
-            }
-        ],
-        "commands": [
-            {
-                "name": "enable",
-                "description": "Enables compositing tree inspection."
-            },
-            {
-                "name": "disable",
-                "description": "Disables compositing tree inspection."
-            },
-            {
-                "name": "layersForNode",
-                "parameters": [
-                    { "name": "nodeId", "$ref": "DOM.NodeId", "description": "Root of the subtree for which we want to gather layers." }                ],
-                "description": "Returns the layer tree structure of the current page.",
-                "returns": [
-                    { "name": "layers", "type": "array", "items": { "$ref": "Layer" }, "description": "Child layers." }
-                ]
-            },
-            {
-                "name": "reasonsForCompositingLayer",
-                "parameters": [
-                    { "name": "layerId", "$ref": "LayerId", "description": "The id of the layer for which we want to get the reasons it was composited." }
-                ],
-                "description": "Provides the reasons why the given layer was composited.",
-                "returns": [
-                    { "name": "compositingReasons", "$ref": "CompositingReasons", "description": "An object containing the reasons why the layer was composited as properties." }
-                ]
-            }
-        ],
-        "events": [
-            {
-                "name": "layerTreeDidChange"
-            }
-        ]
-    }]
-}
diff --git a/inspector/InspectorFrontendHost.idl b/inspector/InspectorFrontendHost.idl
index 778f6f9..5d77709 100644
--- a/inspector/InspectorFrontendHost.idl
+++ b/inspector/InspectorFrontendHost.idl
@@ -31,51 +31,49 @@
  */
 
 [
-    Conditional=INSPECTOR,
     ImplementationLacksVTable
 ] interface InspectorFrontendHost {
-    void loaded();
     void closeWindow();
     void bringToFront();
-    void setZoomFactor(in float zoom);
-    void inspectedURLChanged(in DOMString newURL);
+    void setZoomFactor(float zoom);
+    void inspectedURLChanged(DOMString newURL);
 
-    void requestSetDockSide(in DOMString side);
-    void setAttachedWindowHeight(in unsigned long height);
-    void setAttachedWindowWidth(in unsigned long width);
-    void moveWindowBy(in float x, in float y);
-    void setInjectedScriptForOrigin(in DOMString origin, in DOMString script);
+    void requestSetDockSide(DOMString side);
+    void setAttachedWindowHeight(unsigned long height);
+    void setAttachedWindowWidth(unsigned long width);
+    void moveWindowBy(float x, float y);
+    void setInjectedScriptForOrigin(DOMString origin, DOMString script);
 
-    DOMString localizedStringsURL();
-
-    void copyText(in DOMString text);
-    void openInNewTab(in DOMString url);
-    boolean canSave();
-    void save(in DOMString url, in DOMString content, in boolean forceSaveAs);
-    void append(in DOMString url, in DOMString content);
-    void close(in DOMString url);
+    void copyText(DOMString text);
+    void openInNewTab(DOMString url);
+    void save(DOMString url, DOMString content, boolean forceSaveAs);
+    void append(DOMString url, DOMString content);
+    void close(DOMString url);
 
     [Custom] DOMString platform();
     [Custom] DOMString port();
-    [Custom] void showContextMenu(in MouseEvent event, in any items);
-    void sendMessageToBackend(in DOMString message);
+    [Custom] void showContextMenu(MouseEvent event, any items);
+    void sendMessageToBackend(DOMString message);
 
-    [Custom] void recordActionTaken(in unsigned long actionCode);
-    [Custom] void recordPanelShown(in unsigned long panelCode);
-    [Custom] void recordSettingChanged(in unsigned long settingChanged);
+    [Custom] void recordActionTaken(unsigned long actionCode);
+    [Custom] void recordPanelShown(unsigned long panelCode);
+    [Custom] void recordSettingChanged(unsigned long settingChanged);
 
-    DOMString loadResourceSynchronously(in DOMString url);
+    DOMString loadResourceSynchronously(DOMString url);
 
-    boolean supportsFileSystems();
     void requestFileSystems();
     void addFileSystem();
-    void removeFileSystem(in DOMString fileSystemPath);
-    [Conditional=FILE_SYSTEM] DOMFileSystem isolatedFileSystem(in DOMString fileSystemId, in DOMString registeredName);
+    void removeFileSystem(DOMString fileSystemPath);
+    DOMFileSystem isolatedFileSystem(DOMString fileSystemId, DOMString registeredName);
 
     boolean isUnderTest();
 
     // Deprecated
     boolean canInspectWorkers();
     boolean canSaveAs();
+    boolean canSave();
+    boolean supportsFileSystems();
+    void loaded();
     DOMString hiddenPanels();
+    DOMString localizedStringsURL();
 };
diff --git a/inspector/JavaScriptCallFrame.idl b/inspector/JavaScriptCallFrame.idl
index ed90a84..0b8b8ed 100644
--- a/inspector/JavaScriptCallFrame.idl
+++ b/inspector/JavaScriptCallFrame.idl
@@ -24,8 +24,6 @@
  */
 
 [
-    Conditional=JAVASCRIPT_DEBUGGER,
-    OmitConstructor,
     DoNotCheckConstants,
     ImplementationLacksVTable
 ] interface JavaScriptCallFrame {
@@ -37,18 +35,18 @@
     const unsigned short CLOSURE_SCOPE = 3;
     const unsigned short CATCH_SCOPE = 4;
 
-    [Custom] void evaluate(in DOMString script);
+    [Custom] void evaluate(DOMString script);
     [Custom] any restart();
     
     // Only declarative scope (local, with and catch) is accepted. Returns undefined. 
-    [Custom] any setVariableValue(in int scopeIndex, in DOMString variableName, any newValue);
+    [Custom] any setVariableValue(int scopeIndex, DOMString variableName, any newValue);
 
     readonly attribute JavaScriptCallFrame caller;
     readonly attribute long sourceID;
     readonly attribute long line;
     readonly attribute long column;
     [CustomGetter] readonly attribute Array scopeChain;
-    [Custom] unsigned short scopeType(in int scopeIndex);
+    [Custom] unsigned short scopeType(int scopeIndex);
     [CustomGetter] readonly attribute Object thisObject;
     readonly attribute DOMString functionName;
     [CustomGetter] readonly attribute DOMString type;
diff --git a/inspector/ScriptProfile.idl b/inspector/ScriptProfile.idl
index 664a9bb..8569aae 100644
--- a/inspector/ScriptProfile.idl
+++ b/inspector/ScriptProfile.idl
@@ -25,8 +25,6 @@
  */
 
 [
-    Conditional=JAVASCRIPT_DEBUGGER,
-    OmitConstructor
 ] interface ScriptProfile {
     readonly attribute DOMString title;
     readonly attribute unsigned long uid;
diff --git a/inspector/ScriptProfileNode.idl b/inspector/ScriptProfileNode.idl
index 791b5a9..de7bc62 100644
--- a/inspector/ScriptProfileNode.idl
+++ b/inspector/ScriptProfileNode.idl
@@ -25,8 +25,6 @@
  */
 
 [
-    Conditional=JAVASCRIPT_DEBUGGER,
-    OmitConstructor
 ] interface ScriptProfileNode {
     readonly attribute DOMString functionName;
     readonly attribute DOMString url;
diff --git a/inspector/compile-front-end.py b/inspector/compile-front-end.py
deleted file mode 100755
index 34b9c67..0000000
--- a/inspector/compile-front-end.py
+++ /dev/null
@@ -1,449 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import os
-import os.path
-import generate_protocol_externs
-import shutil
-import sys
-import tempfile
-
-inspector_path = "Source/WebCore/inspector"
-inspector_frontend_path = inspector_path + "/front-end"
-protocol_externs_path = inspector_frontend_path + "/protocol-externs.js"
-
-generate_protocol_externs.generate_protocol_externs(protocol_externs_path, inspector_path + "/Inspector.json")
-
-jsmodule_name_prefix = "jsmodule_"
-modules = [
-    {
-        "name": "common",
-        "dependencies": [],
-        "sources": [
-            "Color.js",
-            "DOMExtension.js",
-            "Object.js",
-            "ParsedURL.js",
-            "Progress.js",
-            "Settings.js",
-            "UIString.js",
-            "UserMetrics.js",
-            "utilities.js",
-        ]
-    },
-    {
-        "name": "sdk",
-        "dependencies": ["common"],
-        "sources": [
-            "ApplicationCacheModel.js",
-            "CompilerScriptMapping.js",
-            "ConsoleModel.js",
-            "ContentProvider.js",
-            "ContentProviderBasedProjectDelegate.js",
-            "ContentProviders.js",
-            "CookieParser.js",
-            "CSSMetadata.js",
-            "CSSStyleModel.js",
-            "BreakpointManager.js",
-            "Database.js",
-            "DOMAgent.js",
-            "DOMStorage.js",
-            "DebuggerModel.js",
-            "DebuggerScriptMapping.js",
-            "FileManager.js",
-            "FileMapping.js",
-            "FileSystemMapping.js",
-            "FileSystemModel.js",
-            "FileSystemProjectDelegate.js",
-            "FileUtils.js",
-            "HAREntry.js",
-            "IndexedDBModel.js",
-            "InspectorBackend.js",
-            "IsolatedFileSystemManager.js",
-            "IsolatedFileSystem.js",
-            "Linkifier.js",
-            "NetworkLog.js",
-            "NetworkUISourceCodeProvider.js",
-            "PresentationConsoleMessageHelper.js",
-            "RuntimeModel.js",
-            "SASSSourceMapping.js",
-            "Script.js",
-            "ScriptFormatter.js",
-            "ScriptSnippetModel.js",
-            "SimpleWorkspaceProvider.js",
-            "SnippetStorage.js",
-            "SourceMapping.js",
-            "StylesSourceMapping.js",
-            "TimelineManager.js",
-            "RemoteObject.js",
-            "Resource.js",
-            "DefaultScriptMapping.js",
-            "ResourceScriptMapping.js",
-            "LiveEditSupport.js",
-            "ResourceTreeModel.js",
-            "ResourceType.js",
-            "ResourceUtils.js",
-            "SourceMap.js",
-            "NetworkManager.js",
-            "NetworkRequest.js",
-            "UISourceCode.js",
-            "UserAgentSupport.js",
-            "Workspace.js",
-            "protocol-externs.js",
-        ]
-    },
-    {
-        "name": "ui",
-        "dependencies": ["common"],
-        "sources": [
-            "Checkbox.js",
-            "ContextMenu.js",
-            "DOMSyntaxHighlighter.js",
-            "DataGrid.js",
-            "DefaultTextEditor.js",
-            "Dialog.js",
-            "DockController.js",
-            "Drawer.js",
-            "EmptyView.js",
-            "GoToLineDialog.js",
-            "HelpScreen.js",
-            "InspectorView.js",
-            "KeyboardShortcut.js",
-            "OverviewGrid.js",
-            "Panel.js",
-            "Placard.js",
-            "Popover.js",
-            "ProgressIndicator.js",
-            "PropertiesSection.js",
-            "SearchController.js",
-            "Section.js",
-            "SidebarPane.js",
-            "SidebarTreeElement.js",
-            "ShortcutsScreen.js",
-            "ShowMoreDataGridNode.js",
-            "SidebarOverlay.js",
-            "SoftContextMenu.js",
-            "SourceTokenizer.js",
-            "Spectrum.js",
-            "SplitView.js",
-            "SidebarView.js",
-            "StatusBarButton.js",
-            "SuggestBox.js",
-            "TabbedPane.js",
-            "TextEditor.js",
-            "TextEditorHighlighter.js",
-            "TextEditorModel.js",
-            "TextPrompt.js",
-            "TextUtils.js",
-            "TimelineGrid.js",
-            "Toolbar.js",
-            "UIUtils.js",
-            "View.js",
-            "ViewportControl.js",
-            "treeoutline.js",
-        ]
-    },
-    {
-        "name": "components",
-        "dependencies": ["sdk", "ui"],
-        "sources": [
-            "AdvancedSearchController.js",
-            "HandlerRegistry.js",
-            "ConsoleMessage.js",
-            "CookiesTable.js",
-            "DOMBreakpointsSidebarPane.js",
-            "DOMPresentationUtils.js",
-            "ElementsTreeOutline.js",
-            "FontView.js",
-            "ImageView.js",
-            "NativeBreakpointsSidebarPane.js",
-            "InspectElementModeController.js",
-            "ObjectPopoverHelper.js",
-            "ObjectPropertiesSection.js",
-            "SourceFrame.js",
-            "ResourceView.js",
-        ]
-    },
-    {
-        "name": "elements",
-        "dependencies": ["components"],
-        "sources": [
-            "CSSNamedFlowCollectionsView.js",
-            "CSSNamedFlowView.js",
-            "ElementsPanel.js",
-            "ElementsPanelDescriptor.js",
-            "EventListenersSidebarPane.js",
-            "MetricsSidebarPane.js",
-            "PropertiesSidebarPane.js",
-            "StylesSidebarPane.js",
-        ]
-    },
-    {
-        "name": "network",
-        "dependencies": ["components"],
-        "sources": [
-            "NetworkItemView.js",
-            "RequestCookiesView.js",
-            "RequestHeadersView.js",
-            "RequestHTMLView.js",
-            "RequestJSONView.js",
-            "RequestPreviewView.js",
-            "RequestResponseView.js",
-            "RequestTimingView.js",
-            "RequestView.js",
-            "ResourceWebSocketFrameView.js",
-            "NetworkPanel.js",
-            "NetworkPanelDescriptor.js",
-        ]
-    },
-    {
-        "name": "resources",
-        "dependencies": ["components"],
-        "sources": [
-            "ApplicationCacheItemsView.js",
-            "CookieItemsView.js",
-            "DatabaseQueryView.js",
-            "DatabaseTableView.js",
-            "DirectoryContentView.js",
-            "DOMStorageItemsView.js",
-            "FileContentView.js",
-            "FileSystemView.js",
-            "IndexedDBViews.js",
-            "ResourcesPanel.js",
-        ]
-    },
-    {
-        "name": "workers",
-        "dependencies": ["components"],
-        "sources": [
-            "WorkerManager.js",
-        ]
-    },
-    {
-        "name": "scripts",
-        "dependencies": ["components", "workers"],
-        "sources": [
-            "BreakpointsSidebarPane.js",
-            "CallStackSidebarPane.js",
-            "FilteredItemSelectionDialog.js",
-            "JavaScriptSourceFrame.js",
-            "NavigatorOverlayController.js",
-            "NavigatorView.js",
-            "RevisionHistoryView.js",
-            "ScopeChainSidebarPane.js",
-            "ScriptsNavigator.js",
-            "ScriptsPanel.js",
-            "ScriptsPanelDescriptor.js",
-            "ScriptsSearchScope.js",
-            "SnippetJavaScriptSourceFrame.js",
-            "StyleSheetOutlineDialog.js",
-            "TabbedEditorContainer.js",
-            "UISourceCodeFrame.js",
-            "WatchExpressionsSidebarPane.js",
-            "WorkersSidebarPane.js",
-        ]
-    },
-    {
-        "name": "console",
-        "dependencies": ["components"],
-        "sources": [
-            "ConsoleView.js",
-            "ConsolePanel.js",
-        ]
-    },
-    {
-        "name": "timeline",
-        "dependencies": ["components"],
-        "sources": [
-            "DOMCountersGraph.js",
-            "MemoryStatistics.js",
-            "NativeMemoryGraph.js",
-            "TimelineModel.js",
-            "TimelineOverviewPane.js",
-            "TimelinePanel.js",
-            "TimelinePanelDescriptor.js",
-            "TimelinePresentationModel.js",
-            "TimelineFrameController.js"
-        ]
-    },
-    {
-        "name": "audits",
-        "dependencies": ["components"],
-        "sources": [
-            "AuditCategories.js",
-            "AuditController.js",
-            "AuditFormatters.js",
-            "AuditLauncherView.js",
-            "AuditResultView.js",
-            "AuditRules.js",
-            "AuditsPanel.js",
-        ]
-    },
-    {
-        "name": "extensions",
-        "dependencies": ["components"],
-        "sources": [
-            "ExtensionAPI.js",
-            "ExtensionAuditCategory.js",
-            "ExtensionPanel.js",
-            "ExtensionRegistryStub.js",
-            "ExtensionServer.js",
-            "ExtensionView.js",
-        ]
-    },
-    {
-        "name": "settings",
-        "dependencies": ["components", "extensions"],
-        "sources": [
-            "SettingsScreen.js",
-            "OverridesView.js",
-        ]
-    },
-    {
-        "name": "tests",
-        "dependencies": ["components"],
-        "sources": [
-            "TestController.js",
-        ]
-    },
-    {
-        "name": "profiler",
-        "dependencies": ["components", "workers"],
-        "sources": [
-            "BottomUpProfileDataGridTree.js",
-            "CPUProfileView.js",
-            "CSSSelectorProfileView.js",
-            "FlameChart.js",
-            "HeapSnapshot.js",
-            "HeapSnapshotDataGrids.js",
-            "HeapSnapshotGridNodes.js",
-            "HeapSnapshotLoader.js",
-            "HeapSnapshotProxy.js",
-            "HeapSnapshotView.js",
-            "HeapSnapshotWorker.js",
-            "HeapSnapshotWorkerDispatcher.js",
-            "JSHeapSnapshot.js",
-            "NativeHeapSnapshot.js",
-            "NativeMemorySnapshotView.js",
-            "ProfileDataGridTree.js",
-            "ProfilesPanel.js",
-            "ProfilesPanelDescriptor.js",
-            "ProfileLauncherView.js",
-            "TopDownProfileDataGridTree.js",
-            "CanvasProfileView.js",
-        ]
-    },
-    {
-        "name": "host_stub",
-        "dependencies": ["components", "profiler", "timeline"],
-        "sources": [
-            "InspectorFrontendAPI.js",
-            "InspectorFrontendHostStub.js",
-        ]
-    }
-]
-
-modules_by_name = {}
-for module in modules:
-    modules_by_name[module["name"]] = module
-
-
-def dump_module(name, recursively, processed_modules):
-    if name in processed_modules:
-        return ""
-    processed_modules[name] = True
-    module = modules_by_name[name]
-    command = ""
-    if recursively:
-        for dependency in module["dependencies"]:
-            command += dump_module(dependency, recursively, processed_modules)
-    command += " \\\n    --module " + jsmodule_name_prefix + module["name"] + ":"
-    command += str(len(module["sources"]))
-    firstDependency = True
-    for dependency in module["dependencies"]:
-        if firstDependency:
-            command += ":"
-        else:
-            command += ","
-        firstDependency = False
-        command += jsmodule_name_prefix + dependency
-    for script in module["sources"]:
-        command += " \\\n        --js " + inspector_frontend_path + "/" + script
-    return command
-
-modules_dir = tempfile.mkdtemp()
-compiler_command = "java -jar ~/closure/compiler.jar --summary_detail_level 3 --compilation_level SIMPLE_OPTIMIZATIONS --warning_level VERBOSE --language_in ECMASCRIPT5 --accept_const_keyword --module_output_path_prefix %s/ \\\n" % modules_dir
-
-process_recursively = len(sys.argv) > 1
-if process_recursively:
-    module_name = sys.argv[1]
-    if module_name != "all":
-        modules = []
-        for i in range(1, len(sys.argv)):
-            modules.append(modules_by_name[sys.argv[i]])
-    for module in modules:
-        command = compiler_command
-        command += "    --externs " + inspector_frontend_path + "/externs.js"
-        command += dump_module(module["name"], True, {})
-        print "Compiling \"" + module["name"] + "\""
-        os.system(command)
-else:
-    command = compiler_command
-    command += "    --externs " + inspector_frontend_path + "/externs.js"
-    for module in modules:
-        command += dump_module(module["name"], False, {})
-    os.system(command)
-
-if not process_recursively:
-    print "Compiling InjectedScriptSource.js..."
-    os.system("echo \"var injectedScriptValue = \" > " + inspector_path + "/" + "InjectedScriptSourceTmp.js")
-    os.system("cat  " + inspector_path + "/" + "InjectedScriptSource.js" + " >> " + inspector_path + "/" + "InjectedScriptSourceTmp.js")
-    command = compiler_command
-    command += "    --externs " + inspector_path + "/" + "InjectedScriptExterns.js" + " \\\n"
-    command += "    --externs " + protocol_externs_path + " \\\n"
-    command += "    --module " + jsmodule_name_prefix + "injected_script" + ":" + "1" + " \\\n"
-    command += "        --js " + inspector_path + "/" + "InjectedScriptSourceTmp.js" + " \\\n"
-    command += "\n"
-    os.system(command)
-    os.system("rm " + inspector_path + "/" + "InjectedScriptSourceTmp.js")
-
-    print "Compiling InjectedScriptCanvasModuleSource.js..."
-    os.system("echo \"var injectedScriptCanvasModuleValue = \" > " + inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js")
-    os.system("cat  " + inspector_path + "/" + "InjectedScriptCanvasModuleSource.js" + " >> " + inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js")
-    command = compiler_command
-    command += "    --externs " + inspector_path + "/" + "InjectedScriptExterns.js" + " \\\n"
-    command += "    --externs " + protocol_externs_path + " \\\n"
-    command += "    --module " + jsmodule_name_prefix + "injected_script" + ":" + "1" + " \\\n"
-    command += "        --js " + inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js" + " \\\n"
-    command += "\n"
-    os.system(command)
-    os.system("rm " + inspector_path + "/" + "InjectedScriptCanvasModuleSourceTmp.js")
-
-shutil.rmtree(modules_dir)
-#os.system("rm " + protocol_externs_path)
diff --git a/inspector/front-end/ace/LICENSE.txt b/inspector/front-end/ace/LICENSE.txt
deleted file mode 100644
index 4760be2..0000000
--- a/inspector/front-end/ace/LICENSE.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright (c) 2010, Ajax.org B.V.
-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 Ajax.org B.V. 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 AJAX.ORG B.V. BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/inspector/generate_protocol_externs.py b/inspector/generate_protocol_externs.py
deleted file mode 100755
index beeaf54..0000000
--- a/inspector/generate_protocol_externs.py
+++ /dev/null
@@ -1,194 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 Google Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import re
-
-type_traits = {
-    "any": "*",
-    "string": "string",
-    "integer": "number",
-    "number": "number",
-    "boolean": "boolean",
-    "array": "Array.<*>",
-    "object": "Object",
-}
-
-ref_types = {}
-
-
-def full_qualified_type_id(domain_name, type_id):
-    if type_id.find(".") == -1:
-        return "%s.%s" % (domain_name, type_id)
-    return type_id
-
-
-def fix_camel_case(name):
-    refined = re.sub(r'-(\w)', lambda pat: pat.group(1).upper(), name)
-    refined = to_title_case(refined)
-    return re.sub(r'(?i)HTML|XML|WML|API', lambda pat: pat.group(0).upper(), refined)
-
-
-def to_title_case(name):
-    return name[:1].upper() + name[1:]
-
-
-def generate_enum(name, json):
-    enum_members = []
-    for member in json["enum"]:
-        enum_members.append("    %s: \"%s\"" % (fix_camel_case(member), member))
-    return "\n/** @enum {string} */\n%s = {\n%s\n};\n" % (name, (",\n".join(enum_members)))
-
-
-def param_type(domain_name, param):
-    if "type" in param:
-        if param["type"] == "array":
-            items = param["items"]
-            return "Array.<%s>" % param_type(domain_name, items)
-        else:
-            return type_traits[param["type"]]
-    if "$ref" in param:
-        type_id = full_qualified_type_id(domain_name, param["$ref"])
-        if type_id in ref_types:
-            return ref_types[type_id]
-        else:
-            print "Type not found: " + type_id
-            return "!! Type not found: " + type_id
-
-
-def generate_protocol_externs(output_path, input_path):
-    input_file = open(input_path, "r")
-    json_string = input_file.read()
-    json_string = json_string.replace(": true", ": True")
-    json_string = json_string.replace(": false", ": False")
-    json_api = eval(json_string)["domains"]
-
-    output_file = open(output_path, "w")
-
-    output_file.write(
-"""
-var Protocol = {};
-/** @typedef {string}*/
-Protocol.Error;
-""")
-
-    for domain in json_api:
-        domain_name = domain["domain"]
-        if "types" in domain:
-            for type in domain["types"]:
-                type_id = full_qualified_type_id(domain_name, type["id"])
-                ref_types[type_id] = "%sAgent.%s" % (domain_name, type["id"])
-
-    for domain in json_api:
-        domain_name = domain["domain"]
-        output_file.write("\n\n\nvar %sAgent = {};\n" % domain_name)
-        if "types" in domain:
-            for type in domain["types"]:
-                if type["type"] == "object":
-                    typedef_args = []
-                    if "properties" in type:
-                        for property in type["properties"]:
-                            suffix = ""
-                            if ("optional" in property):
-                                suffix = "|undefined"
-                            if "enum" in property:
-                                enum_name = "%sAgent.%s%s" % (domain_name, type["id"], to_title_case(property["name"]))
-                                output_file.write(generate_enum(enum_name, property))
-                                typedef_args.append("%s:(%s%s)" % (property["name"], enum_name, suffix))
-                            else:
-                                typedef_args.append("%s:(%s%s)" % (property["name"], param_type(domain_name, property), suffix))
-                    if (typedef_args):
-                        output_file.write("\n/** @typedef {{%s}|null} */\n%sAgent.%s;\n" % (", ".join(typedef_args), domain_name, type["id"]))
-                    else:
-                        output_file.write("\n/** @typedef {Object} */\n%sAgent.%s;\n" % (domain_name, type["id"]))
-                elif type["type"] == "string" and "enum" in type:
-                    output_file.write(generate_enum("%sAgent.%s" % (domain_name, type["id"]), type))
-                elif type["type"] == "array":
-                    suffix = ""
-                    if ("optional" in property):
-                        suffix = "|undefined"
-                    output_file.write("\n/** @typedef {Array.<%s>%s} */\n%sAgent.%s;\n" % (param_type(domain_name, type["items"]), suffix, domain_name, type["id"]))
-                else:
-                    output_file.write("\n/** @typedef {%s} */\n%sAgent.%s;\n" % (type_traits[type["type"]], domain_name, type["id"]))
-
-        if "commands" in domain:
-            for command in domain["commands"]:
-                output_file.write("\n/**\n")
-                params = []
-                if ("parameters" in command):
-                    for in_param in command["parameters"]:
-                        if ("optional" in in_param):
-                            params.append("opt_%s" % in_param["name"])
-                            output_file.write(" * @param {%s=} opt_%s\n" % (param_type(domain_name, in_param), in_param["name"]))
-                        else:
-                            params.append(in_param["name"])
-                            output_file.write(" * @param {%s} %s\n" % (param_type(domain_name, in_param), in_param["name"]))
-                returns = ["?Protocol.Error"]
-                if ("returns" in command):
-                    for out_param in command["returns"]:
-                        if ("optional" in out_param):
-                            returns.append("%s=" % param_type(domain_name, out_param))
-                        else:
-                            returns.append("%s" % param_type(domain_name, out_param))
-                output_file.write(" * @param {function(%s):void=} opt_callback\n" % ", ".join(returns))
-                output_file.write(" */\n")
-                params.append("opt_callback")
-                output_file.write("%sAgent.%s = function(%s) {}\n" % (domain_name, command["name"], ", ".join(params)))
-                output_file.write("/** @param {function(%s):void=} opt_callback */\n" % ", ".join(returns))
-                output_file.write("%sAgent.%s.invoke = function(obj, opt_callback) {}\n" % (domain_name, command["name"]))
-
-        output_file.write("/** @interface */\n")
-        output_file.write("%sAgent.Dispatcher = function() {};\n" % domain_name)
-        if "events" in domain:
-            for event in domain["events"]:
-                params = []
-                if ("parameters" in event):
-                    output_file.write("/**\n")
-                    for param in event["parameters"]:
-                        if ("optional" in param):
-                            params.append("opt_%s" % param["name"])
-                            output_file.write(" * @param {%s=} opt_%s\n" % (param_type(domain_name, param), param["name"]))
-                        else:
-                            params.append(param["name"])
-                            output_file.write(" * @param {%s} %s\n" % (param_type(domain_name, param), param["name"]))
-                    output_file.write(" */\n")
-                output_file.write("%sAgent.Dispatcher.prototype.%s = function(%s) {};\n" % (domain_name, event["name"], ", ".join(params)))
-        output_file.write("/**\n * @param {%sAgent.Dispatcher} dispatcher\n */\n" % domain_name)
-        output_file.write("InspectorBackend.register%sDispatcher = function(dispatcher) {}\n" % domain_name)
-    output_file.close()
-
-if __name__ == "__main__":
-    import sys
-    import os.path
-    program_name = os.path.basename(__file__)
-    if len(sys.argv) < 4 or sys.argv[1] != "-o":
-        sys.stderr.write("Usage: %s -o OUTPUT_FILE INPUT_FILE\n" % program_name)
-        exit(1)
-    output_path = sys.argv[2]
-    input_path = sys.argv[3]
-    generate_protocol_externs(output_path, input_path)
diff --git a/loader/appcache/DOMApplicationCache.idl b/loader/appcache/DOMApplicationCache.idl
index e387740..9a8f128 100644
--- a/loader/appcache/DOMApplicationCache.idl
+++ b/loader/appcache/DOMApplicationCache.idl
@@ -25,7 +25,6 @@
 
 [
     EventTarget,
-    OmitConstructor,
     DoNotCheckConstants
 ] interface DOMApplicationCache {
     // update status
@@ -37,10 +36,8 @@
     const unsigned short OBSOLETE = 5;
     readonly attribute unsigned short status;
 
-    void update()
-        raises(DOMException);
-    void swapCache()
-        raises(DOMException);
+    [RaisesException] void update();
+    [RaisesException] void swapCache();
     void abort();
 
     // events
@@ -54,13 +51,12 @@
     attribute EventListener onobsolete;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/modules/README b/modules/README
new file mode 100644
index 0000000..fb8e9c0
--- /dev/null
+++ b/modules/README
@@ -0,0 +1,9 @@
+This directory contains a copy of WebKit/WebCore IDL files.
+See the attached LICENSE-* files in this directory.
+
+Please do not modify the files here.  They are periodically copied
+using the script: $DART_ROOT/sdk/lib/html/scripts/idlsync.py
+
+The current version corresponds to:
+URL: http://src.chromium.org/multivm/trunk/webkit
+Current revision: 1184
diff --git a/Modules/battery/BatteryManager.idl b/modules/battery/BatteryManager.idl
similarity index 77%
rename from Modules/battery/BatteryManager.idl
rename to modules/battery/BatteryManager.idl
index ab2de39..1b90e50 100644
--- a/Modules/battery/BatteryManager.idl
+++ b/modules/battery/BatteryManager.idl
@@ -34,13 +34,12 @@
     attribute EventListener onlevelchange;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/Modules/battery/NavigatorBattery.idl b/modules/battery/NavigatorBattery.idl
similarity index 100%
rename from Modules/battery/NavigatorBattery.idl
rename to modules/battery/NavigatorBattery.idl
diff --git a/Modules/quota/StorageQuotaCallback.idl b/modules/donottrack/NavigatorDoNotTrack.idl
similarity index 90%
copy from Modules/quota/StorageQuotaCallback.idl
copy to modules/donottrack/NavigatorDoNotTrack.idl
index 502c106..446a46e 100644
--- a/Modules/quota/StorageQuotaCallback.idl
+++ b/modules/donottrack/NavigatorDoNotTrack.idl
@@ -29,8 +29,8 @@
  */
 
 [
-    Conditional=QUOTA,
-    Callback
-] interface StorageQuotaCallback {
-    boolean handleEvent(in unsigned long long grantedQuotaInBytes);
+    Supplemental=Navigator
+] interface NavigatorDoNotTrack {
+    [EnabledAtRuntime,TreatReturnedNullStringAs=Null] readonly attribute DOMString doNotTrack;
 };
+
diff --git a/Modules/encryptedmedia/MediaKeyMessageEvent.idl b/modules/encryptedmedia/MediaKeyMessageEvent.idl
similarity index 93%
rename from Modules/encryptedmedia/MediaKeyMessageEvent.idl
rename to modules/encryptedmedia/MediaKeyMessageEvent.idl
index d76b091..22a2720 100644
--- a/Modules/encryptedmedia/MediaKeyMessageEvent.idl
+++ b/modules/encryptedmedia/MediaKeyMessageEvent.idl
@@ -25,10 +25,10 @@
 
 interface [
     Conditional=ENCRYPTED_MEDIA_V2,
-    V8EnabledAtRuntime=encryptedMedia,
+    EnabledAtRuntime=encryptedMedia,
     ConstructorTemplate=Event 
 ] MediaKeyMessageEvent : Event {
     readonly attribute Uint8Array message;
-    readonly attribute [InitializedByEventConstructor] DOMString destinationURL;
+    [InitializedByEventConstructor] readonly attribute DOMString destinationURL;
 };
 
diff --git a/Modules/encryptedmedia/MediaKeyNeededEvent.idl b/modules/encryptedmedia/MediaKeyNeededEvent.idl
similarity index 97%
rename from Modules/encryptedmedia/MediaKeyNeededEvent.idl
rename to modules/encryptedmedia/MediaKeyNeededEvent.idl
index b3d407b..aeba4e4 100644
--- a/Modules/encryptedmedia/MediaKeyNeededEvent.idl
+++ b/modules/encryptedmedia/MediaKeyNeededEvent.idl
@@ -25,7 +25,7 @@
 
 interface [
     Conditional=ENCRYPTED_MEDIA_V2,
-    V8EnabledAtRuntime=encryptedMedia,
+    EnabledAtRuntime=encryptedMedia,
     ConstructorTemplate=Event 
 ] MediaKeyNeededEvent : Event {
     readonly attribute Uint8Array initData;
diff --git a/Modules/encryptedmedia/MediaKeySession.idl b/modules/encryptedmedia/MediaKeySession.idl
similarity index 69%
rename from Modules/encryptedmedia/MediaKeySession.idl
rename to modules/encryptedmedia/MediaKeySession.idl
index c4c9fc2..fec26db 100644
--- a/Modules/encryptedmedia/MediaKeySession.idl
+++ b/modules/encryptedmedia/MediaKeySession.idl
@@ -25,7 +25,7 @@
 
 interface [
     Conditional=ENCRYPTED_MEDIA_V2,
-    V8EnabledAtRuntime=encryptedMedia,
+    EnabledAtRuntime=encryptedMedia,
     EventTarget,
 ] MediaKeySession {
     // error state
@@ -36,22 +36,20 @@
     readonly attribute DOMString sessionId;
 
     // session operations
-    void update(in Uint8Array key)
-        raises(DOMException);
+    [RaisesException] void update(Uint8Array key);
     void close();
     
     // EventListeners
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyadded;
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeyerror;
-    attribute [V8EnabledAtRuntime=encryptedMedia] EventListener onwebkitkeymessage;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyadded;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeyerror;
+    [EnabledAtRuntime=encryptedMedia] attribute EventListener onwebkitkeymessage;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/encryptedmedia/MediaKeys.idl b/modules/encryptedmedia/MediaKeys.idl
similarity index 82%
rename from Modules/encryptedmedia/MediaKeys.idl
rename to modules/encryptedmedia/MediaKeys.idl
index 773501a..a9cc30e 100644
--- a/Modules/encryptedmedia/MediaKeys.idl
+++ b/modules/encryptedmedia/MediaKeys.idl
@@ -25,12 +25,11 @@
  
 interface [
     Conditional=ENCRYPTED_MEDIA_V2,
-    V8EnabledAtRuntime=encryptedMedia,
-    Constructor(in DOMString keySystem),
-    ConstructorRaisesException,
+    EnabledAtRuntime=encryptedMedia,
+    Constructor(DOMString keySystem),
+    RaisesException
 ] MediaKeys {
-    [CallWith=ScriptExecutionContext] MediaKeySession createSession(in [Optional=DefaultIsUndefined] DOMString type, in [Optional=DefaultIsUndefined] Uint8Array initData)
-        raises(DOMException);
+    [CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession([Optional=DefaultIsUndefined] DOMString type, [Optional=DefaultIsUndefined] Uint8Array initData);
 
     readonly attribute DOMString keySystem;
 };
diff --git a/Modules/filesystem/DOMFileSystem.idl b/modules/filesystem/DOMFileSystem.idl
similarity index 98%
rename from Modules/filesystem/DOMFileSystem.idl
rename to modules/filesystem/DOMFileSystem.idl
index e5d0762..e6ab12f 100644
--- a/Modules/filesystem/DOMFileSystem.idl
+++ b/modules/filesystem/DOMFileSystem.idl
@@ -30,7 +30,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ActiveDOMObject
 ] interface DOMFileSystem {
     readonly attribute DOMString name;
diff --git a/Modules/filesystem/DOMFileSystemSync.idl b/modules/filesystem/DOMFileSystemSync.idl
similarity index 96%
rename from Modules/filesystem/DOMFileSystemSync.idl
rename to modules/filesystem/DOMFileSystemSync.idl
index 9d202d2..6583484 100644
--- a/Modules/filesystem/DOMFileSystemSync.idl
+++ b/modules/filesystem/DOMFileSystemSync.idl
@@ -28,9 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM
-] interface DOMFileSystemSync {
+interface DOMFileSystemSync {
     readonly attribute DOMString name;
     readonly attribute DirectoryEntrySync root;
 };
diff --git a/Modules/filesystem/DOMWindowFileSystem.idl b/modules/filesystem/DOMWindowFileSystem.idl
similarity index 77%
rename from Modules/filesystem/DOMWindowFileSystem.idl
rename to modules/filesystem/DOMWindowFileSystem.idl
index 35ca800..9f79514 100644
--- a/Modules/filesystem/DOMWindowFileSystem.idl
+++ b/modules/filesystem/DOMWindowFileSystem.idl
@@ -25,15 +25,14 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Supplemental=DOMWindow
 ] interface DOMWindowFileSystem {
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [V8EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(in unsigned short type, in long long size,
-            in [Callback] FileSystemCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
-    [V8EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(in DOMString url,
-            in [Callback] EntryCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
+    [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size,
+            [Callback] FileSystemCallback successCallback, [Callback, Optional] ErrorCallback errorCallback);
+    [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url,
+            [Callback] EntryCallback successCallback, [Callback, Optional] ErrorCallback errorCallback);
 };
 
diff --git a/Modules/filesystem/DataTransferItemFileSystem.idl b/modules/filesystem/DataTransferItemFileSystem.idl
similarity index 98%
rename from Modules/filesystem/DataTransferItemFileSystem.idl
rename to modules/filesystem/DataTransferItemFileSystem.idl
index cc9dcab..dedcde7 100644
--- a/Modules/filesystem/DataTransferItemFileSystem.idl
+++ b/modules/filesystem/DataTransferItemFileSystem.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Supplemental=DataTransferItem
 ] interface DataTransferItemFileSystem {
     [CallWith=ScriptExecutionContext] Entry webkitGetAsEntry();
diff --git a/Modules/filesystem/DOMFileSystemSync.idl b/modules/filesystem/DirectoryEntry.idl
similarity index 70%
copy from Modules/filesystem/DOMFileSystemSync.idl
copy to modules/filesystem/DirectoryEntry.idl
index 9d202d2..42ed895 100644
--- a/Modules/filesystem/DOMFileSystemSync.idl
+++ b/modules/filesystem/DirectoryEntry.idl
@@ -28,9 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM
-] interface DOMFileSystemSync {
-    readonly attribute DOMString name;
-    readonly attribute DirectoryEntrySync root;
+interface DirectoryEntry : Entry {
+    DirectoryReader createReader();
+    void getFile([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, [Optional] Dictionary options, [Optional, Callback] EntryCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void getDirectory([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, [Optional] Dictionary options, [Optional, Callback] EntryCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void removeRecursively([Callback] VoidCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
 };
diff --git a/Modules/filesystem/DOMFileSystemSync.idl b/modules/filesystem/DirectoryEntrySync.idl
similarity index 78%
copy from Modules/filesystem/DOMFileSystemSync.idl
copy to modules/filesystem/DirectoryEntrySync.idl
index 9d202d2..2301dfc 100644
--- a/Modules/filesystem/DOMFileSystemSync.idl
+++ b/modules/filesystem/DirectoryEntrySync.idl
@@ -28,9 +28,9 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM
-] interface DOMFileSystemSync {
-    readonly attribute DOMString name;
-    readonly attribute DirectoryEntrySync root;
+interface DirectoryEntrySync : EntrySync {
+    [RaisesException] DirectoryReaderSync createReader();
+    [RaisesException] FileEntrySync getFile([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, Dictionary flags);
+    [RaisesException] DirectoryEntrySync getDirectory([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString path, Dictionary flags);
+    [RaisesException] void removeRecursively();
 };
diff --git a/Modules/filesystem/Metadata.idl b/modules/filesystem/DirectoryReader.idl
similarity index 91%
copy from Modules/filesystem/Metadata.idl
copy to modules/filesystem/DirectoryReader.idl
index 92a4f19..1dd07c6 100644
--- a/Modules/filesystem/Metadata.idl
+++ b/modules/filesystem/DirectoryReader.idl
@@ -29,9 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ImplementationLacksVTable
-] interface Metadata {
-    readonly attribute Date modificationTime;
-    readonly attribute unsigned long long size;
+] interface DirectoryReader {
+    void readEntries([Callback] EntriesCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
 };
diff --git a/Modules/filesystem/DirectoryReaderSync.idl b/modules/filesystem/DirectoryReaderSync.idl
similarity index 94%
rename from Modules/filesystem/DirectoryReaderSync.idl
rename to modules/filesystem/DirectoryReaderSync.idl
index c11861d..bc2a9bd 100644
--- a/Modules/filesystem/DirectoryReaderSync.idl
+++ b/modules/filesystem/DirectoryReaderSync.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ImplementationLacksVTable
 ] interface DirectoryReaderSync {
-    EntryArraySync readEntries() raises (FileException);
+    [RaisesException] EntryArraySync readEntries();
 };
diff --git a/Modules/filesystem/EntriesCallback.idl b/modules/filesystem/EntriesCallback.idl
similarity index 95%
rename from Modules/filesystem/EntriesCallback.idl
rename to modules/filesystem/EntriesCallback.idl
index 26f1a21..ade0171 100644
--- a/Modules/filesystem/EntriesCallback.idl
+++ b/modules/filesystem/EntriesCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface EntriesCallback {
-    boolean handleEvent(in EntryArray entries);
+    boolean handleEvent(EntryArray entries);
 };
diff --git a/Modules/filesystem/Entry.idl b/modules/filesystem/Entry.idl
similarity index 68%
rename from Modules/filesystem/Entry.idl
rename to modules/filesystem/Entry.idl
index d9345f3..32f2e9e 100644
--- a/Modules/filesystem/Entry.idl
+++ b/modules/filesystem/Entry.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     CustomToJSObject
 ] interface Entry {
     readonly attribute boolean isFile;
@@ -38,10 +37,10 @@
     readonly attribute DOMString fullPath;
     readonly attribute DOMFileSystem filesystem;
 
-    void getMetadata(in [Callback] MetadataCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void moveTo(in DirectoryEntry parent, in [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name, in [Optional, Callback] EntryCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void copyTo(in DirectoryEntry parent, in [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name, in [Optional, Callback] EntryCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
+    void getMetadata([Callback] MetadataCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void moveTo(DirectoryEntry parent, [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name, [Optional, Callback] EntryCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void copyTo(DirectoryEntry parent, [Optional, TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name, [Optional, Callback] EntryCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
     DOMString toURL();
-    void remove(in [Callback] VoidCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
-    void getParent(in [Optional, Callback] EntryCallback successCallback, in [Optional, Callback] ErrorCallback errorCallback);
+    void remove([Callback] VoidCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void getParent([Optional, Callback] EntryCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
 };
diff --git a/Modules/filesystem/EntryArray.idl b/modules/filesystem/EntryArray.idl
similarity index 95%
rename from Modules/filesystem/EntryArray.idl
rename to modules/filesystem/EntryArray.idl
index d0ef36e..03fd973 100644
--- a/Modules/filesystem/EntryArray.idl
+++ b/modules/filesystem/EntryArray.idl
@@ -29,10 +29,9 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     IndexedGetter,
     ImplementationLacksVTable
 ] interface EntryArray {
     readonly attribute unsigned long length;
-    Entry item(in [IsIndex] unsigned long index);
+    Entry item([IsIndex] unsigned long index);
 };
diff --git a/Modules/filesystem/EntryArraySync.idl b/modules/filesystem/EntryArraySync.idl
similarity index 95%
rename from Modules/filesystem/EntryArraySync.idl
rename to modules/filesystem/EntryArraySync.idl
index 527ead0..9b85156 100644
--- a/Modules/filesystem/EntryArraySync.idl
+++ b/modules/filesystem/EntryArraySync.idl
@@ -29,10 +29,9 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     IndexedGetter,
     ImplementationLacksVTable
 ] interface EntryArraySync {
     readonly attribute unsigned long length;
-    EntrySync item(in [IsIndex] unsigned long index);
+    EntrySync item([IsIndex] unsigned long index);
 };
diff --git a/Modules/filesystem/EntryCallback.idl b/modules/filesystem/EntryCallback.idl
similarity index 95%
rename from Modules/filesystem/EntryCallback.idl
rename to modules/filesystem/EntryCallback.idl
index b4db4db..94728d8 100644
--- a/Modules/filesystem/EntryCallback.idl
+++ b/modules/filesystem/EntryCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface EntryCallback {
-    boolean handleEvent(in Entry entry);
+    boolean handleEvent(Entry entry);
 };
diff --git a/Modules/filesystem/EntrySync.idl b/modules/filesystem/EntrySync.idl
similarity index 81%
rename from Modules/filesystem/EntrySync.idl
rename to modules/filesystem/EntrySync.idl
index 8370ce4..1131652 100644
--- a/Modules/filesystem/EntrySync.idl
+++ b/modules/filesystem/EntrySync.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     CustomToJSObject
 ] interface EntrySync {
     readonly attribute boolean isFile;
@@ -38,10 +37,10 @@
     readonly attribute DOMString fullPath;
     readonly attribute DOMFileSystemSync filesystem;
 
-    Metadata getMetadata() raises (FileException);
-    EntrySync moveTo(in DirectoryEntrySync parent, in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name) raises (FileException);
-    EntrySync copyTo(in DirectoryEntrySync parent, in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name) raises (FileException);
+    [RaisesException] Metadata getMetadata();
+    [RaisesException] EntrySync moveTo(DirectoryEntrySync parent, [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name);
+    [RaisesException] EntrySync copyTo(DirectoryEntrySync parent, [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString name);
     DOMString toURL();
-    void remove() raises (FileException);
+    [RaisesException] void remove();
     DirectoryEntrySync getParent();
 };
diff --git a/Modules/filesystem/ErrorCallback.idl b/modules/filesystem/ErrorCallback.idl
similarity index 95%
rename from Modules/filesystem/ErrorCallback.idl
rename to modules/filesystem/ErrorCallback.idl
index f840a50..0a74a67 100644
--- a/Modules/filesystem/ErrorCallback.idl
+++ b/modules/filesystem/ErrorCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface ErrorCallback {
-    boolean handleEvent(in FileError error);
+    boolean handleEvent(FileError error);
 };
diff --git a/Modules/filesystem/FileCallback.idl b/modules/filesystem/FileCallback.idl
similarity index 95%
rename from Modules/filesystem/FileCallback.idl
rename to modules/filesystem/FileCallback.idl
index 00beba8..f51738c 100644
--- a/Modules/filesystem/FileCallback.idl
+++ b/modules/filesystem/FileCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface FileCallback {
-    boolean handleEvent(in File file);
+    boolean handleEvent(File file);
 };
diff --git a/Modules/filesystem/DOMFileSystemSync.idl b/modules/filesystem/FileEntry.idl
similarity index 85%
copy from Modules/filesystem/DOMFileSystemSync.idl
copy to modules/filesystem/FileEntry.idl
index 9d202d2..44419ea 100644
--- a/Modules/filesystem/DOMFileSystemSync.idl
+++ b/modules/filesystem/FileEntry.idl
@@ -28,9 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM
-] interface DOMFileSystemSync {
-    readonly attribute DOMString name;
-    readonly attribute DirectoryEntrySync root;
+interface FileEntry : Entry {
+    void createWriter([Callback] FileWriterCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
+    void file([Callback] FileCallback successCallback, [Optional, Callback] ErrorCallback errorCallback);
 };
diff --git a/Modules/filesystem/FileSystemCallback.idl b/modules/filesystem/FileEntrySync.idl
similarity index 91%
copy from Modules/filesystem/FileSystemCallback.idl
copy to modules/filesystem/FileEntrySync.idl
index c8006b2..67869b2 100644
--- a/Modules/filesystem/FileSystemCallback.idl
+++ b/modules/filesystem/FileEntrySync.idl
@@ -28,9 +28,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM,
-    Callback
-] interface FileSystemCallback {
-    boolean handleEvent(in DOMFileSystem fileSystem);
+interface FileEntrySync : EntrySync {
+    [RaisesException] File file();
+    [RaisesException] FileWriterSync createWriter();
 };
diff --git a/Modules/filesystem/FileSystemCallback.idl b/modules/filesystem/FileSystemCallback.idl
similarity index 94%
rename from Modules/filesystem/FileSystemCallback.idl
rename to modules/filesystem/FileSystemCallback.idl
index c8006b2..c4eb76b 100644
--- a/Modules/filesystem/FileSystemCallback.idl
+++ b/modules/filesystem/FileSystemCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface FileSystemCallback {
-    boolean handleEvent(in DOMFileSystem fileSystem);
+    boolean handleEvent(DOMFileSystem fileSystem);
 };
diff --git a/Modules/filesystem/FileWriter.idl b/modules/filesystem/FileWriter.idl
similarity index 78%
rename from Modules/filesystem/FileWriter.idl
rename to modules/filesystem/FileWriter.idl
index 113f367..ed15ae0 100644
--- a/Modules/filesystem/FileWriter.idl
+++ b/modules/filesystem/FileWriter.idl
@@ -30,7 +30,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ActiveDOMObject,
     CallWith=ScriptExecutionContext,
     EventTarget
@@ -42,11 +41,11 @@
     readonly attribute unsigned short readyState;
 
     // async write/modify methods
-    void write(in Blob data) raises (FileException);
-    void seek(in long long position) raises (FileException);
-    void truncate(in long long size) raises (FileException);
+    [RaisesException] void write(Blob data);
+    [RaisesException] void seek(long long position);
+    [RaisesException] void truncate(long long size);
 
-    void abort() raises (FileException);
+    [RaisesException] void abort();
 
     readonly attribute FileError error;
     readonly attribute long long position;
@@ -60,12 +59,11 @@
              attribute EventListener onwriteend;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/filesystem/FileWriterCallback.idl b/modules/filesystem/FileWriterCallback.idl
similarity index 95%
rename from Modules/filesystem/FileWriterCallback.idl
rename to modules/filesystem/FileWriterCallback.idl
index 9c920a4..2db5dd7 100644
--- a/Modules/filesystem/FileWriterCallback.idl
+++ b/modules/filesystem/FileWriterCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface FileWriterCallback {
-    boolean handleEvent(in FileWriter fileWriter);
+    boolean handleEvent(FileWriter fileWriter);
 };
diff --git a/Modules/filesystem/FileWriterSync.idl b/modules/filesystem/FileWriterSync.idl
similarity index 87%
rename from Modules/filesystem/FileWriterSync.idl
rename to modules/filesystem/FileWriterSync.idl
index 3408bd2..8266850 100644
--- a/Modules/filesystem/FileWriterSync.idl
+++ b/modules/filesystem/FileWriterSync.idl
@@ -28,13 +28,11 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=FILE_SYSTEM
-] interface FileWriterSync {
+interface FileWriterSync {
     // synchronous write/modify methods
-    void write(in Blob data) raises (FileException);
-    void seek(in long long position) raises (FileException);
-    void truncate(in long long size) raises (FileException);
+    [RaisesException] void write(Blob data);
+    [RaisesException] void seek(long long position);
+    [RaisesException] void truncate(long long size);
 
     readonly attribute long long position;
     readonly attribute long long length;
diff --git a/Modules/filesystem/HTMLInputElementFileSystem.idl b/modules/filesystem/HTMLInputElementFileSystem.idl
similarity index 91%
rename from Modules/filesystem/HTMLInputElementFileSystem.idl
rename to modules/filesystem/HTMLInputElementFileSystem.idl
index 8fa2629..a0d8ac6 100644
--- a/Modules/filesystem/HTMLInputElementFileSystem.idl
+++ b/modules/filesystem/HTMLInputElementFileSystem.idl
@@ -29,9 +29,8 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Supplemental=HTMLInputElement
 ] interface HTMLInputElementFileSystem {
-    [V8EnabledAtRuntime=FileSystem,CallWith=ScriptExecutionContext] readonly attribute EntryArray webkitEntries;
+    [EnabledAtRuntime=FileSystem,CallWith=ScriptExecutionContext] readonly attribute EntryArray webkitEntries;
 };
 
diff --git a/Modules/filesystem/Metadata.idl b/modules/filesystem/Metadata.idl
similarity index 98%
rename from Modules/filesystem/Metadata.idl
rename to modules/filesystem/Metadata.idl
index 92a4f19..6816231 100644
--- a/Modules/filesystem/Metadata.idl
+++ b/modules/filesystem/Metadata.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ImplementationLacksVTable
 ] interface Metadata {
     readonly attribute Date modificationTime;
diff --git a/Modules/filesystem/MetadataCallback.idl b/modules/filesystem/MetadataCallback.idl
similarity index 95%
rename from Modules/filesystem/MetadataCallback.idl
rename to modules/filesystem/MetadataCallback.idl
index 86c5cc6..70dd993 100644
--- a/Modules/filesystem/MetadataCallback.idl
+++ b/modules/filesystem/MetadataCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Callback
 ] interface MetadataCallback {
-    boolean handleEvent(in Metadata metadata);
+    boolean handleEvent(Metadata metadata);
 };
diff --git a/Modules/filesystem/WorkerContextFileSystem.idl b/modules/filesystem/WorkerContextFileSystem.idl
similarity index 63%
rename from Modules/filesystem/WorkerContextFileSystem.idl
rename to modules/filesystem/WorkerContextFileSystem.idl
index 645e347..fecde24 100644
--- a/Modules/filesystem/WorkerContextFileSystem.idl
+++ b/modules/filesystem/WorkerContextFileSystem.idl
@@ -25,18 +25,17 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     Supplemental=WorkerContext
 ] interface WorkerContextFileSystem {
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [V8EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(in unsigned short type, in long long size, in [Callback, Optional] FileSystemCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
-    [V8EnabledAtRuntime=FileSystem] DOMFileSystemSync webkitRequestFileSystemSync(in unsigned short type, in long long size) raises (FileException);
-    [V8EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(in DOMString url, in [Callback] EntryCallback successCallback, in [Callback, Optional] ErrorCallback errorCallback);
-    [V8EnabledAtRuntime=FileSystem] EntrySync webkitResolveLocalFileSystemSyncURL(in DOMString url) raises (FileException);
+    [EnabledAtRuntime=FileSystem] void webkitRequestFileSystem(unsigned short type, long long size, [Callback, Optional] FileSystemCallback successCallback, [Callback, Optional] ErrorCallback errorCallback);
+    [EnabledAtRuntime=FileSystem, RaisesException] DOMFileSystemSync webkitRequestFileSystemSync(unsigned short type, long long size);
+    [EnabledAtRuntime=FileSystem] void webkitResolveLocalFileSystemURL(DOMString url, [Callback] EntryCallback successCallback, [Callback, Optional] ErrorCallback errorCallback);
+    [EnabledAtRuntime=FileSystem, RaisesException] EntrySync webkitResolveLocalFileSystemSyncURL(DOMString url);
 
-    [V8EnabledAtRuntime=FileSystem] attribute FileErrorConstructor FileError;
-    [V8EnabledAtRuntime=FileSystem] attribute FileExceptionConstructor FileException;
+    [EnabledAtRuntime=FileSystem] attribute FileErrorConstructor FileError;
+    [EnabledAtRuntime=FileSystem] attribute FileExceptionConstructor FileException;
 };
 
diff --git a/Modules/gamepad/Gamepad.idl b/modules/gamepad/Gamepad.idl
similarity index 100%
rename from Modules/gamepad/Gamepad.idl
rename to modules/gamepad/Gamepad.idl
diff --git a/Modules/gamepad/GamepadList.idl b/modules/gamepad/GamepadList.idl
similarity index 95%
rename from Modules/gamepad/GamepadList.idl
rename to modules/gamepad/GamepadList.idl
index 727cdc8..70442ac 100644
--- a/Modules/gamepad/GamepadList.idl
+++ b/modules/gamepad/GamepadList.idl
@@ -29,6 +29,6 @@
     ImplementationLacksVTable
 ] interface GamepadList {
     readonly attribute unsigned long length;
-    Gamepad item(in [Optional=DefaultIsUndefined] unsigned long index);
+    Gamepad item([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/Modules/gamepad/NavigatorGamepad.idl b/modules/gamepad/NavigatorGamepad.idl
similarity index 93%
rename from Modules/gamepad/NavigatorGamepad.idl
rename to modules/gamepad/NavigatorGamepad.idl
index fdf17b7..98f4677 100644
--- a/Modules/gamepad/NavigatorGamepad.idl
+++ b/modules/gamepad/NavigatorGamepad.idl
@@ -21,6 +21,6 @@
     Conditional=GAMEPAD,
     Supplemental=Navigator
 ] interface NavigatorGamepad {
-    [V8EnabledAtRuntime] GamepadList webkitGetGamepads();
+    [EnabledAtRuntime] GamepadList webkitGetGamepads();
 };
 
diff --git a/Modules/geolocation/Coordinates.idl b/modules/geolocation/Coordinates.idl
similarity index 96%
rename from Modules/geolocation/Coordinates.idl
rename to modules/geolocation/Coordinates.idl
index 0fb9781..38b58e4 100644
--- a/Modules/geolocation/Coordinates.idl
+++ b/modules/geolocation/Coordinates.idl
@@ -24,8 +24,6 @@
  */
 
 [
-    Conditional=GEOLOCATION,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface Coordinates {
     readonly attribute double latitude;
diff --git a/Modules/geolocation/Geolocation.idl b/modules/geolocation/Geolocation.idl
similarity index 72%
rename from Modules/geolocation/Geolocation.idl
rename to modules/geolocation/Geolocation.idl
index 16bd523..25efdef 100644
--- a/Modules/geolocation/Geolocation.idl
+++ b/modules/geolocation/Geolocation.idl
@@ -25,17 +25,15 @@
 
 // http://www.w3.org/TR/geolocation-API/#geolocation_interface
 [
-    Conditional=GEOLOCATION,
-    OmitConstructor
 ] interface Geolocation {
-    [Custom] void getCurrentPosition(in PositionCallback successCallback,
-                                     in [Optional] PositionErrorCallback errorCallback,
-                                     in [Optional] PositionOptions options);
+    [Custom] void getCurrentPosition(PositionCallback successCallback,
+                                     [Optional] PositionErrorCallback errorCallback,
+                                     [Optional] PositionOptions options);
 
-    [Custom] long watchPosition(in PositionCallback successCallback,
-                                in [Optional] PositionErrorCallback errorCallback,
-                                in [Optional] PositionOptions options);
+    [Custom] long watchPosition(PositionCallback successCallback,
+                                [Optional] PositionErrorCallback errorCallback,
+                                [Optional] PositionOptions options);
 
-    void clearWatch(in long watchID);
+    void clearWatch(long watchID);
 };
 
diff --git a/Modules/geolocation/Geoposition.idl b/modules/geolocation/Geoposition.idl
similarity index 96%
rename from Modules/geolocation/Geoposition.idl
rename to modules/geolocation/Geoposition.idl
index 3f00092..d2d317d 100644
--- a/Modules/geolocation/Geoposition.idl
+++ b/modules/geolocation/Geoposition.idl
@@ -24,8 +24,6 @@
  */
 
 [
-    Conditional=GEOLOCATION,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface Geoposition {
     readonly attribute Coordinates coords;
diff --git a/Modules/geolocation/NavigatorGeolocation.idl b/modules/geolocation/NavigatorGeolocation.idl
similarity index 90%
rename from Modules/geolocation/NavigatorGeolocation.idl
rename to modules/geolocation/NavigatorGeolocation.idl
index c8c5cb2..b6471d0 100644
--- a/Modules/geolocation/NavigatorGeolocation.idl
+++ b/modules/geolocation/NavigatorGeolocation.idl
@@ -18,9 +18,8 @@
  */
 
 [
-    Conditional=GEOLOCATION,
     Supplemental=Navigator
 ] interface NavigatorGeolocation {
-    [V8EnabledAtRuntime] readonly attribute Geolocation geolocation;
+    [EnabledAtRuntime] readonly attribute Geolocation geolocation;
 };
 
diff --git a/Modules/geolocation/PositionCallback.idl b/modules/geolocation/PositionCallback.idl
similarity index 94%
rename from Modules/geolocation/PositionCallback.idl
rename to modules/geolocation/PositionCallback.idl
index de2eeb3..d754273 100644
--- a/Modules/geolocation/PositionCallback.idl
+++ b/modules/geolocation/PositionCallback.idl
@@ -23,8 +23,7 @@
  */
 
 [
-    Conditional=GEOLOCATION,
     Callback
 ] interface PositionCallback {
-    boolean handleEvent(in Geoposition position);
+    boolean handleEvent(Geoposition position);
 };
diff --git a/Modules/geolocation/PositionError.idl b/modules/geolocation/PositionError.idl
similarity index 97%
rename from Modules/geolocation/PositionError.idl
rename to modules/geolocation/PositionError.idl
index 4251896..2f0b98a 100644
--- a/Modules/geolocation/PositionError.idl
+++ b/modules/geolocation/PositionError.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    Conditional=GEOLOCATION,
     ImplementationLacksVTable
 ] interface PositionError {
     readonly attribute unsigned short code;
diff --git a/Modules/geolocation/PositionErrorCallback.idl b/modules/geolocation/PositionErrorCallback.idl
similarity index 94%
rename from Modules/geolocation/PositionErrorCallback.idl
rename to modules/geolocation/PositionErrorCallback.idl
index 8d78488..38eb402 100644
--- a/Modules/geolocation/PositionErrorCallback.idl
+++ b/modules/geolocation/PositionErrorCallback.idl
@@ -23,8 +23,7 @@
  */
 
 [
-    Conditional=GEOLOCATION,
     Callback
 ] interface PositionErrorCallback {
-    boolean handleEvent(in PositionError error);
+    boolean handleEvent(PositionError error);
 };
diff --git a/Modules/indexeddb/DOMWindowIndexedDatabase.idl b/modules/indexeddb/DOMWindowIndexedDatabase.idl
similarity index 92%
rename from Modules/indexeddb/DOMWindowIndexedDatabase.idl
rename to modules/indexeddb/DOMWindowIndexedDatabase.idl
index 02e2397..c1a2e29 100644
--- a/Modules/indexeddb/DOMWindowIndexedDatabase.idl
+++ b/modules/indexeddb/DOMWindowIndexedDatabase.idl
@@ -27,7 +27,7 @@
 [
     Supplemental=DOMWindow
 ] interface DOMWindowIndexedDatabase {
-    [ImplementedAs=indexedDB,V8MeasureAs=PrefixedIndexedDB] readonly attribute IDBFactory webkitIndexedDB;
+    [ImplementedAs=indexedDB,MeasureAs=PrefixedIndexedDB] readonly attribute IDBFactory webkitIndexedDB;
 
     attribute IDBCursorConstructor webkitIDBCursor;
     attribute IDBDatabaseConstructor webkitIDBDatabase;
@@ -38,7 +38,7 @@
     attribute IDBRequestConstructor webkitIDBRequest;
     attribute IDBTransactionConstructor webkitIDBTransaction;
 
-    [V8MeasureAs=UnprefixedIndexedDB] readonly attribute IDBFactory indexedDB;
+    [MeasureAs=UnprefixedIndexedDB] readonly attribute IDBFactory indexedDB;
 
     attribute IDBCursorConstructor IDBCursor;
     attribute IDBCursorWithValueConstructor IDBCursorWithValue;
diff --git a/Modules/indexeddb/IDBAny.idl b/modules/indexeddb/IDBAny.idl
similarity index 98%
rename from Modules/indexeddb/IDBAny.idl
rename to modules/indexeddb/IDBAny.idl
index 7960e8f..f742222 100644
--- a/Modules/indexeddb/IDBAny.idl
+++ b/modules/indexeddb/IDBAny.idl
@@ -25,7 +25,7 @@
 
 [
     CustomToJSObject,
-    V8NoWrapperCache
+    NoWrapperCache
 ] interface IDBAny {
     // This space is intentionally left blank.
 };
diff --git a/Modules/indexeddb/IDBCursor.idl b/modules/indexeddb/IDBCursor.idl
similarity index 84%
rename from Modules/indexeddb/IDBCursor.idl
rename to modules/indexeddb/IDBCursor.idl
index 9ecaa8a..f21097b 100644
--- a/Modules/indexeddb/IDBCursor.idl
+++ b/modules/indexeddb/IDBCursor.idl
@@ -30,12 +30,8 @@
     readonly attribute any primaryKey;
     readonly attribute IDBAny source;
 
-    [CallWith=ScriptState] IDBRequest update(in any value)
-        raises (DOMException);
-    void advance(in [EnforceRange] unsigned long count)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext, ImplementedAs=continueFunction] void continue(in [Optional] any key)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction] IDBRequest delete()
-        raises (DOMException);
+    [CallWith=ScriptState, RaisesException] IDBRequest update(any value);
+    [RaisesException] void advance([EnforceRange] unsigned long count);
+    [CallWith=ScriptExecutionContext, ImplementedAs=continueFunction, RaisesException] void continue([Optional] any key);
+    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete();
 };
diff --git a/Modules/indexeddb/IDBCursorWithValue.idl b/modules/indexeddb/IDBCursorWithValue.idl
similarity index 100%
rename from Modules/indexeddb/IDBCursorWithValue.idl
rename to modules/indexeddb/IDBCursorWithValue.idl
diff --git a/Modules/indexeddb/IDBDatabase.idl b/modules/indexeddb/IDBDatabase.idl
similarity index 61%
rename from Modules/indexeddb/IDBDatabase.idl
rename to modules/indexeddb/IDBDatabase.idl
index a9f5440..908f700 100644
--- a/Modules/indexeddb/IDBDatabase.idl
+++ b/modules/indexeddb/IDBDatabase.idl
@@ -36,26 +36,20 @@
     attribute EventListener onerror;
     attribute EventListener onversionchange;
 
-    IDBObjectStore createObjectStore(in DOMString name, in [Optional] Dictionary options)
-        raises (DOMException);
-    void deleteObjectStore(in DOMString name)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBTransaction transaction(in DOMStringList storeNames, in [Optional=DefaultIsNullString] DOMString mode)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBTransaction transaction(in sequence<DOMString> storeNames, in [Optional=DefaultIsNullString] DOMString mode)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBTransaction transaction(in DOMString storeName, in [Optional=DefaultIsNullString] DOMString mode)
-        raises (DOMException);
+    [RaisesException] IDBObjectStore createObjectStore(DOMString name, [Optional] Dictionary options);
+    [RaisesException] void deleteObjectStore(DOMString name);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(DOMStringList storeNames, [Optional=DefaultIsNullString] DOMString mode);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(sequence<DOMString> storeNames, [Optional=DefaultIsNullString] DOMString mode);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBTransaction transaction(DOMString storeName, [Optional=DefaultIsNullString] DOMString mode);
 
     void close();
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/indexeddb/IDBFactory.idl b/modules/indexeddb/IDBFactory.idl
similarity index 75%
rename from Modules/indexeddb/IDBFactory.idl
rename to modules/indexeddb/IDBFactory.idl
index d299faf..8258959 100644
--- a/Modules/indexeddb/IDBFactory.idl
+++ b/modules/indexeddb/IDBFactory.idl
@@ -26,14 +26,10 @@
 [
     ImplementationLacksVTable
 ] interface IDBFactory {
-    [CallWith=ScriptExecutionContext, ImplementedAs=getDatabaseNames] IDBRequest webkitGetDatabaseNames()
-        raises (DOMException);
+    [CallWith=ScriptExecutionContext, ImplementedAs=getDatabaseNames, RaisesException] IDBRequest webkitGetDatabaseNames();
 
-    [CallWith=ScriptExecutionContext] IDBOpenDBRequest open(in DOMString name, in [EnforceRange, Optional] unsigned long long version)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] IDBOpenDBRequest deleteDatabase(in DOMString name)
-        raises (DOMException);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest open(DOMString name, [EnforceRange, Optional] unsigned long long version);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest deleteDatabase(DOMString name);
 
-    [CallWith=ScriptExecutionContext] short cmp(in any first, in any second)
-        raises (DOMException);
+    [CallWith=ScriptExecutionContext, RaisesException] short cmp(any first, any second);
 };
diff --git a/modules/indexeddb/IDBIndex.idl b/modules/indexeddb/IDBIndex.idl
new file mode 100644
index 0000000..8f69ebd
--- /dev/null
+++ b/modules/indexeddb/IDBIndex.idl
@@ -0,0 +1,47 @@
+/*
+ * 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.
+ */
+
+[
+    ImplementationLacksVTable
+] interface IDBIndex {
+    readonly attribute DOMString name;
+    readonly attribute IDBObjectStore objectStore;
+    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
+    readonly attribute boolean unique;
+    readonly attribute boolean multiEntry;
+
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor([Optional] IDBKeyRange? range, [Optional] DOMString direction);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor(any key, [Optional] DOMString direction);
+
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openKeyCursor([Optional] IDBKeyRange? range, [Optional] DOMString  direction);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openKeyCursor(any key, [Optional] DOMString direction);
+
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(IDBKeyRange? key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(any key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest getKey(IDBKeyRange? key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest getKey(any key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count([Optional] IDBKeyRange? range);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count(any key);
+};
diff --git a/Modules/indexeddb/IDBKeyRange.idl b/modules/indexeddb/IDBKeyRange.idl
similarity index 74%
rename from Modules/indexeddb/IDBKeyRange.idl
rename to modules/indexeddb/IDBKeyRange.idl
index 50e8978..2d853e1 100644
--- a/Modules/indexeddb/IDBKeyRange.idl
+++ b/modules/indexeddb/IDBKeyRange.idl
@@ -31,12 +31,8 @@
     readonly attribute boolean lowerOpen;
     readonly attribute boolean upperOpen;
 
-    [CallWith=ScriptExecutionContext] static IDBKeyRange only(in any value)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] static IDBKeyRange lowerBound(in any bound, in [Optional] boolean open)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] static IDBKeyRange upperBound(in any bound, in [Optional] boolean open)
-        raises (DOMException);
-    [CallWith=ScriptExecutionContext] static IDBKeyRange bound(in any lower, in any upper, in [Optional] boolean lowerOpen, in [Optional] boolean upperOpen)
-        raises (DOMException);
+    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange only(any value);
+    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange lowerBound(any bound, [Optional] boolean open);
+    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange upperBound(any bound, [Optional] boolean open);
+    [CallWith=ScriptExecutionContext, RaisesException] static IDBKeyRange bound(any lower, any upper, [Optional] boolean lowerOpen, [Optional] boolean upperOpen);
 };
diff --git a/modules/indexeddb/IDBObjectStore.idl b/modules/indexeddb/IDBObjectStore.idl
new file mode 100644
index 0000000..caafd96
--- /dev/null
+++ b/modules/indexeddb/IDBObjectStore.idl
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+[
+    ImplementationLacksVTable
+] interface IDBObjectStore {
+    [TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
+    [ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
+    readonly attribute DOMStringList indexNames;
+    readonly attribute IDBTransaction transaction;
+    readonly attribute boolean autoIncrement;
+
+    [CallWith=ScriptState, RaisesException] IDBRequest put(any value, [Optional] any key);
+    [CallWith=ScriptState, RaisesException] IDBRequest add(any value, [Optional] any key);
+    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete(IDBKeyRange? keyRange);
+    [CallWith=ScriptExecutionContext, ImplementedAs=deleteFunction, RaisesException] IDBRequest delete(any key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest clear();
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(IDBKeyRange? key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest get(any key);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor([Optional] IDBKeyRange? range, [Optional] DOMString direction);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest openCursor(any key, [Optional] DOMString direction);
+
+    [CallWith=ScriptExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, sequence<DOMString> keyPath, [Optional] Dictionary options);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBIndex createIndex(DOMString name, DOMString keyPath, [Optional] Dictionary options);
+    [RaisesException] IDBIndex index(DOMString name);
+    [RaisesException] void deleteIndex(DOMString name);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count([Optional] IDBKeyRange? range);
+    [CallWith=ScriptExecutionContext, RaisesException] IDBRequest count(any key);
+};
diff --git a/Modules/indexeddb/IDBOpenDBRequest.idl b/modules/indexeddb/IDBOpenDBRequest.idl
similarity index 100%
rename from Modules/indexeddb/IDBOpenDBRequest.idl
rename to modules/indexeddb/IDBOpenDBRequest.idl
diff --git a/Modules/indexeddb/IDBRequest.idl b/modules/indexeddb/IDBRequest.idl
similarity index 74%
rename from Modules/indexeddb/IDBRequest.idl
rename to modules/indexeddb/IDBRequest.idl
index d0fd55a..b75e7ce 100644
--- a/Modules/indexeddb/IDBRequest.idl
+++ b/modules/indexeddb/IDBRequest.idl
@@ -31,12 +31,9 @@
     ActiveDOMObject,
     EventTarget
 ] interface IDBRequest {
-    readonly attribute IDBAny result
-        getter raises (DOMException);
-    readonly attribute DOMError error
-        getter raises (DOMException);
-    [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString webkitErrorMessage
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute IDBAny result;
+    [GetterRaisesException] readonly attribute DOMError error;
+    [TreatReturnedNullStringAs=Undefined, GetterRaisesException] readonly attribute DOMString webkitErrorMessage;
 
     readonly attribute IDBAny source;
     readonly attribute IDBTransaction transaction;
@@ -49,12 +46,11 @@
     attribute EventListener onerror;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/indexeddb/IDBTransaction.idl b/modules/indexeddb/IDBTransaction.idl
similarity index 77%
rename from Modules/indexeddb/IDBTransaction.idl
rename to modules/indexeddb/IDBTransaction.idl
index 48f1fa3..555d2fb 100644
--- a/Modules/indexeddb/IDBTransaction.idl
+++ b/modules/indexeddb/IDBTransaction.idl
@@ -36,22 +36,19 @@
     [TreatReturnedNullStringAs=Undefined] readonly attribute DOMString webkitErrorMessage;
 
     // Methods
-    IDBObjectStore objectStore (in DOMString name)
-        raises (DOMException);
-    void abort ()
-        raises (DOMException);
+    [RaisesException] IDBObjectStore objectStore (DOMString name);
+    [RaisesException] void abort ();
 
     // Events
     attribute EventListener onabort;
     attribute EventListener oncomplete;
     attribute EventListener onerror;
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt) 
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/indexeddb/IDBVersionChangeEvent.idl b/modules/indexeddb/IDBVersionChangeEvent.idl
similarity index 100%
rename from Modules/indexeddb/IDBVersionChangeEvent.idl
rename to modules/indexeddb/IDBVersionChangeEvent.idl
diff --git a/Modules/indexeddb/WorkerContextIndexedDatabase.idl b/modules/indexeddb/WorkerContextIndexedDatabase.idl
similarity index 93%
rename from Modules/indexeddb/WorkerContextIndexedDatabase.idl
rename to modules/indexeddb/WorkerContextIndexedDatabase.idl
index 787c044..3abf8a6 100644
--- a/Modules/indexeddb/WorkerContextIndexedDatabase.idl
+++ b/modules/indexeddb/WorkerContextIndexedDatabase.idl
@@ -27,7 +27,7 @@
 [
     Supplemental=WorkerContext
 ] interface WorkerContextIndexedDatabase {
-    [ImplementedAs=indexedDB,V8EnabledAtRuntime] readonly attribute IDBFactory webkitIndexedDB;
+    [ImplementedAs=indexedDB,EnabledAtRuntime] readonly attribute IDBFactory webkitIndexedDB;
 
     attribute IDBCursorConstructor webkitIDBCursor;
     attribute IDBDatabaseConstructor webkitIDBDatabase;
@@ -38,7 +38,7 @@
     attribute IDBRequestConstructor webkitIDBRequest;
     attribute IDBTransactionConstructor webkitIDBTransaction;
 
-    [V8EnabledAtRuntime] readonly attribute IDBFactory indexedDB;
+    [EnabledAtRuntime] readonly attribute IDBFactory indexedDB;
 
     attribute IDBCursorConstructor IDBCursor;
     attribute IDBCursorWithValueConstructor IDBCursorWithValue;
diff --git a/Modules/mediasource/MediaSource.idl b/modules/mediasource/MediaSource.idl
similarity index 73%
rename from Modules/mediasource/MediaSource.idl
rename to modules/mediasource/MediaSource.idl
index 12312e7..09274ff 100644
--- a/Modules/mediasource/MediaSource.idl
+++ b/modules/mediasource/MediaSource.idl
@@ -29,7 +29,7 @@
  */
  
 [
-    V8EnabledAtRuntime=mediaSource,
+    EnabledAtRuntime=mediaSource,
     ActiveDOMObject,
     EventTarget,
     Constructor,
@@ -41,26 +41,24 @@
     // Subset of sourceBuffers that provide data for the selected/enabled tracks.
     readonly attribute SourceBufferList activeSourceBuffers;
 
-    attribute double duration setter raises (DOMException);
+    [SetterRaisesException] attribute double duration;
 
-    SourceBuffer addSourceBuffer(in DOMString type) raises (DOMException);
-    void removeSourceBuffer(in SourceBuffer buffer) raises (DOMException);
+    [RaisesException] SourceBuffer addSourceBuffer(DOMString type);
+    [RaisesException] void removeSourceBuffer(SourceBuffer buffer);
 
     readonly attribute DOMString readyState;
     
-    void endOfStream(in [Optional=DefaultIsNullString] DOMString error)
-        raises (DOMException);
+    [RaisesException] void endOfStream([Optional=DefaultIsNullString] DOMString error);
 
     static boolean isTypeSupported (DOMString type);
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/Modules/mediasource/SourceBuffer.idl b/modules/mediasource/SourceBuffer.idl
similarity index 85%
rename from Modules/mediasource/SourceBuffer.idl
rename to modules/mediasource/SourceBuffer.idl
index 3212eff..fc29be4 100644
--- a/Modules/mediasource/SourceBuffer.idl
+++ b/modules/mediasource/SourceBuffer.idl
@@ -29,21 +29,19 @@
  */
  
 [
-    V8EnabledAtRuntime=mediaSource
+    EnabledAtRuntime=mediaSource
 ] interface SourceBuffer {
 
     // Returns the time ranges buffered.
-    readonly attribute TimeRanges buffered
-        getter raises(DOMException);
+    [GetterRaisesException] readonly attribute TimeRanges buffered;
 
     // Applies an offset to media segment timestamps.
-    attribute double timestampOffset
-        setter raises(DOMException);
+    [SetterRaisesException] attribute double timestampOffset;
 
     // Append segment data.
-    void append(in Uint8Array data) raises (DOMException);
+    [RaisesException] void append(Uint8Array data);
 
     // Abort the current segment append sequence.
-    void abort() raises (DOMException);
+    [RaisesException] void abort();
 };
 
diff --git a/Modules/mediasource/SourceBufferList.idl b/modules/mediasource/SourceBufferList.idl
similarity index 78%
rename from Modules/mediasource/SourceBufferList.idl
rename to modules/mediasource/SourceBufferList.idl
index 906bcb5..1f5d88b 100644
--- a/Modules/mediasource/SourceBufferList.idl
+++ b/modules/mediasource/SourceBufferList.idl
@@ -29,22 +29,21 @@
  */
  
 [
-    V8EnabledAtRuntime=mediaSource,
+    EnabledAtRuntime=mediaSource,
     IndexedGetter,
     EventTarget,
     CallWith=ScriptExecutionContext
 ] interface SourceBufferList {
     readonly attribute unsigned long length;
-    SourceBuffer item(in unsigned long index);
+    SourceBuffer item(unsigned long index);
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/Modules/mediastream/DOMWindowMediaStream.idl b/modules/mediastream/DOMWindowMediaStream.idl
similarity index 90%
rename from Modules/mediastream/DOMWindowMediaStream.idl
rename to modules/mediastream/DOMWindowMediaStream.idl
index b7eb91e..14992be 100644
--- a/Modules/mediastream/DOMWindowMediaStream.idl
+++ b/modules/mediastream/DOMWindowMediaStream.idl
@@ -28,8 +28,8 @@
     Conditional=MEDIA_STREAM,
     Supplemental=DOMWindow
 ] interface DOMWindowMediaStream {
-    [V8EnabledAtRuntime] attribute MediaStreamConstructor webkitMediaStream;
-    [V8EnabledAtRuntime] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
+    [EnabledAtRuntime] attribute MediaStreamConstructor webkitMediaStream;
+    [EnabledAtRuntime] attribute RTCPeerConnectionConstructor webkitRTCPeerConnection;
     attribute RTCSessionDescriptionConstructor RTCSessionDescription;
     attribute RTCIceCandidateConstructor RTCIceCandidate;
     attribute MediaStreamEventConstructor MediaStreamEvent;
diff --git a/Modules/mediastream/LocalMediaStream.idl b/modules/mediastream/LocalMediaStream.idl
similarity index 100%
rename from Modules/mediastream/LocalMediaStream.idl
rename to modules/mediastream/LocalMediaStream.idl
diff --git a/Modules/mediastream/MediaStream.idl b/modules/mediastream/MediaStream.idl
similarity index 73%
rename from Modules/mediastream/MediaStream.idl
rename to modules/mediastream/MediaStream.idl
index 1373c31..be2e41c 100644
--- a/Modules/mediastream/MediaStream.idl
+++ b/modules/mediastream/MediaStream.idl
@@ -26,11 +26,10 @@
     Conditional=MEDIA_STREAM,
     EventTarget,
     Constructor,
-    Constructor(in MediaStream stream),
-    Constructor(in MediaStreamTrack[] tracks),
-    ConstructorParameters=0,
+    Constructor(MediaStream stream),
+    Constructor(MediaStreamTrack[] tracks),
     CallWith=ScriptExecutionContext,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface MediaStream {
     // DEPRECATED
     readonly attribute DOMString label;
@@ -40,10 +39,8 @@
     sequence<MediaStreamTrack> getAudioTracks();
     sequence<MediaStreamTrack> getVideoTracks();
 
-    void addTrack(MediaStreamTrack track)
-        raises(DOMException);
-    void removeTrack(MediaStreamTrack track)
-        raises(DOMException);
+    [RaisesException] void addTrack(MediaStreamTrack track);
+    [RaisesException] void removeTrack(MediaStreamTrack track);
     MediaStreamTrack getTrackById(DOMString trackId);
 
     readonly attribute boolean ended;
@@ -53,13 +50,12 @@
     attribute EventListener onremovetrack;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/Modules/mediastream/MediaStreamEvent.idl b/modules/mediastream/MediaStreamEvent.idl
similarity index 100%
rename from Modules/mediastream/MediaStreamEvent.idl
rename to modules/mediastream/MediaStreamEvent.idl
diff --git a/Modules/mediastream/MediaStreamTrack.idl b/modules/mediastream/MediaStreamTrack.idl
similarity index 81%
rename from Modules/mediastream/MediaStreamTrack.idl
rename to modules/mediastream/MediaStreamTrack.idl
index 20af404..975c752 100644
--- a/Modules/mediastream/MediaStreamTrack.idl
+++ b/modules/mediastream/MediaStreamTrack.idl
@@ -39,13 +39,12 @@
     attribute EventListener onended;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
 
diff --git a/Modules/mediastream/MediaStreamTrackEvent.idl b/modules/mediastream/MediaStreamTrackEvent.idl
similarity index 100%
rename from Modules/mediastream/MediaStreamTrackEvent.idl
rename to modules/mediastream/MediaStreamTrackEvent.idl
diff --git a/Modules/mediastream/NavigatorMediaStream.idl b/modules/mediastream/NavigatorMediaStream.idl
similarity index 73%
rename from Modules/mediastream/NavigatorMediaStream.idl
rename to modules/mediastream/NavigatorMediaStream.idl
index 9cc3957..fd0b6fe 100644
--- a/Modules/mediastream/NavigatorMediaStream.idl
+++ b/modules/mediastream/NavigatorMediaStream.idl
@@ -21,9 +21,8 @@
     Conditional=MEDIA_STREAM,
     Supplemental=Navigator
 ] interface NavigatorMediaStream {
-    [V8EnabledAtRuntime] void webkitGetUserMedia(in Dictionary options,
-                                                 in [Callback] NavigatorUserMediaSuccessCallback successCallback,
-                                                 in [Callback, Optional] NavigatorUserMediaErrorCallback errorCallback)
-        raises(DOMException);
+    [EnabledAtRuntime, RaisesException] void webkitGetUserMedia(Dictionary options,
+                                                 [Callback] NavigatorUserMediaSuccessCallback successCallback,
+                                                 [Callback, Optional] NavigatorUserMediaErrorCallback errorCallback);
 };
 
diff --git a/Modules/mediastream/NavigatorUserMediaError.idl b/modules/mediastream/NavigatorUserMediaError.idl
similarity index 100%
rename from Modules/mediastream/NavigatorUserMediaError.idl
rename to modules/mediastream/NavigatorUserMediaError.idl
diff --git a/Modules/mediastream/NavigatorUserMediaErrorCallback.idl b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
similarity index 95%
rename from Modules/mediastream/NavigatorUserMediaErrorCallback.idl
rename to modules/mediastream/NavigatorUserMediaErrorCallback.idl
index 3ab837b..4e42d7a 100644
--- a/Modules/mediastream/NavigatorUserMediaErrorCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaErrorCallback.idl
@@ -26,6 +26,6 @@
     Conditional=MEDIA_STREAM,
     Callback
 ] interface NavigatorUserMediaErrorCallback {
-    boolean handleEvent(in NavigatorUserMediaError error);
+    boolean handleEvent(NavigatorUserMediaError error);
 };
 
diff --git a/Modules/mediastream/NavigatorUserMediaSuccessCallback.idl b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
similarity index 96%
rename from Modules/mediastream/NavigatorUserMediaSuccessCallback.idl
rename to modules/mediastream/NavigatorUserMediaSuccessCallback.idl
index 4da4cd5..9674459 100644
--- a/Modules/mediastream/NavigatorUserMediaSuccessCallback.idl
+++ b/modules/mediastream/NavigatorUserMediaSuccessCallback.idl
@@ -26,6 +26,6 @@
     Conditional=MEDIA_STREAM,
     Callback
 ] interface NavigatorUserMediaSuccessCallback {
-    boolean handleEvent(in LocalMediaStream stream);
+    boolean handleEvent(LocalMediaStream stream);
 };
 
diff --git a/Modules/mediastream/RTCDTMFSender.idl b/modules/mediastream/RTCDTMFSender.idl
similarity index 76%
rename from Modules/mediastream/RTCDTMFSender.idl
rename to modules/mediastream/RTCDTMFSender.idl
index 1f7c996..7c193f0 100644
--- a/Modules/mediastream/RTCDTMFSender.idl
+++ b/modules/mediastream/RTCDTMFSender.idl
@@ -34,18 +34,16 @@
     readonly attribute long duration;
     readonly attribute long interToneGap;
 
-    void insertDTMF(in DOMString tones, in [Optional] long duration, in [Optional] long interToneGap)
-        raises(DOMException);
+    [RaisesException] void insertDTMF(DOMString tones, [Optional] long duration, [Optional] long interToneGap);
 
     attribute EventListener ontonechange;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
diff --git a/Modules/mediastream/RTCDTMFToneChangeEvent.idl b/modules/mediastream/RTCDTMFToneChangeEvent.idl
similarity index 100%
rename from Modules/mediastream/RTCDTMFToneChangeEvent.idl
rename to modules/mediastream/RTCDTMFToneChangeEvent.idl
diff --git a/Modules/mediastream/RTCDataChannel.idl b/modules/mediastream/RTCDataChannel.idl
similarity index 71%
rename from Modules/mediastream/RTCDataChannel.idl
rename to modules/mediastream/RTCDataChannel.idl
index 18ab48b..4f2ffe5 100644
--- a/Modules/mediastream/RTCDataChannel.idl
+++ b/modules/mediastream/RTCDataChannel.idl
@@ -31,17 +31,12 @@
     readonly attribute DOMString readyState;
     readonly attribute unsigned long bufferedAmount;
 
-    attribute DOMString binaryType
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString binaryType;
 
-    void send(in ArrayBuffer data)
-        raises(DOMException);
-    void send(in ArrayBufferView data)
-        raises(DOMException);
-    void send(in Blob data)
-        raises(DOMException);
-    void send(in DOMString data)
-        raises(DOMException);
+    [RaisesException] void send(ArrayBuffer data);
+    [RaisesException] void send(ArrayBufferView data);
+    [RaisesException] void send(Blob data);
+    [RaisesException] void send(DOMString data);
 
     void close();
 
@@ -51,12 +46,11 @@
     attribute EventListener onmessage;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event event)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
 };
diff --git a/Modules/mediastream/RTCDataChannelEvent.idl b/modules/mediastream/RTCDataChannelEvent.idl
similarity index 100%
rename from Modules/mediastream/RTCDataChannelEvent.idl
rename to modules/mediastream/RTCDataChannelEvent.idl
diff --git a/Modules/mediastream/RTCErrorCallback.idl b/modules/mediastream/RTCErrorCallback.idl
similarity index 96%
rename from Modules/mediastream/RTCErrorCallback.idl
rename to modules/mediastream/RTCErrorCallback.idl
index b97b702..1be5df2 100644
--- a/Modules/mediastream/RTCErrorCallback.idl
+++ b/modules/mediastream/RTCErrorCallback.idl
@@ -32,6 +32,6 @@
     Conditional=MEDIA_STREAM,
     Callback
 ] interface RTCErrorCallback {
-    boolean handleEvent(in DOMString errorInformation);
+    boolean handleEvent(DOMString errorInformation);
 };
 
diff --git a/Modules/mediastream/RTCIceCandidate.idl b/modules/mediastream/RTCIceCandidate.idl
similarity index 95%
rename from Modules/mediastream/RTCIceCandidate.idl
rename to modules/mediastream/RTCIceCandidate.idl
index cd1a493..9cba455 100644
--- a/Modules/mediastream/RTCIceCandidate.idl
+++ b/modules/mediastream/RTCIceCandidate.idl
@@ -30,8 +30,8 @@
 
 [
     Conditional=MEDIA_STREAM,
-    Constructor(in Dictionary dictionary),
-    ConstructorRaisesException
+    Constructor(Dictionary dictionary),
+    RaisesException
 ] interface RTCIceCandidate {
     readonly attribute DOMString candidate;
     readonly attribute DOMString sdpMid;
diff --git a/Modules/mediastream/RTCIceCandidateEvent.idl b/modules/mediastream/RTCIceCandidateEvent.idl
similarity index 100%
rename from Modules/mediastream/RTCIceCandidateEvent.idl
rename to modules/mediastream/RTCIceCandidateEvent.idl
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl
new file mode 100644
index 0000000..c13facd
--- /dev/null
+++ b/modules/mediastream/RTCPeerConnection.idl
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer
+ *    in the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. 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.
+ */
+
+[
+    Conditional=MEDIA_STREAM,
+    ActiveDOMObject,
+    Constructor(Dictionary rtcIceServers, [Optional] Dictionary mediaConstraints),
+    RaisesException,
+    CallWith=ScriptExecutionContext,
+    EventTarget
+] interface RTCPeerConnection {
+    [RaisesException] void createOffer([Callback] RTCSessionDescriptionCallback successCallback, [Callback,Optional=DefaultIsUndefined] RTCErrorCallback failureCallback, [Optional] Dictionary mediaConstraints);
+
+    [RaisesException] void createAnswer([Callback] RTCSessionDescriptionCallback successCallback, [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback, [Optional] Dictionary mediaConstraints);
+
+    [RaisesException] void setLocalDescription(RTCSessionDescription description, [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback);
+    [GetterRaisesException] readonly attribute RTCSessionDescription localDescription;
+
+    [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Callback, Optional=DefaultIsUndefined] VoidCallback successCallback, [Callback, Optional=DefaultIsUndefined] RTCErrorCallback failureCallback);
+    [GetterRaisesException] readonly attribute RTCSessionDescription remoteDescription;
+
+    readonly attribute DOMString signalingState;
+
+    [RaisesException] void updateIce([Optional] Dictionary configuration, [Optional] Dictionary mediaConstraints);
+
+    [RaisesException] void addIceCandidate(RTCIceCandidate candidate);
+
+    readonly attribute DOMString iceGatheringState;
+    readonly attribute DOMString iceConnectionState;
+
+    sequence<MediaStream> getLocalStreams();
+    sequence<MediaStream> getRemoteStreams();
+    MediaStream getStreamById(DOMString streamId);
+
+    [StrictTypeChecking, RaisesException] void addStream(MediaStream stream, [Optional] Dictionary mediaConstraints);
+    [StrictTypeChecking, RaisesException] void removeStream(MediaStream stream);
+
+    void getStats([Callback] RTCStatsCallback successCallback, [Optional=DefaultIsUndefined] MediaStreamTrack selector);
+
+    [RaisesException] RTCDataChannel createDataChannel([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString label, [Optional] Dictionary options);
+
+    [RaisesException] RTCDTMFSender createDTMFSender(MediaStreamTrack track);
+
+    [RaisesException] void close();
+
+    attribute EventListener onnegotiationneeded;
+    attribute EventListener onicecandidate;
+    attribute EventListener onsignalingstatechange;
+    attribute EventListener onaddstream;
+    attribute EventListener onremovestream;
+    attribute EventListener oniceconnectionstatechange;
+    attribute EventListener ondatachannel;
+
+    // EventTarget interface
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event event);
+};
+
diff --git a/Modules/mediastream/RTCSessionDescription.idl b/modules/mediastream/RTCSessionDescription.idl
similarity index 88%
rename from Modules/mediastream/RTCSessionDescription.idl
rename to modules/mediastream/RTCSessionDescription.idl
index 12e30da..5802e0b 100644
--- a/Modules/mediastream/RTCSessionDescription.idl
+++ b/modules/mediastream/RTCSessionDescription.idl
@@ -30,12 +30,10 @@
 
 [
     Conditional=MEDIA_STREAM,
-    Constructor(in Dictionary dictionary),
-    ConstructorRaisesException
+    Constructor(Dictionary dictionary),
+    RaisesException
 ] interface RTCSessionDescription {
-    attribute DOMString type
-        setter raises(DOMException);
-    attribute DOMString sdp
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString type;
+    [SetterRaisesException] attribute DOMString sdp;
 };
 
diff --git a/Modules/mediastream/RTCSessionDescriptionCallback.idl b/modules/mediastream/RTCSessionDescriptionCallback.idl
similarity index 96%
rename from Modules/mediastream/RTCSessionDescriptionCallback.idl
rename to modules/mediastream/RTCSessionDescriptionCallback.idl
index fec6754..1b50c00 100644
--- a/Modules/mediastream/RTCSessionDescriptionCallback.idl
+++ b/modules/mediastream/RTCSessionDescriptionCallback.idl
@@ -32,6 +32,6 @@
     Conditional=MEDIA_STREAM,
     Callback
 ] interface RTCSessionDescriptionCallback {
-    boolean handleEvent(in RTCSessionDescription sdp);
+    boolean handleEvent(RTCSessionDescription sdp);
 };
 
diff --git a/Modules/mediastream/RTCStatsCallback.idl b/modules/mediastream/RTCStatsCallback.idl
similarity index 96%
rename from Modules/mediastream/RTCStatsCallback.idl
rename to modules/mediastream/RTCStatsCallback.idl
index 15a0d4f..5ac0db8 100644
--- a/Modules/mediastream/RTCStatsCallback.idl
+++ b/modules/mediastream/RTCStatsCallback.idl
@@ -26,6 +26,6 @@
     Conditional=MEDIA_STREAM,
     Callback
 ] interface RTCStatsCallback {
-    boolean handleEvent(in RTCStatsResponse response);
+    boolean handleEvent(RTCStatsResponse response);
 };
 
diff --git a/Modules/mediastream/RTCStatsReport.idl b/modules/mediastream/RTCStatsReport.idl
similarity index 97%
rename from Modules/mediastream/RTCStatsReport.idl
rename to modules/mediastream/RTCStatsReport.idl
index 8c50e80..0259add 100644
--- a/Modules/mediastream/RTCStatsReport.idl
+++ b/modules/mediastream/RTCStatsReport.idl
@@ -29,7 +29,7 @@
     readonly attribute Date timestamp;
     readonly attribute DOMString id;
     readonly attribute DOMString type;
-    DOMString stat(in DOMString name);
+    DOMString stat(DOMString name);
     sequence<DOMString> names();
     // DEPRECATED - fake for old RTCStatsElement object.
     readonly attribute RTCStatsReport local;
diff --git a/Modules/mediastream/RTCStatsResponse.idl b/modules/mediastream/RTCStatsResponse.idl
similarity index 94%
rename from Modules/mediastream/RTCStatsResponse.idl
rename to modules/mediastream/RTCStatsResponse.idl
index f6e8bb9..4dfaee7 100644
--- a/Modules/mediastream/RTCStatsResponse.idl
+++ b/modules/mediastream/RTCStatsResponse.idl
@@ -27,5 +27,5 @@
     NamedGetter
 ] interface RTCStatsResponse {
     sequence<RTCStatsReport> result();
-    RTCStatsReport namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    RTCStatsReport namedItem([Optional=DefaultIsUndefined] DOMString name);
 };
diff --git a/Modules/navigatorcontentutils/NavigatorContentUtils.idl b/modules/navigatorcontentutils/NavigatorContentUtils.idl
similarity index 68%
rename from Modules/navigatorcontentutils/NavigatorContentUtils.idl
rename to modules/navigatorcontentutils/NavigatorContentUtils.idl
index b4171a0..fee30da 100644
--- a/Modules/navigatorcontentutils/NavigatorContentUtils.idl
+++ b/modules/navigatorcontentutils/NavigatorContentUtils.idl
@@ -22,11 +22,8 @@
 [
     Supplemental=Navigator
 ] interface NavigatorContentUtils {
-    [Conditional=NAVIGATOR_CONTENT_UTILS] void registerProtocolHandler(in DOMString scheme, in DOMString url, in DOMString title)
-        raises(DOMException);
-    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER] DOMString isProtocolHandlerRegistered(in DOMString scheme, in DOMString url)
-        raises(DOMException);
-    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER] void unregisterProtocolHandler(in DOMString scheme, in DOMString url)
-        raises(DOMException);
+    [Conditional=NAVIGATOR_CONTENT_UTILS, RaisesException] void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title);
+    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, RaisesException] DOMString isProtocolHandlerRegistered(DOMString scheme, DOMString url);
+    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, RaisesException] void unregisterProtocolHandler(DOMString scheme, DOMString url);
 };
 
diff --git a/Modules/notifications/DOMWindowNotifications.idl b/modules/notifications/DOMWindowNotifications.idl
similarity index 93%
rename from Modules/notifications/DOMWindowNotifications.idl
rename to modules/notifications/DOMWindowNotifications.idl
index a030866..7e270ce 100644
--- a/Modules/notifications/DOMWindowNotifications.idl
+++ b/modules/notifications/DOMWindowNotifications.idl
@@ -29,7 +29,7 @@
     Supplemental=DOMWindow
 ] interface DOMWindowNotifications {
 #if defined(ENABLE_LEGACY_NOTIFICATIONS) && ENABLE_LEGACY_NOTIFICATIONS
-    [V8EnabledAtRuntime, V8MeasureAs=LegacyNotifications] readonly attribute NotificationCenter webkitNotifications;
+    [EnabledAtRuntime, MeasureAs=LegacyNotifications] readonly attribute NotificationCenter webkitNotifications;
 #endif
 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
     attribute NotificationConstructor Notification;
diff --git a/Modules/notifications/Notification.idl b/modules/notifications/Notification.idl
similarity index 80%
rename from Modules/notifications/Notification.idl
rename to modules/notifications/Notification.idl
index 194e89b..5ef69cf 100644
--- a/Modules/notifications/Notification.idl
+++ b/modules/notifications/Notification.idl
@@ -34,10 +34,9 @@
     ActiveDOMObject,
     EventTarget,
 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
-    Constructor(in DOMString title, in [Optional=DefaultIsUndefined] Dictionary options),
+    Constructor(DOMString title, [Optional=DefaultIsUndefined] Dictionary options),
     CallWith=ScriptExecutionContext,
 #else
-    OmitConstructor
 #endif
 ] interface Notification {
     void show();
@@ -50,8 +49,8 @@
 
 
 #if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
-    static readonly attribute [CallWith=ScriptExecutionContext] DOMString permission;
-    [CallWith=ScriptExecutionContext] static void requestPermission(in [Optional, Callback] NotificationPermissionCallback callback);
+    [CallWith=ScriptExecutionContext] static readonly attribute DOMString permission;
+    [CallWith=ScriptExecutionContext] static void requestPermission([Optional, Callback] NotificationPermissionCallback callback);
 #endif
 
     attribute EventListener onshow;
@@ -71,13 +70,12 @@
 #endif
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/Modules/notifications/NotificationCenter.idl b/modules/notifications/NotificationCenter.idl
similarity index 81%
rename from Modules/notifications/NotificationCenter.idl
rename to modules/notifications/NotificationCenter.idl
index 7a04b1b..9fb6101 100644
--- a/Modules/notifications/NotificationCenter.idl
+++ b/modules/notifications/NotificationCenter.idl
@@ -32,14 +32,13 @@
 [
     Conditional=LEGACY_NOTIFICATIONS,
     ActiveDOMObject,
-    OmitConstructor
 ] interface NotificationCenter {
 #if !defined(ENABLE_TEXT_NOTIFICATIONS_ONLY) || !ENABLE_TEXT_NOTIFICATIONS_ONLY
-   [V8EnabledPerContext=htmlNotifications, V8MeasureAs=LegacyHTMLNotifications] Notification createHTMLNotification(in DOMString url) raises(DOMException);
+   [EnabledPerContext=htmlNotifications, MeasureAs=LegacyHTMLNotifications, RaisesException] Notification createHTMLNotification(DOMString url);
 #endif
-   [V8MeasureAs=LegacyTextNotifications] Notification createNotification(in DOMString iconUrl, in DOMString title, in DOMString body) raises(DOMException);
+   [MeasureAs=LegacyTextNotifications, RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
 
    int checkPermission();
-   void requestPermission(in [Optional, Callback] VoidCallback callback);
+   void requestPermission([Optional, Callback] VoidCallback callback);
 };
 
diff --git a/Modules/notifications/NotificationPermissionCallback.idl b/modules/notifications/NotificationPermissionCallback.idl
similarity index 96%
rename from Modules/notifications/NotificationPermissionCallback.idl
rename to modules/notifications/NotificationPermissionCallback.idl
index bb77716..66526de 100644
--- a/Modules/notifications/NotificationPermissionCallback.idl
+++ b/modules/notifications/NotificationPermissionCallback.idl
@@ -27,6 +27,6 @@
     Conditional=NOTIFICATIONS,
     Callback
 ] interface NotificationPermissionCallback {
-    boolean handleEvent(in DOMString permission);
+    boolean handleEvent(DOMString permission);
 };
 
diff --git a/Modules/notifications/WorkerContextNotifications.idl b/modules/notifications/WorkerContextNotifications.idl
similarity index 94%
rename from Modules/notifications/WorkerContextNotifications.idl
rename to modules/notifications/WorkerContextNotifications.idl
index 5e0c3fe..518aba3 100644
--- a/Modules/notifications/WorkerContextNotifications.idl
+++ b/modules/notifications/WorkerContextNotifications.idl
@@ -29,7 +29,7 @@
     Supplemental=WorkerContext
 ] interface WorkerContextNotifications {
 #if defined(ENABLE_LEGACY_NOTIFICATIONS) && ENABLE_LEGACY_NOTIFICATIONS
-    [V8EnabledAtRuntime] readonly attribute NotificationCenter webkitNotifications;
+    [EnabledAtRuntime] readonly attribute NotificationCenter webkitNotifications;
 #endif
 };
 
diff --git a/Modules/proximity/DeviceProximityEvent.idl b/modules/proximity/DeviceProximityEvent.idl
similarity index 100%
rename from Modules/proximity/DeviceProximityEvent.idl
rename to modules/proximity/DeviceProximityEvent.idl
diff --git a/Modules/quota/DOMWindowQuota.idl b/modules/quota/DOMWindowQuota.idl
similarity index 93%
rename from Modules/quota/DOMWindowQuota.idl
rename to modules/quota/DOMWindowQuota.idl
index d3ca1c6..225efef 100644
--- a/Modules/quota/DOMWindowQuota.idl
+++ b/modules/quota/DOMWindowQuota.idl
@@ -24,9 +24,8 @@
  */
 
 [
-    Conditional=QUOTA,
     Supplemental=DOMWindow
 ] interface DOMWindowQuota {
-    readonly attribute [V8MeasureAs=StorageInfo] StorageInfo webkitStorageInfo;
+    [MeasureAs=StorageInfo] readonly attribute StorageInfo webkitStorageInfo;
 };
 
diff --git a/Modules/quota/NavigatorStorageQuota.idl b/modules/quota/NavigatorStorageQuota.idl
similarity index 97%
rename from Modules/quota/NavigatorStorageQuota.idl
rename to modules/quota/NavigatorStorageQuota.idl
index 9345947..fd60b6e 100644
--- a/Modules/quota/NavigatorStorageQuota.idl
+++ b/modules/quota/NavigatorStorageQuota.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    Conditional=QUOTA,
     Supplemental=Navigator
 ] interface NavigatorStorageQuota {
     readonly attribute StorageQuota webkitTemporaryStorage;
diff --git a/Modules/quota/StorageErrorCallback.idl b/modules/quota/StorageErrorCallback.idl
similarity index 95%
rename from Modules/quota/StorageErrorCallback.idl
rename to modules/quota/StorageErrorCallback.idl
index decdd99..972216b 100644
--- a/Modules/quota/StorageErrorCallback.idl
+++ b/modules/quota/StorageErrorCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=QUOTA,
     Callback
 ] interface StorageErrorCallback {
-    boolean handleEvent(in DOMCoreException error);
+    boolean handleEvent(DOMCoreException error);
 };
diff --git a/Modules/quota/StorageInfo.idl b/modules/quota/StorageInfo.idl
similarity index 74%
rename from Modules/quota/StorageInfo.idl
rename to modules/quota/StorageInfo.idl
index 38f7b93..253623d 100644
--- a/Modules/quota/StorageInfo.idl
+++ b/modules/quota/StorageInfo.idl
@@ -24,13 +24,11 @@
  */
 
 [
-    Conditional=QUOTA,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface StorageInfo {
     const unsigned short TEMPORARY = 0;
     const unsigned short PERSISTENT = 1;
 
-    [CallWith=ScriptExecutionContext] void queryUsageAndQuota(in unsigned short storageType, in [Callback, Optional] StorageUsageCallback usageCallback, in [Callback, Optional] StorageErrorCallback errorCallback);
-    [CallWith=ScriptExecutionContext] void requestQuota(in unsigned short storageType, in unsigned long long newQuotaInBytes, in [Callback, Optional] StorageQuotaCallback quotaCallback, in [Callback, Optional] StorageErrorCallback errorCallback);
+    [CallWith=ScriptExecutionContext] void queryUsageAndQuota(unsigned short storageType, [Callback, Optional] StorageUsageCallback usageCallback, [Callback, Optional] StorageErrorCallback errorCallback);
+    [CallWith=ScriptExecutionContext] void requestQuota(unsigned short storageType, unsigned long long newQuotaInBytes, [Callback, Optional] StorageQuotaCallback quotaCallback, [Callback, Optional] StorageErrorCallback errorCallback);
 };
diff --git a/Modules/quota/StorageQuota.idl b/modules/quota/StorageQuota.idl
similarity index 76%
rename from Modules/quota/StorageQuota.idl
rename to modules/quota/StorageQuota.idl
index 4364f5b..d4c16e0 100644
--- a/Modules/quota/StorageQuota.idl
+++ b/modules/quota/StorageQuota.idl
@@ -24,10 +24,8 @@
  */
 
 [
-    Conditional=QUOTA,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface StorageQuota {
-    [CallWith=ScriptExecutionContext] void queryUsageAndQuota(in [Callback] StorageUsageCallback usageCallback, in [Callback, Optional] StorageErrorCallback errorCallback);
-    [CallWith=ScriptExecutionContext] void requestQuota(in unsigned long long newQuotaInBytes, in [Callback, Optional] StorageQuotaCallback quotaCallback, in [Callback, Optional] StorageErrorCallback errorCallback);
+    [CallWith=ScriptExecutionContext] void queryUsageAndQuota([Callback] StorageUsageCallback usageCallback, [Callback, Optional] StorageErrorCallback errorCallback);
+    [CallWith=ScriptExecutionContext] void requestQuota(unsigned long long newQuotaInBytes, [Callback, Optional] StorageQuotaCallback quotaCallback, [Callback, Optional] StorageErrorCallback errorCallback);
 };
diff --git a/Modules/quota/StorageQuotaCallback.idl b/modules/quota/StorageQuotaCallback.idl
similarity index 94%
rename from Modules/quota/StorageQuotaCallback.idl
rename to modules/quota/StorageQuotaCallback.idl
index 502c106..f8dd254 100644
--- a/Modules/quota/StorageQuotaCallback.idl
+++ b/modules/quota/StorageQuotaCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=QUOTA,
     Callback
 ] interface StorageQuotaCallback {
-    boolean handleEvent(in unsigned long long grantedQuotaInBytes);
+    boolean handleEvent(unsigned long long grantedQuotaInBytes);
 };
diff --git a/Modules/quota/StorageUsageCallback.idl b/modules/quota/StorageUsageCallback.idl
similarity index 92%
rename from Modules/quota/StorageUsageCallback.idl
rename to modules/quota/StorageUsageCallback.idl
index f419264..c688bf6 100644
--- a/Modules/quota/StorageUsageCallback.idl
+++ b/modules/quota/StorageUsageCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=QUOTA,
     Callback
 ] interface StorageUsageCallback {
-    boolean handleEvent(in unsigned long long currentUsageInBytes, in unsigned long long currentQuotaInBytes);
+    boolean handleEvent(unsigned long long currentUsageInBytes, unsigned long long currentQuotaInBytes);
 };
diff --git a/Modules/quota/WorkerNavigatorStorageQuota.idl b/modules/quota/WorkerNavigatorStorageQuota.idl
similarity index 97%
rename from Modules/quota/WorkerNavigatorStorageQuota.idl
rename to modules/quota/WorkerNavigatorStorageQuota.idl
index 17370cd..9c17182 100644
--- a/Modules/quota/WorkerNavigatorStorageQuota.idl
+++ b/modules/quota/WorkerNavigatorStorageQuota.idl
@@ -18,7 +18,6 @@
  */
 
 [
-    Conditional=QUOTA,
     Supplemental=WorkerNavigator
 ] interface WorkerNavigatorStorageQuota {
     readonly attribute StorageQuota webkitTemporaryStorage;
diff --git a/Modules/speech/DOMWindowSpeech.idl b/modules/speech/DOMWindowSpeech.idl
similarity index 75%
rename from Modules/speech/DOMWindowSpeech.idl
rename to modules/speech/DOMWindowSpeech.idl
index 8f737c9..1822593 100644
--- a/Modules/speech/DOMWindowSpeech.idl
+++ b/modules/speech/DOMWindowSpeech.idl
@@ -27,9 +27,9 @@
     Conditional=SCRIPTED_SPEECH,
     Supplemental=DOMWindow
 ] interface DOMWindowSpeech {
-    [V8EnabledAtRuntime] attribute SpeechRecognitionConstructor webkitSpeechRecognition;
-    [V8EnabledAtRuntime] attribute SpeechRecognitionErrorConstructor webkitSpeechRecognitionError;
-    [V8EnabledAtRuntime] attribute SpeechRecognitionEventConstructor webkitSpeechRecognitionEvent;
-    [V8EnabledAtRuntime] attribute SpeechGrammarConstructor webkitSpeechGrammar;
-    [V8EnabledAtRuntime] attribute SpeechGrammarListConstructor webkitSpeechGrammarList;
+    [EnabledAtRuntime] attribute SpeechRecognitionConstructor webkitSpeechRecognition;
+    [EnabledAtRuntime] attribute SpeechRecognitionErrorConstructor webkitSpeechRecognitionError;
+    [EnabledAtRuntime] attribute SpeechRecognitionEventConstructor webkitSpeechRecognitionEvent;
+    [EnabledAtRuntime] attribute SpeechGrammarConstructor webkitSpeechGrammar;
+    [EnabledAtRuntime] attribute SpeechGrammarListConstructor webkitSpeechGrammarList;
 };
diff --git a/Modules/speech/DOMWindowSpeechSynthesis.idl b/modules/speech/DOMWindowSpeechSynthesis.idl
similarity index 100%
rename from Modules/speech/DOMWindowSpeechSynthesis.idl
rename to modules/speech/DOMWindowSpeechSynthesis.idl
diff --git a/Modules/speech/SpeechGrammar.idl b/modules/speech/SpeechGrammar.idl
similarity index 100%
rename from Modules/speech/SpeechGrammar.idl
rename to modules/speech/SpeechGrammar.idl
diff --git a/Modules/speech/SpeechGrammarList.idl b/modules/speech/SpeechGrammarList.idl
similarity index 86%
rename from Modules/speech/SpeechGrammarList.idl
rename to modules/speech/SpeechGrammarList.idl
index a0a7ec9..eba1914 100644
--- a/Modules/speech/SpeechGrammarList.idl
+++ b/modules/speech/SpeechGrammarList.idl
@@ -30,7 +30,7 @@
     ImplementationLacksVTable
 ] interface SpeechGrammarList {
     readonly attribute unsigned long length;
-    SpeechGrammar item(in [IsIndex] unsigned long index);
-    [CallWith=ScriptExecutionContext] void addFromUri(in DOMString src, in [Optional] float weight);
-    void addFromString(in DOMString string, in [Optional] float weight);
+    SpeechGrammar item([IsIndex] unsigned long index);
+    [CallWith=ScriptExecutionContext] void addFromUri(DOMString src, [Optional] float weight);
+    void addFromString(DOMString string, [Optional] float weight);
 };
diff --git a/Modules/speech/SpeechRecognition.idl b/modules/speech/SpeechRecognition.idl
similarity index 83%
rename from Modules/speech/SpeechRecognition.idl
rename to modules/speech/SpeechRecognition.idl
index 1f85d35..2d735af 100644
--- a/Modules/speech/SpeechRecognition.idl
+++ b/modules/speech/SpeechRecognition.idl
@@ -36,7 +36,7 @@
     attribute boolean interimResults;
     attribute unsigned long maxAlternatives;
 
-    void start() raises (DOMException);
+    [RaisesException] void start();
     [ImplementedAs=stopFunction] void stop();
     void abort();
 
@@ -53,12 +53,11 @@
     attribute EventListener onend;
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/speech/SpeechRecognitionAlternative.idl b/modules/speech/SpeechRecognitionAlternative.idl
similarity index 100%
rename from Modules/speech/SpeechRecognitionAlternative.idl
rename to modules/speech/SpeechRecognitionAlternative.idl
diff --git a/Modules/speech/SpeechRecognitionError.idl b/modules/speech/SpeechRecognitionError.idl
similarity index 100%
rename from Modules/speech/SpeechRecognitionError.idl
rename to modules/speech/SpeechRecognitionError.idl
diff --git a/Modules/speech/SpeechRecognitionEvent.idl b/modules/speech/SpeechRecognitionEvent.idl
similarity index 96%
rename from Modules/speech/SpeechRecognitionEvent.idl
rename to modules/speech/SpeechRecognitionEvent.idl
index 616d750..0f22f32 100644
--- a/Modules/speech/SpeechRecognitionEvent.idl
+++ b/modules/speech/SpeechRecognitionEvent.idl
@@ -30,5 +30,6 @@
     [InitializedByEventConstructor] readonly attribute unsigned long resultIndex;
     [InitializedByEventConstructor] readonly attribute SpeechRecognitionResultList results;
 
+    readonly attribute Document interpretation;
     readonly attribute Document emma;
 };
diff --git a/Modules/speech/SpeechRecognitionResult.idl b/modules/speech/SpeechRecognitionResult.idl
similarity index 95%
rename from Modules/speech/SpeechRecognitionResult.idl
rename to modules/speech/SpeechRecognitionResult.idl
index 3ae86c9..2abfc16 100644
--- a/Modules/speech/SpeechRecognitionResult.idl
+++ b/modules/speech/SpeechRecognitionResult.idl
@@ -29,6 +29,6 @@
     ImplementationLacksVTable
 ] interface SpeechRecognitionResult {
     readonly attribute unsigned long length;
-    SpeechRecognitionAlternative item(in [IsIndex] unsigned long index);
+    SpeechRecognitionAlternative item([IsIndex] unsigned long index);
     readonly attribute boolean isFinal;
 };
diff --git a/Modules/speech/SpeechRecognitionResultList.idl b/modules/speech/SpeechRecognitionResultList.idl
similarity index 95%
rename from Modules/speech/SpeechRecognitionResultList.idl
rename to modules/speech/SpeechRecognitionResultList.idl
index 09a1b5a..ffd79f0 100644
--- a/Modules/speech/SpeechRecognitionResultList.idl
+++ b/modules/speech/SpeechRecognitionResultList.idl
@@ -29,5 +29,5 @@
     ImplementationLacksVTable
 ] interface SpeechRecognitionResultList {
     readonly attribute unsigned long length;
-    SpeechRecognitionResult item(in [IsIndex] unsigned long index);
+    SpeechRecognitionResult item([IsIndex] unsigned long index);
 };
diff --git a/Modules/speech/SpeechSynthesis.idl b/modules/speech/SpeechSynthesis.idl
similarity index 100%
rename from Modules/speech/SpeechSynthesis.idl
rename to modules/speech/SpeechSynthesis.idl
diff --git a/Modules/speech/SpeechSynthesisEvent.idl b/modules/speech/SpeechSynthesisEvent.idl
similarity index 100%
rename from Modules/speech/SpeechSynthesisEvent.idl
rename to modules/speech/SpeechSynthesisEvent.idl
diff --git a/Modules/speech/SpeechSynthesisUtterance.idl b/modules/speech/SpeechSynthesisUtterance.idl
similarity index 96%
rename from Modules/speech/SpeechSynthesisUtterance.idl
rename to modules/speech/SpeechSynthesisUtterance.idl
index 4eb7d56..0b438dc 100644
--- a/Modules/speech/SpeechSynthesisUtterance.idl
+++ b/modules/speech/SpeechSynthesisUtterance.idl
@@ -27,7 +27,7 @@
     Conditional=SPEECH_SYNTHESIS,
     EventTarget,
     CallWith=ScriptExecutionContext,
-    Constructor(in [Optional=DefaultIsNullString] DOMString text)
+    Constructor([Optional=DefaultIsNullString] DOMString text)
 ] interface SpeechSynthesisUtterance {
     attribute DOMString text;
     attribute DOMString lang;
diff --git a/Modules/speech/SpeechSynthesisVoice.idl b/modules/speech/SpeechSynthesisVoice.idl
similarity index 95%
rename from Modules/speech/SpeechSynthesisVoice.idl
rename to modules/speech/SpeechSynthesisVoice.idl
index c35a933..7155d10 100644
--- a/Modules/speech/SpeechSynthesisVoice.idl
+++ b/modules/speech/SpeechSynthesisVoice.idl
@@ -30,5 +30,5 @@
     readonly attribute DOMString name;
     readonly attribute DOMString lang;
     readonly attribute boolean localService;
-    readonly attribute [ImplementedAs=isDefault] boolean default;
+    [ImplementedAs=isDefault] readonly attribute boolean default;
 };
diff --git a/Modules/vibration/NavigatorVibration.idl b/modules/vibration/NavigatorVibration.idl
similarity index 87%
rename from Modules/vibration/NavigatorVibration.idl
rename to modules/vibration/NavigatorVibration.idl
index 1faef23..1ba708a 100644
--- a/Modules/vibration/NavigatorVibration.idl
+++ b/modules/vibration/NavigatorVibration.idl
@@ -21,7 +21,7 @@
     Conditional=VIBRATION,
     Supplemental=Navigator
 ] interface NavigatorVibration {
-    void vibrate(in sequence<unsigned long> pattern) raises(DOMException);
-    void vibrate(in unsigned long time) raises(DOMException);
+    [RaisesException] void vibrate(sequence<unsigned long> pattern);
+    [RaisesException] void vibrate(unsigned long time);
 };
 
diff --git a/Modules/webaudio/AnalyserNode.idl b/modules/webaudio/AnalyserNode.idl
similarity index 89%
rename from Modules/webaudio/AnalyserNode.idl
rename to modules/webaudio/AnalyserNode.idl
index c885fde..27117e1 100644
--- a/Modules/webaudio/AnalyserNode.idl
+++ b/modules/webaudio/AnalyserNode.idl
@@ -25,8 +25,7 @@
 [
     Conditional=WEB_AUDIO
 ] interface AnalyserNode : AudioNode {
-    attribute unsigned long fftSize
-        setter raises(DOMException);
+    [SetterRaisesException] 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.
@@ -38,9 +37,9 @@
 
     // Copies the current frequency data into the passed array.
     // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
-    void getFloatFrequencyData(in Float32Array array);
-    void getByteFrequencyData(in Uint8Array array);
+    void getFloatFrequencyData(Float32Array array);
+    void getByteFrequencyData(Uint8Array array);
 
     // Real-time waveform data
-    void getByteTimeDomainData(in Uint8Array array);
+    void getByteTimeDomainData(Uint8Array array);
 };
diff --git a/Modules/webaudio/AudioBuffer.idl b/modules/webaudio/AudioBuffer.idl
similarity index 95%
rename from Modules/webaudio/AudioBuffer.idl
rename to modules/webaudio/AudioBuffer.idl
index 3c1a644..e208fc3 100644
--- a/Modules/webaudio/AudioBuffer.idl
+++ b/modules/webaudio/AudioBuffer.idl
@@ -38,6 +38,5 @@
 
     // Channel access
     readonly attribute unsigned long numberOfChannels;
-    Float32Array getChannelData(in unsigned long channelIndex)
-        raises(DOMException);
+    [RaisesException] Float32Array getChannelData(unsigned long channelIndex);
 };
diff --git a/Modules/webaudio/AudioBufferCallback.idl b/modules/webaudio/AudioBufferCallback.idl
similarity index 96%
rename from Modules/webaudio/AudioBufferCallback.idl
rename to modules/webaudio/AudioBufferCallback.idl
index 1e6b17b..3b83c36 100644
--- a/Modules/webaudio/AudioBufferCallback.idl
+++ b/modules/webaudio/AudioBufferCallback.idl
@@ -26,5 +26,5 @@
     Conditional=WEB_AUDIO,
     Callback
 ] interface AudioBufferCallback {
-    boolean handleEvent(in AudioBuffer audioBuffer);
+    boolean handleEvent(AudioBuffer audioBuffer);
 };
diff --git a/Modules/webaudio/AudioBufferSourceNode.idl b/modules/webaudio/AudioBufferSourceNode.idl
similarity index 77%
rename from Modules/webaudio/AudioBufferSourceNode.idl
rename to modules/webaudio/AudioBufferSourceNode.idl
index 2c2b9e7..36d15dc 100644
--- a/Modules/webaudio/AudioBufferSourceNode.idl
+++ b/modules/webaudio/AudioBufferSourceNode.idl
@@ -26,8 +26,7 @@
 [
     Conditional=WEB_AUDIO
 ] interface AudioBufferSourceNode : AudioSourceNode {
-    [CustomSetter] attribute AudioBuffer buffer
-        setter raises (DOMException);
+    [CustomSetter, SetterRaisesException] attribute AudioBuffer buffer;
 
     const unsigned short UNSCHEDULED_STATE = 0;
     const unsigned short SCHEDULED_STATE = 1;
@@ -44,16 +43,16 @@
     attribute double loopStart;
     attribute double loopEnd;
 
-    [V8MeasureAs=WebAudioStart] void start(in double when);
-    [V8MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(in double when, in double grainOffset);
-    [V8MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(in double when, in double grainOffset, in double grainDuration);
-    void stop(in double when);
+    [MeasureAs=WebAudioStart] void start(double when);
+    [MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(double when, double grainOffset);
+    [MeasureAs=WebAudioStart, ImplementedAs=startGrain] void start(double when, double grainOffset, double grainDuration);
+    void stop(double when);
 
 #if defined(ENABLE_LEGACY_WEB_AUDIO) && ENABLE_LEGACY_WEB_AUDIO
     attribute boolean looping; // This is an alias for the .loop attribute for backwards compatibility.
 
-    [V8MeasureAs=LegacyWebAudio] void noteOn(in double when);
-    [V8MeasureAs=LegacyWebAudio] void noteGrainOn(in double when, in double grainOffset, in double grainDuration);
-    void noteOff(in double when);
+    [MeasureAs=LegacyWebAudio] void noteOn(double when);
+    [MeasureAs=LegacyWebAudio] void noteGrainOn(double when, double grainOffset, double grainDuration);
+    void noteOff(double when);
 #endif
 };
diff --git a/modules/webaudio/AudioContext.idl b/modules/webaudio/AudioContext.idl
new file mode 100644
index 0000000..d5a47e9
--- /dev/null
+++ b/modules/webaudio/AudioContext.idl
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2010, Google Inc. All rights reserved.
+ * Copyright (C) 2011 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1.  Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
+ */
+
+[
+    Conditional=WEB_AUDIO,
+    ActiveDOMObject,
+    CustomConstructor,
+    EventTarget
+] interface AudioContext {
+    // All rendered audio ultimately connects to destination, which represents the audio hardware.
+    readonly attribute AudioDestinationNode destination;
+
+    // All scheduled times are relative to this time in seconds.
+    readonly attribute float currentTime;
+
+    // All AudioNodes in the context run at this sample-rate (sample-frames per second).
+    readonly attribute float sampleRate;
+
+    // All panning is relative to this listener.
+    readonly attribute AudioListener listener;
+
+    // Number of AudioBufferSourceNodes that are currently playing.
+    readonly attribute unsigned long activeSourceCount;
+    
+    [RaisesException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate);
+    [RaisesException] AudioBuffer createBuffer(ArrayBuffer? buffer, boolean mixToMono);
+
+    // Asynchronous audio file data decoding.
+    [RaisesException] void decodeAudioData(ArrayBuffer audioData, [Callback] AudioBufferCallback successCallback, [Optional, Callback] AudioBufferCallback errorCallback);
+
+    // Sources
+    AudioBufferSourceNode createBufferSource();
+
+#if defined(ENABLE_VIDEO) && ENABLE_VIDEO
+    [RaisesException] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
+#endif
+
+#if defined(ENABLE_MEDIA_STREAM) && ENABLE_MEDIA_STREAM
+    [RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
+    MediaStreamAudioDestinationNode createMediaStreamDestination();
+#endif
+
+    // Processing nodes
+    GainNode createGain();
+    [RaisesException] DelayNode createDelay([Optional] double maxDelayTime);
+    BiquadFilterNode createBiquadFilter();
+    WaveShaperNode createWaveShaper();
+    PannerNode createPanner();
+    ConvolverNode createConvolver();
+    DynamicsCompressorNode createDynamicsCompressor();
+    AnalyserNode createAnalyser();
+    [RaisesException] ScriptProcessorNode createScriptProcessor(unsigned long bufferSize, [Optional] unsigned long numberOfInputChannels, [Optional] unsigned long numberOfOutputChannels);
+    OscillatorNode createOscillator();
+    [RaisesException] WaveTable createWaveTable(Float32Array real, Float32Array imag);
+
+    // Channel splitting and merging
+    [RaisesException] ChannelSplitterNode createChannelSplitter([Optional] unsigned long numberOfOutputs);
+    [RaisesException] ChannelMergerNode createChannelMerger([Optional] unsigned long numberOfInputs);
+
+    // Offline rendering
+    // void prepareOfflineBufferRendering(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate);
+    attribute EventListener oncomplete;
+    void startRendering();
+
+#if defined(ENABLE_LEGACY_WEB_AUDIO) && ENABLE_LEGACY_WEB_AUDIO
+    [MeasureAs=LegacyWebAudio, ImplementedAs=createGain] GainNode createGainNode();
+    [MeasureAs=LegacyWebAudio, ImplementedAs=createDelay, RaisesException] DelayNode createDelayNode([Optional] double maxDelayTime);
+
+    [MeasureAs=LegacyWebAudio, ImplementedAs=createScriptProcessor, RaisesException] ScriptProcessorNode createJavaScriptNode(unsigned long bufferSize, [Optional] unsigned long numberOfInputChannels, [Optional] unsigned long numberOfOutputChannels);
+#endif
+
+};
diff --git a/Modules/webaudio/AudioDestinationNode.idl b/modules/webaudio/AudioDestinationNode.idl
similarity index 97%
rename from Modules/webaudio/AudioDestinationNode.idl
rename to modules/webaudio/AudioDestinationNode.idl
index ca128df..3c63058 100644
--- a/Modules/webaudio/AudioDestinationNode.idl
+++ b/modules/webaudio/AudioDestinationNode.idl
@@ -24,7 +24,7 @@
 
 [
     Conditional=WEB_AUDIO,
-    V8SkipVTableValidation
+    SkipVTableValidation
 ] interface AudioDestinationNode : AudioNode {
     readonly attribute unsigned long maxChannelCount;
 };
diff --git a/Modules/webaudio/AudioListener.idl b/modules/webaudio/AudioListener.idl
similarity index 88%
rename from Modules/webaudio/AudioListener.idl
rename to modules/webaudio/AudioListener.idl
index fe44dbd..c98b6d0 100644
--- a/Modules/webaudio/AudioListener.idl
+++ b/modules/webaudio/AudioListener.idl
@@ -33,7 +33,7 @@
     attribute float dopplerFactor;  // same as OpenAL (default 1.0)
     attribute float speedOfSound;   // in meters / second (default 343.3)
 
-    void setPosition(in float x, in float y, in float z);
-    void setOrientation(in float x, in float y, in float z, in float xUp, in float yUp, in float zUp);
-    void setVelocity(in float x, in float y, in float z);
+    void setPosition(float x, float y, float z);
+    void setOrientation(float x, float y, float z, float xUp, float yUp, float zUp);
+    void setVelocity(float x, float y, float z);
 };
diff --git a/Modules/webaudio/AudioNode.idl b/modules/webaudio/AudioNode.idl
similarity index 70%
rename from Modules/webaudio/AudioNode.idl
rename to modules/webaudio/AudioNode.idl
index eecf417..cdc1b75 100644
--- a/Modules/webaudio/AudioNode.idl
+++ b/modules/webaudio/AudioNode.idl
@@ -29,21 +29,15 @@
     readonly attribute unsigned long numberOfInputs;
     readonly attribute unsigned long numberOfOutputs;
 
-    attribute unsigned long channelCount
-        setter raises(DOMException);
+    [SetterRaisesException] attribute unsigned long channelCount;
 
-    attribute DOMString channelCountMode
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString channelCountMode;
 
-    attribute DOMString channelInterpretation
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString channelInterpretation;
 
-    void connect(in AudioNode? destination, in [Optional=DefaultIsUndefined] unsigned long output, in [Optional=DefaultIsUndefined] unsigned long input)
-        raises(DOMException);
+    [RaisesException] void connect(AudioNode? destination, [Optional=DefaultIsUndefined] unsigned long output, [Optional=DefaultIsUndefined] unsigned long input);
 
-    void connect(in AudioParam? destination, in [Optional=DefaultIsUndefined] unsigned long output)
-        raises(DOMException);
+    [RaisesException] void connect(AudioParam? destination, [Optional=DefaultIsUndefined] unsigned long output);
 
-    void disconnect(in [Optional=DefaultIsUndefined] unsigned long output)
-        raises(DOMException);
+    [RaisesException] void disconnect([Optional=DefaultIsUndefined] unsigned long output);
 };
diff --git a/Modules/webaudio/AudioParam.idl b/modules/webaudio/AudioParam.idl
similarity index 80%
rename from Modules/webaudio/AudioParam.idl
rename to modules/webaudio/AudioParam.idl
index d6d01fe..196cbf4 100644
--- a/Modules/webaudio/AudioParam.idl
+++ b/modules/webaudio/AudioParam.idl
@@ -40,22 +40,22 @@
     readonly attribute unsigned short units;
 
     // Parameter automation.
-    void setValueAtTime(in float value, in float time);
-    void linearRampToValueAtTime(in float value, in float time);
-    void exponentialRampToValueAtTime(in float value, in float time);
+    void setValueAtTime(float value, float time);
+    void linearRampToValueAtTime(float value, float time);
+    void exponentialRampToValueAtTime(float value, float time);
 
     // Exponentially approach the target with a rate having the given time constant.
-    void setTargetAtTime(in float target, in float time, in float timeConstant);
+    void setTargetAtTime(float target, float time, float timeConstant);
 
     // Sets an array of arbitrary parameter values starting at time for the given duration.
     // The number of values will be scaled to fit into the desired duration.
-    void setValueCurveAtTime(in Float32Array values, in float time, in float duration);
+    void setValueCurveAtTime(Float32Array values, float time, float duration);
 
     // Cancels all scheduled parameter changes with times greater than or equal to startTime.
-    void cancelScheduledValues(in float startTime);
+    void cancelScheduledValues(float startTime);
 
 #if defined(ENABLE_LEGACY_WEB_AUDIO) && ENABLE_LEGACY_WEB_AUDIO
-    [V8MeasureAs=LegacyWebAudio, ImplementedAs=setTargetAtTime] void setTargetValueAtTime(in float targetValue, in float time, in float timeConstant);
+    [MeasureAs=LegacyWebAudio, ImplementedAs=setTargetAtTime] void setTargetValueAtTime(float targetValue, float time, float timeConstant);
 #endif
 
 };
diff --git a/Modules/webaudio/AudioProcessingEvent.idl b/modules/webaudio/AudioProcessingEvent.idl
similarity index 100%
rename from Modules/webaudio/AudioProcessingEvent.idl
rename to modules/webaudio/AudioProcessingEvent.idl
diff --git a/Modules/webaudio/AudioSourceNode.idl b/modules/webaudio/AudioSourceNode.idl
similarity index 100%
rename from Modules/webaudio/AudioSourceNode.idl
rename to modules/webaudio/AudioSourceNode.idl
diff --git a/Modules/webaudio/BiquadFilterNode.idl b/modules/webaudio/BiquadFilterNode.idl
similarity index 91%
rename from Modules/webaudio/BiquadFilterNode.idl
rename to modules/webaudio/BiquadFilterNode.idl
index 52cf1de..d65a901 100644
--- a/Modules/webaudio/BiquadFilterNode.idl
+++ b/modules/webaudio/BiquadFilterNode.idl
@@ -42,7 +42,7 @@
     readonly attribute AudioParam Q; // Quality factor
     readonly attribute AudioParam gain; // in Decibels
 
-    void getFrequencyResponse(in Float32Array frequencyHz,
-                              in Float32Array magResponse,
-                              in Float32Array phaseResponse);
+    void getFrequencyResponse(Float32Array frequencyHz,
+                              Float32Array magResponse,
+                              Float32Array phaseResponse);
 };
diff --git a/Modules/webaudio/ChannelMergerNode.idl b/modules/webaudio/ChannelMergerNode.idl
similarity index 100%
rename from Modules/webaudio/ChannelMergerNode.idl
rename to modules/webaudio/ChannelMergerNode.idl
diff --git a/Modules/webaudio/ChannelSplitterNode.idl b/modules/webaudio/ChannelSplitterNode.idl
similarity index 100%
rename from Modules/webaudio/ChannelSplitterNode.idl
rename to modules/webaudio/ChannelSplitterNode.idl
diff --git a/Modules/webaudio/ConvolverNode.idl b/modules/webaudio/ConvolverNode.idl
similarity index 100%
rename from Modules/webaudio/ConvolverNode.idl
rename to modules/webaudio/ConvolverNode.idl
diff --git a/Modules/webaudio/DOMWindowWebAudio.idl b/modules/webaudio/DOMWindowWebAudio.idl
similarity index 88%
rename from Modules/webaudio/DOMWindowWebAudio.idl
rename to modules/webaudio/DOMWindowWebAudio.idl
index 20fece2..2857b98 100644
--- a/Modules/webaudio/DOMWindowWebAudio.idl
+++ b/modules/webaudio/DOMWindowWebAudio.idl
@@ -28,12 +28,10 @@
     Conditional=WEB_AUDIO,
     Supplemental=DOMWindow
 ] interface DOMWindowWebAudio {
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-    [V8EnabledAtRuntime] attribute AudioContextConstructor webkitAudioContext;
-    [V8EnabledAtRuntime] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
+    [EnabledAtRuntime] attribute AudioContextConstructor webkitAudioContext;
+    [EnabledAtRuntime] attribute OfflineAudioContextConstructor webkitOfflineAudioContext;
     attribute PannerNodeConstructor webkitAudioPannerNode;
     attribute AudioProcessingEventConstructor AudioProcessingEvent;
     attribute OfflineAudioCompletionEventConstructor OfflineAudioCompletionEvent;
-#endif
 };
 
diff --git a/Modules/webaudio/DelayNode.idl b/modules/webaudio/DelayNode.idl
similarity index 100%
rename from Modules/webaudio/DelayNode.idl
rename to modules/webaudio/DelayNode.idl
diff --git a/Modules/webaudio/DynamicsCompressorNode.idl b/modules/webaudio/DynamicsCompressorNode.idl
similarity index 100%
rename from Modules/webaudio/DynamicsCompressorNode.idl
rename to modules/webaudio/DynamicsCompressorNode.idl
diff --git a/Modules/webaudio/GainNode.idl b/modules/webaudio/GainNode.idl
similarity index 100%
rename from Modules/webaudio/GainNode.idl
rename to modules/webaudio/GainNode.idl
diff --git a/Modules/webaudio/MediaElementAudioSourceNode.idl b/modules/webaudio/MediaElementAudioSourceNode.idl
similarity index 100%
rename from Modules/webaudio/MediaElementAudioSourceNode.idl
rename to modules/webaudio/MediaElementAudioSourceNode.idl
diff --git a/Modules/webaudio/MediaStreamAudioDestinationNode.idl b/modules/webaudio/MediaStreamAudioDestinationNode.idl
similarity index 100%
rename from Modules/webaudio/MediaStreamAudioDestinationNode.idl
rename to modules/webaudio/MediaStreamAudioDestinationNode.idl
diff --git a/Modules/webaudio/MediaStreamAudioSourceNode.idl b/modules/webaudio/MediaStreamAudioSourceNode.idl
similarity index 100%
rename from Modules/webaudio/MediaStreamAudioSourceNode.idl
rename to modules/webaudio/MediaStreamAudioSourceNode.idl
diff --git a/Modules/webaudio/OfflineAudioCompletionEvent.idl b/modules/webaudio/OfflineAudioCompletionEvent.idl
similarity index 100%
rename from Modules/webaudio/OfflineAudioCompletionEvent.idl
rename to modules/webaudio/OfflineAudioCompletionEvent.idl
diff --git a/Modules/webaudio/OfflineAudioContext.idl b/modules/webaudio/OfflineAudioContext.idl
similarity index 91%
rename from Modules/webaudio/OfflineAudioContext.idl
rename to modules/webaudio/OfflineAudioContext.idl
index 5fa6fca..d68c2ad 100644
--- a/Modules/webaudio/OfflineAudioContext.idl
+++ b/modules/webaudio/OfflineAudioContext.idl
@@ -25,8 +25,8 @@
 [
     Conditional=WEB_AUDIO,
     EventTarget,
-    Constructor(in unsigned long numberOfChannels, in unsigned long numberOfFrames, in float sampleRate),
-    ConstructorRaisesException,
+    Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, float sampleRate),
+    RaisesException,
     CallWith=ScriptExecutionContext
 ] interface OfflineAudioContext : AudioContext {
 
diff --git a/Modules/webaudio/OscillatorNode.idl b/modules/webaudio/OscillatorNode.idl
similarity index 92%
rename from Modules/webaudio/OscillatorNode.idl
rename to modules/webaudio/OscillatorNode.idl
index 8a265b1..7a93ea9 100644
--- a/Modules/webaudio/OscillatorNode.idl
+++ b/modules/webaudio/OscillatorNode.idl
@@ -47,14 +47,14 @@
     readonly attribute AudioParam frequency; // in Hertz
     readonly attribute AudioParam detune; // in Cents
 
-    void start(in double when);
-    void stop(in double when);
+    void start(double when);
+    void stop(double when);
 
 #if defined(ENABLE_LEGACY_WEB_AUDIO) && ENABLE_LEGACY_WEB_AUDIO
-    void noteOn(in double when);
-    void noteOff(in double when);
+    void noteOn(double when);
+    void noteOff(double when);
 #endif
 
-    void setWaveTable(in WaveTable waveTable);
+    void setWaveTable(WaveTable waveTable);
 
 };
diff --git a/Modules/webaudio/PannerNode.idl b/modules/webaudio/PannerNode.idl
similarity index 92%
rename from Modules/webaudio/PannerNode.idl
rename to modules/webaudio/PannerNode.idl
index fd46057..cb2691b 100644
--- a/Modules/webaudio/PannerNode.idl
+++ b/modules/webaudio/PannerNode.idl
@@ -39,9 +39,9 @@
     [CustomSetter] attribute DOMString panningModel;
 
     // Uses a 3D cartesian coordinate system 
-    void setPosition(in float x, in float y, in float z);
-    void setOrientation(in float x, in float y, in float z);
-    void setVelocity(in float x, in float y, in float z);
+    void setPosition(float x, float y, float z);
+    void setOrientation(float x, float y, float z);
+    void setVelocity(float x, float y, float z);
 
     // Distance model
     [CustomSetter] attribute DOMString distanceModel;
diff --git a/Modules/webaudio/ScriptProcessorNode.idl b/modules/webaudio/ScriptProcessorNode.idl
similarity index 100%
rename from Modules/webaudio/ScriptProcessorNode.idl
rename to modules/webaudio/ScriptProcessorNode.idl
diff --git a/Modules/webaudio/WaveShaperNode.idl b/modules/webaudio/WaveShaperNode.idl
similarity index 100%
rename from Modules/webaudio/WaveShaperNode.idl
rename to modules/webaudio/WaveShaperNode.idl
diff --git a/Modules/webaudio/WaveTable.idl b/modules/webaudio/WaveTable.idl
similarity index 100%
rename from Modules/webaudio/WaveTable.idl
rename to modules/webaudio/WaveTable.idl
diff --git a/Modules/webdatabase/DOMWindowWebDatabase.idl b/modules/webdatabase/DOMWindowWebDatabase.idl
similarity index 81%
rename from Modules/webdatabase/DOMWindowWebDatabase.idl
rename to modules/webdatabase/DOMWindowWebDatabase.idl
index 299453d..1804834 100644
--- a/Modules/webdatabase/DOMWindowWebDatabase.idl
+++ b/modules/webdatabase/DOMWindowWebDatabase.idl
@@ -25,13 +25,9 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Supplemental=DOMWindow
 ] interface DOMWindowWebDatabase {
-    [V8EnabledAtRuntime, V8MeasureAs=OpenWebDatabase] Database openDatabase(in DOMString name, in DOMString version, in DOMString displayName, in unsigned long estimatedSize, in [Callback, Optional] DatabaseCallback creationCallback)
-        raises(DOMException);
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
+    [EnabledAtRuntime, MeasureAs=OpenWebDatabase, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, [Callback, Optional] DatabaseCallback creationCallback);
     attribute SQLExceptionConstructor SQLException;
-#endif
 };
 
diff --git a/Modules/webdatabase/Database.idl b/modules/webdatabase/Database.idl
similarity index 70%
rename from Modules/webdatabase/Database.idl
rename to modules/webdatabase/Database.idl
index ebedc7b..ef2c05c 100644
--- a/Modules/webdatabase/Database.idl
+++ b/modules/webdatabase/Database.idl
@@ -27,12 +27,10 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor
 ] interface Database {
     readonly attribute DOMString version;
-    void changeVersion(in DOMString oldVersion, in DOMString newVersion, in [Callback, Optional] SQLTransactionCallback callback, in [Callback, Optional] SQLTransactionErrorCallback errorCallback, in [Callback, Optional] VoidCallback successCallback);
-    void transaction(in [Callback] SQLTransactionCallback callback, in [Callback, Optional] SQLTransactionErrorCallback errorCallback, in [Callback, Optional] VoidCallback successCallback);
-    void readTransaction(in [Callback] SQLTransactionCallback callback, in [Callback, Optional] SQLTransactionErrorCallback errorCallback, in [Callback, Optional] VoidCallback successCallback);
+    void changeVersion(DOMString oldVersion, DOMString newVersion, [Callback, Optional] SQLTransactionCallback callback, [Callback, Optional] SQLTransactionErrorCallback errorCallback, [Callback, Optional] VoidCallback successCallback);
+    void transaction([Callback] SQLTransactionCallback callback, [Callback, Optional] SQLTransactionErrorCallback errorCallback, [Callback, Optional] VoidCallback successCallback);
+    void readTransaction([Callback] SQLTransactionCallback callback, [Callback, Optional] SQLTransactionErrorCallback errorCallback, [Callback, Optional] VoidCallback successCallback);
 };
 
diff --git a/Modules/webdatabase/SQLTransactionCallback.idl b/modules/webdatabase/DatabaseCallback.idl
similarity index 92%
copy from Modules/webdatabase/SQLTransactionCallback.idl
copy to modules/webdatabase/DatabaseCallback.idl
index d09ae9d..35518e8 100644
--- a/Modules/webdatabase/SQLTransactionCallback.idl
+++ b/modules/webdatabase/DatabaseCallback.idl
@@ -27,8 +27,8 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
-] interface SQLTransactionCallback {
-    boolean handleEvent(in SQLTransaction transaction);
+] interface DatabaseCallback {
+    boolean handleEvent(Database database);
+    boolean handleEvent(DatabaseSync database);
 };
diff --git a/Modules/webdatabase/DatabaseSync.idl b/modules/webdatabase/DatabaseSync.idl
similarity index 80%
rename from Modules/webdatabase/DatabaseSync.idl
rename to modules/webdatabase/DatabaseSync.idl
index 591ad6e..0d98977 100644
--- a/Modules/webdatabase/DatabaseSync.idl
+++ b/modules/webdatabase/DatabaseSync.idl
@@ -29,13 +29,11 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor
 ] interface DatabaseSync {
     readonly attribute DOMString version;
     readonly attribute DOMString lastErrorMessage;
-    void changeVersion(in DOMString oldVersion, in DOMString newVersion, in [Callback, Optional] SQLTransactionSyncCallback callback) raises(DOMException);
-    void transaction(in [Callback] SQLTransactionSyncCallback callback) raises(DOMException);
-    void readTransaction(in [Callback] SQLTransactionSyncCallback callback) raises(DOMException);
+    [RaisesException] void changeVersion(DOMString oldVersion, DOMString newVersion, [Callback, Optional] SQLTransactionSyncCallback callback);
+    [RaisesException] void transaction([Callback] SQLTransactionSyncCallback callback);
+    [RaisesException] void readTransaction([Callback] SQLTransactionSyncCallback callback);
 };
 
diff --git a/Modules/webdatabase/SQLError.idl b/modules/webdatabase/SQLError.idl
similarity index 97%
rename from Modules/webdatabase/SQLError.idl
rename to modules/webdatabase/SQLError.idl
index c05f350..875775a 100644
--- a/Modules/webdatabase/SQLError.idl
+++ b/modules/webdatabase/SQLError.idl
@@ -27,8 +27,6 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface SQLError {
     readonly attribute unsigned long code;
diff --git a/Modules/webdatabase/SQLException.idl b/modules/webdatabase/SQLException.idl
similarity index 98%
rename from Modules/webdatabase/SQLException.idl
rename to modules/webdatabase/SQLException.idl
index 3b6a9c3..3dc160a 100644
--- a/Modules/webdatabase/SQLException.idl
+++ b/modules/webdatabase/SQLException.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     DoNotCheckConstants,
     ImplementationLacksVTable
 ] exception SQLException {
diff --git a/Modules/webdatabase/SQLResultSetRowList.idl b/modules/webdatabase/SQLResultSet.idl
similarity index 89%
copy from Modules/webdatabase/SQLResultSetRowList.idl
copy to modules/webdatabase/SQLResultSet.idl
index 2a367f5..18ea2af 100644
--- a/Modules/webdatabase/SQLResultSetRowList.idl
+++ b/modules/webdatabase/SQLResultSet.idl
@@ -27,10 +27,10 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
     ImplementationLacksVTable
-] interface SQLResultSetRowList {
-    readonly attribute unsigned long length;
-    [Custom] any item(in unsigned long index);
+] interface SQLResultSet {
+    readonly attribute SQLResultSetRowList rows;
+
+    [GetterRaisesException] readonly attribute long insertId;
+    readonly attribute long rowsAffected;
 };
diff --git a/Modules/webdatabase/SQLResultSetRowList.idl b/modules/webdatabase/SQLResultSetRowList.idl
similarity index 94%
rename from Modules/webdatabase/SQLResultSetRowList.idl
rename to modules/webdatabase/SQLResultSetRowList.idl
index 2a367f5..1891c92 100644
--- a/Modules/webdatabase/SQLResultSetRowList.idl
+++ b/modules/webdatabase/SQLResultSetRowList.idl
@@ -27,10 +27,8 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface SQLResultSetRowList {
     readonly attribute unsigned long length;
-    [Custom] any item(in unsigned long index);
+    [Custom] any item(unsigned long index);
 };
diff --git a/Modules/webdatabase/SQLStatementCallback.idl b/modules/webdatabase/SQLStatementCallback.idl
similarity index 93%
rename from Modules/webdatabase/SQLStatementCallback.idl
rename to modules/webdatabase/SQLStatementCallback.idl
index 5ce2dd7..c984b5b 100644
--- a/Modules/webdatabase/SQLStatementCallback.idl
+++ b/modules/webdatabase/SQLStatementCallback.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
 ] interface SQLStatementCallback {
-    boolean handleEvent(in SQLTransaction transaction, in SQLResultSet resultSet);
+    boolean handleEvent(SQLTransaction transaction, SQLResultSet resultSet);
 };
diff --git a/Modules/webdatabase/SQLStatementErrorCallback.idl b/modules/webdatabase/SQLStatementErrorCallback.idl
similarity index 93%
rename from Modules/webdatabase/SQLStatementErrorCallback.idl
rename to modules/webdatabase/SQLStatementErrorCallback.idl
index ddea789..9867b47 100644
--- a/Modules/webdatabase/SQLStatementErrorCallback.idl
+++ b/modules/webdatabase/SQLStatementErrorCallback.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
 ] interface SQLStatementErrorCallback {
-    [Custom] boolean handleEvent(in SQLTransaction transaction, in SQLError error);
+    [Custom] boolean handleEvent(SQLTransaction transaction, SQLError error);
 };
diff --git a/Modules/webdatabase/SQLResultSetRowList.idl b/modules/webdatabase/SQLTransaction.idl
similarity index 83%
copy from Modules/webdatabase/SQLResultSetRowList.idl
copy to modules/webdatabase/SQLTransaction.idl
index 2a367f5..cc3ec72 100644
--- a/Modules/webdatabase/SQLResultSetRowList.idl
+++ b/modules/webdatabase/SQLTransaction.idl
@@ -27,10 +27,10 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
-    OmitConstructor,
     ImplementationLacksVTable
-] interface SQLResultSetRowList {
-    readonly attribute unsigned long length;
-    [Custom] any item(in unsigned long index);
+] interface SQLTransaction {
+    [Custom] void executeSql(DOMString sqlStatement,
+                             ObjectArray arguments,
+                             [Optional, Callback] SQLStatementCallback callback,
+                             [Optional, Callback] SQLStatementErrorCallback errorCallback);
 };
diff --git a/Modules/webdatabase/SQLTransactionCallback.idl b/modules/webdatabase/SQLTransactionCallback.idl
similarity index 94%
rename from Modules/webdatabase/SQLTransactionCallback.idl
rename to modules/webdatabase/SQLTransactionCallback.idl
index d09ae9d..cd224aa 100644
--- a/Modules/webdatabase/SQLTransactionCallback.idl
+++ b/modules/webdatabase/SQLTransactionCallback.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
 ] interface SQLTransactionCallback {
-    boolean handleEvent(in SQLTransaction transaction);
+    boolean handleEvent(SQLTransaction transaction);
 };
diff --git a/Modules/webdatabase/SQLTransactionErrorCallback.idl b/modules/webdatabase/SQLTransactionErrorCallback.idl
similarity index 95%
rename from Modules/webdatabase/SQLTransactionErrorCallback.idl
rename to modules/webdatabase/SQLTransactionErrorCallback.idl
index e8f8dda..59df1a8 100644
--- a/Modules/webdatabase/SQLTransactionErrorCallback.idl
+++ b/modules/webdatabase/SQLTransactionErrorCallback.idl
@@ -27,8 +27,7 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
 ] interface SQLTransactionErrorCallback {
-    boolean handleEvent(in SQLError error);
+    boolean handleEvent(SQLError error);
 };
diff --git a/Modules/filesystem/DirectoryReaderSync.idl b/modules/webdatabase/SQLTransactionSync.idl
similarity index 92%
copy from Modules/filesystem/DirectoryReaderSync.idl
copy to modules/webdatabase/SQLTransactionSync.idl
index c11861d..fd37398 100644
--- a/Modules/filesystem/DirectoryReaderSync.idl
+++ b/modules/webdatabase/SQLTransactionSync.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=FILE_SYSTEM,
     ImplementationLacksVTable
-] interface DirectoryReaderSync {
-    EntryArraySync readEntries() raises (FileException);
+] interface SQLTransactionSync {
+    [Custom] SQLResultSet executeSql(DOMString sqlStatement, ObjectArray arguments);
 };
diff --git a/Modules/webdatabase/SQLTransactionSyncCallback.idl b/modules/webdatabase/SQLTransactionSyncCallback.idl
similarity index 94%
rename from Modules/webdatabase/SQLTransactionSyncCallback.idl
rename to modules/webdatabase/SQLTransactionSyncCallback.idl
index 308c911..cfc8c58 100644
--- a/Modules/webdatabase/SQLTransactionSyncCallback.idl
+++ b/modules/webdatabase/SQLTransactionSyncCallback.idl
@@ -29,8 +29,7 @@
  */
 
 [
-    Conditional=SQL_DATABASE,
     Callback
 ] interface SQLTransactionSyncCallback {
-    boolean handleEvent(in SQLTransactionSync transaction);
+    boolean handleEvent(SQLTransactionSync transaction);
 };
diff --git a/Modules/websockets/WorkerContextWebSocket.idl b/modules/webdatabase/WorkerContextWebDatabase.idl
similarity index 74%
copy from Modules/websockets/WorkerContextWebSocket.idl
copy to modules/webdatabase/WorkerContextWebDatabase.idl
index aa1812a..2a48058 100644
--- a/Modules/websockets/WorkerContextWebSocket.idl
+++ b/modules/webdatabase/WorkerContextWebDatabase.idl
@@ -25,9 +25,10 @@
  */
 
 [
-    Conditional=WEB_SOCKETS,
     Supplemental=WorkerContext
-] interface WorkerContextWebSocket {
-    [V8EnabledAtRuntime] attribute WebSocketConstructor WebSocket; // Usable with the new operator
+] interface WorkerContextWebDatabase {
+    [EnabledAtRuntime, RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, [Callback, Optional] DatabaseCallback creationCallback);
+
+    [EnabledAtRuntime, RaisesException] DatabaseSync openDatabaseSync(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, [Callback, Optional] DatabaseCallback creationCallback);
 };
 
diff --git a/Modules/websockets/CloseEvent.idl b/modules/websockets/CloseEvent.idl
similarity index 100%
rename from Modules/websockets/CloseEvent.idl
rename to modules/websockets/CloseEvent.idl
diff --git a/Modules/websockets/DOMWindowWebSocket.idl b/modules/websockets/DOMWindowWebSocket.idl
similarity index 89%
rename from Modules/websockets/DOMWindowWebSocket.idl
rename to modules/websockets/DOMWindowWebSocket.idl
index 9392dc5..7e183c4 100644
--- a/Modules/websockets/DOMWindowWebSocket.idl
+++ b/modules/websockets/DOMWindowWebSocket.idl
@@ -25,12 +25,9 @@
  */
 
 [
-    Conditional=WEB_SOCKETS,
     Supplemental=DOMWindow
 ] interface DOMWindowWebSocket {
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
     attribute CloseEventConstructor CloseEvent;
-    [V8EnabledAtRuntime] attribute WebSocketConstructor WebSocket; // Usable with the new operator
-#endif
+    attribute WebSocketConstructor WebSocket; // Usable with the new operator
 };
 
diff --git a/Modules/websockets/WebSocket.idl b/modules/websockets/WebSocket.idl
similarity index 70%
rename from Modules/websockets/WebSocket.idl
rename to modules/websockets/WebSocket.idl
index 5e2ff28..e8bf2d1 100644
--- a/Modules/websockets/WebSocket.idl
+++ b/modules/websockets/WebSocket.idl
@@ -30,15 +30,13 @@
  */
 
 [
-    Conditional=WEB_SOCKETS,
     ActiveDOMObject,
-    Constructor(in DOMString url),
-    Constructor(in DOMString url, in sequence<DOMString> protocols),
-    Constructor(in DOMString url, in DOMString protocol),
-    ConstructorRaisesException,
+    Constructor(DOMString url),
+    Constructor(DOMString url, sequence<DOMString> protocols),
+    Constructor(DOMString url, DOMString protocol),
+    RaisesException,
     CallWith=ScriptExecutionContext,
-    EventTarget,
-    ConstructorParameters=1
+    EventTarget
 ] interface WebSocket {
     readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
     readonly attribute DOMString url;
@@ -63,24 +61,19 @@
 
     attribute DOMString binaryType;
 
-    boolean send(in ArrayBuffer data)
-        raises(DOMException);
-    boolean send(in ArrayBufferView data)
-        raises(DOMException);
-    boolean send(in Blob data)
-        raises(DOMException);
-    boolean send(in DOMString data)
-        raises(DOMException);
+    [RaisesException] boolean send(ArrayBuffer data);
+    [RaisesException] boolean send(ArrayBufferView data);
+    [RaisesException] boolean send(Blob data);
+    [RaisesException] boolean send(DOMString data);
 
-    void close(in [Clamp, Optional] unsigned short code, in [Optional] DOMString reason) raises(DOMException);
+    [RaisesException] void close([Clamp, Optional] unsigned short code, [Optional] DOMString reason);
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/Modules/websockets/WorkerContextWebSocket.idl b/modules/websockets/WorkerContextWebSocket.idl
similarity index 91%
rename from Modules/websockets/WorkerContextWebSocket.idl
rename to modules/websockets/WorkerContextWebSocket.idl
index aa1812a..b03867b 100644
--- a/Modules/websockets/WorkerContextWebSocket.idl
+++ b/modules/websockets/WorkerContextWebSocket.idl
@@ -25,9 +25,8 @@
  */
 
 [
-    Conditional=WEB_SOCKETS,
     Supplemental=WorkerContext
 ] interface WorkerContextWebSocket {
-    [V8EnabledAtRuntime] attribute WebSocketConstructor WebSocket; // Usable with the new operator
+    attribute WebSocketConstructor WebSocket; // Usable with the new operator
 };
 
diff --git a/page/AbstractView.idl b/page/AbstractView.idl
index c57aaea..371bb15 100644
--- a/page/AbstractView.idl
+++ b/page/AbstractView.idl
@@ -26,8 +26,7 @@
 
 // Introduced in DOM Level 2:
 [
-    ObjCCustomImplementation,
-    OmitConstructor
+    
 ] interface AbstractView {
     readonly attribute Document document;
     readonly attribute StyleMedia styleMedia;
diff --git a/page/BarInfo.idl b/page/BarInfo.idl
index 4ddb7c6..41a6f5a 100644
--- a/page/BarInfo.idl
+++ b/page/BarInfo.idl
@@ -27,7 +27,6 @@
  */
 
 [
-    OmitConstructor
 ] interface BarInfo {
     readonly attribute boolean visible;
 };
diff --git a/page/Console.idl b/page/Console.idl
index 294e5ba..a826d59 100644
--- a/page/Console.idl
+++ b/page/Console.idl
@@ -27,7 +27,6 @@
  */
 
 [
-    OmitConstructor
 ] interface Console {
 
     [CallWith=ScriptArguments|ScriptState] void debug();
@@ -38,22 +37,20 @@
     [CallWith=ScriptArguments|ScriptState] void dir();
     [CallWith=ScriptArguments|ScriptState] void dirxml();
     [CallWith=ScriptArguments|ScriptState] void table();
-    [V8Custom, CallWith=ScriptArguments|ScriptState] void trace();
-    [V8Custom, CallWith=ScriptArguments|ScriptState, ImplementedAs=assertCondition] void assert(in boolean condition);
+    [Custom, CallWith=ScriptArguments|ScriptState] void trace();
+    [Custom, CallWith=ScriptArguments|ScriptState, ImplementedAs=assertCondition] void assert(boolean condition);
     [CallWith=ScriptArguments|ScriptState] void count();
     [CallWith=ScriptArguments] void markTimeline();
 
-#if defined(ENABLE_JAVASCRIPT_DEBUGGER) && ENABLE_JAVASCRIPT_DEBUGGER
     // As per spec: http://www.w3.org/TR/WebIDL/#idl-sequence
     // "Sequences must not be used as the type of an attribute, constant or exception field."
     // FIXME: this will lead to BUG console.profiles !== console.profiles as profile will always returns new array.
     readonly attribute ScriptProfile[] profiles;
-    [Custom] void profile(in DOMString title);
-    [Custom] void profileEnd(in DOMString title);
-#endif
+    [Custom] void profile(DOMString title);
+    [Custom] void profileEnd(DOMString title);
 
-    void time(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
-    [CallWith=ScriptState] void timeEnd(in [TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
+    void time([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
+    [CallWith=ScriptState] void timeEnd([TreatNullAs=NullString, TreatUndefinedAs=NullString] DOMString title);
     [CallWith=ScriptArguments] void timeStamp();
     [CallWith=ScriptArguments|ScriptState] void group();
     [CallWith=ScriptArguments|ScriptState] void groupCollapsed();
diff --git a/page/Crypto.idl b/page/Crypto.idl
index 9d848ae..9e632ef 100644
--- a/page/Crypto.idl
+++ b/page/Crypto.idl
@@ -27,9 +27,8 @@
  */
 
 [
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface Crypto {
-    [Custom] ArrayBufferView getRandomValues(in ArrayBufferView array) raises(DOMException);
+    [Custom, RaisesException] ArrayBufferView getRandomValues(ArrayBufferView array);
 };
 
diff --git a/page/WebKitPoint.idl b/page/DOMPoint.idl
similarity index 96%
rename from page/WebKitPoint.idl
rename to page/DOMPoint.idl
index 793b849..26148d5 100644
--- a/page/WebKitPoint.idl
+++ b/page/DOMPoint.idl
@@ -25,9 +25,9 @@
 
 [
     CustomConstructor,
-    ConstructorParameters=2,
+    InterfaceName=WebKitPoint,
     ImplementationLacksVTable
-] interface WebKitPoint {
+] interface DOMPoint {
     attribute float x;
     attribute float y;
 };
diff --git a/page/DOMSecurityPolicy.idl b/page/DOMSecurityPolicy.idl
index f8b47c8..a765698 100644
--- a/page/DOMSecurityPolicy.idl
+++ b/page/DOMSecurityPolicy.idl
@@ -23,7 +23,6 @@
  */
 
 [
-    OmitConstructor,
     InterfaceName=SecurityPolicy
 ] interface DOMSecurityPolicy {
     readonly attribute boolean allowsEval;
@@ -33,14 +32,14 @@
 
     readonly attribute DOMStringList reportURIs;
 
-    boolean allowsConnectionTo(in DOMString url);
-    boolean allowsFontFrom(in DOMString url);
-    boolean allowsFormAction(in DOMString url);
-    boolean allowsFrameFrom(in DOMString url);
-    boolean allowsImageFrom(in DOMString url);
-    boolean allowsMediaFrom(in DOMString url);
-    boolean allowsObjectFrom(in DOMString url);
-    boolean allowsPluginType(in DOMString type);
-    boolean allowsScriptFrom(in DOMString url);
-    boolean allowsStyleFrom(in DOMString url);
+    boolean allowsConnectionTo(DOMString url);
+    boolean allowsFontFrom(DOMString url);
+    boolean allowsFormAction(DOMString url);
+    boolean allowsFrameFrom(DOMString url);
+    boolean allowsImageFrom(DOMString url);
+    boolean allowsMediaFrom(DOMString url);
+    boolean allowsObjectFrom(DOMString url);
+    boolean allowsPluginType(DOMString type);
+    boolean allowsScriptFrom(DOMString url);
+    boolean allowsStyleFrom(DOMString url);
 };
diff --git a/page/DOMSelection.idl b/page/DOMSelection.idl
index 5d10908..07d962b 100644
--- a/page/DOMSelection.idl
+++ b/page/DOMSelection.idl
@@ -40,32 +40,24 @@
     readonly attribute boolean isCollapsed;
     readonly attribute long rangeCount;
 
-    void collapse(in [Optional=DefaultIsUndefined] Node node, 
-                  in [Optional=DefaultIsUndefined] long index)
-        raises(DOMException);
-    void collapseToEnd()
-        raises(DOMException);
-    void collapseToStart()
-        raises(DOMException);
+    [RaisesException] void collapse([Optional=DefaultIsUndefined] Node node, 
+                  [Optional=DefaultIsUndefined] long index);
+    [RaisesException] void collapseToEnd();
+    [RaisesException] void collapseToStart();
 
     void deleteFromDocument();
-    boolean containsNode(in [Optional=DefaultIsUndefined] Node node, 
-                         in [Optional=DefaultIsUndefined] boolean allowPartial);
-    void selectAllChildren(in [Optional=DefaultIsUndefined] Node node)
-        raises(DOMException);
+    boolean containsNode([Optional=DefaultIsUndefined] Node node, 
+                         [Optional=DefaultIsUndefined] boolean allowPartial);
+    [RaisesException] void selectAllChildren([Optional=DefaultIsUndefined] Node node);
 
-    void extend(in [Optional=DefaultIsUndefined] Node node, 
-                in [Optional=DefaultIsUndefined] long offset)
-        raises(DOMException);
+    [RaisesException] void extend([Optional=DefaultIsUndefined] Node node, 
+                [Optional=DefaultIsUndefined] long offset);
 
-    Range getRangeAt(in [Optional=DefaultIsUndefined] long index)
-        raises(DOMException);
+    [RaisesException] Range getRangeAt([Optional=DefaultIsUndefined] long index);
     void removeAllRanges();
-    void addRange(in [Optional=DefaultIsUndefined] Range range);
+    void addRange([Optional=DefaultIsUndefined] Range range);
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     [NotEnumerable] DOMString toString();
-#endif
 
     // WebKit extensions
     readonly attribute Node baseNode;
@@ -77,17 +69,15 @@
     // IE's type accessor returns "none", "text" and "control"
     readonly attribute DOMString type;
 
-    void modify(in [Optional=DefaultIsUndefined] DOMString alter, 
-                in [Optional=DefaultIsUndefined] DOMString direction, 
-                in [Optional=DefaultIsUndefined] DOMString granularity);
-    void setBaseAndExtent(in [Optional=DefaultIsUndefined] Node baseNode, 
-                          in [Optional=DefaultIsUndefined] long baseOffset, 
-                          in [Optional=DefaultIsUndefined] Node extentNode, 
-                          in [Optional=DefaultIsUndefined] long extentOffset)
-        raises(DOMException);
-    void setPosition(in [Optional=DefaultIsUndefined] Node node, 
-                     in [Optional=DefaultIsUndefined] long offset)
-        raises(DOMException);
+    void modify([Optional=DefaultIsUndefined] DOMString alter, 
+                [Optional=DefaultIsUndefined] DOMString direction, 
+                [Optional=DefaultIsUndefined] DOMString granularity);
+    [RaisesException] void setBaseAndExtent([Optional=DefaultIsUndefined] Node baseNode, 
+                          [Optional=DefaultIsUndefined] long baseOffset, 
+                          [Optional=DefaultIsUndefined] Node extentNode, 
+                          [Optional=DefaultIsUndefined] long extentOffset);
+    [RaisesException] void setPosition([Optional=DefaultIsUndefined] Node node, 
+                     [Optional=DefaultIsUndefined] long offset);
 
     // IE extentions
     // http://msdn.microsoft.com/en-us/library/ms535869(VS.85).aspx
diff --git a/page/DOMWindow.idl b/page/DOMWindow.idl
index 81e5da6..c9ed86f 100644
--- a/page/DOMWindow.idl
+++ b/page/DOMWindow.idl
@@ -29,13 +29,10 @@
     CustomDeleteProperty,
     CustomGetOwnPropertySlot,
     CustomEnumerateProperty,
-    CustomPutFunction,
     EventTarget,
-    ExtendsDOMGlobalObject,
-    ReplaceableConstructor,
-    V8CustomToJSObject,
-    V8NoWrapperCache,
-    V8CustomIndexedGetter,
+    CustomToJSObject,
+    NoWrapperCache,
+    CustomIndexedGetter,
     InterfaceName=Window
 ] interface DOMWindow {
     // DOM Level 0
@@ -50,14 +47,12 @@
     [Replaceable] readonly attribute Navigator navigator;
     [Replaceable] readonly attribute Navigator clientInformation;
     readonly attribute Crypto crypto;
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-    attribute [DoNotCheckSecurity, CustomSetter, V8Unforgeable] Location location;
-#endif
-    [Replaceable, CustomGetter, V8CustomSetter] readonly attribute Event event;
+    [DoNotCheckSecurity, CustomSetter, Unforgeable] attribute Location location;
+    [Replaceable, CustomGetter, CustomSetter] readonly attribute Event event;
 
     DOMSelection getSelection();
 
-    readonly attribute [CheckSecurityForNode] Element frameElement;
+    [CheckSecurityForNode] readonly attribute Element frameElement;
 
     [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void focus();
     [DoNotCheckSecurity] void blur();
@@ -66,26 +61,26 @@
     void print();
     void stop();
 
-    [Custom] DOMWindow open(in DOMString url,
-                            in DOMString name,
-                            in [Optional] DOMString options);
+    [Custom] DOMWindow open(DOMString url,
+                            DOMString name,
+                            [Optional] DOMString options);
 
-    [Custom] any showModalDialog(in DOMString url,
-                                       in [Optional] any dialogArgs,
-                                       in [Optional] DOMString featureArgs);
+    [Custom] any showModalDialog(DOMString url,
+                                       [Optional] any dialogArgs,
+                                       [Optional] DOMString featureArgs);
 
-    void alert(in [Optional=DefaultIsUndefined] DOMString message);
-    boolean confirm(in [Optional=DefaultIsUndefined] DOMString message);
-    [TreatReturnedNullStringAs=Null] DOMString prompt(in [Optional=DefaultIsUndefined] DOMString message,
-                                                in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString defaultValue);
+    void alert([Optional=DefaultIsUndefined] DOMString message);
+    boolean confirm([Optional=DefaultIsUndefined] DOMString message);
+    [TreatReturnedNullStringAs=Null] DOMString prompt([Optional=DefaultIsUndefined] DOMString message,
+                                                [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString defaultValue);
 
-    boolean find(in [Optional=DefaultIsUndefined] DOMString string,
-                 in [Optional=DefaultIsUndefined] boolean caseSensitive,
-                 in [Optional=DefaultIsUndefined] boolean backwards,
-                 in [Optional=DefaultIsUndefined] boolean wrap,
-                 in [Optional=DefaultIsUndefined] boolean wholeWord,
-                 in [Optional=DefaultIsUndefined] boolean searchInFrames,
-                 in [Optional=DefaultIsUndefined] boolean showDialog);
+    boolean find([Optional=DefaultIsUndefined] DOMString string,
+                 [Optional=DefaultIsUndefined] boolean caseSensitive,
+                 [Optional=DefaultIsUndefined] boolean backwards,
+                 [Optional=DefaultIsUndefined] boolean wrap,
+                 [Optional=DefaultIsUndefined] boolean wholeWord,
+                 [Optional=DefaultIsUndefined] boolean searchInFrames,
+                 [Optional=DefaultIsUndefined] boolean showDialog);
 
     [Replaceable] readonly attribute  boolean offscreenBuffering;
 
@@ -102,15 +97,15 @@
     readonly attribute long pageXOffset;
     readonly attribute long pageYOffset;
 
-    void scrollBy(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
-    void scrollTo(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
-    void scroll(in [Optional=DefaultIsUndefined] long x, in [Optional=DefaultIsUndefined] long y);
-    void moveBy(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
-    void moveTo(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
-    void resizeBy(in [Optional=DefaultIsUndefined] float x, in [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
-    void resizeTo(in [Optional=DefaultIsUndefined] float width, in [Optional=DefaultIsUndefined] float height); // FIXME: this should take longs not floats.
+    void scrollBy([Optional=DefaultIsUndefined] long x, [Optional=DefaultIsUndefined] long y);
+    void scrollTo([Optional=DefaultIsUndefined] long x, [Optional=DefaultIsUndefined] long y);
+    void scroll([Optional=DefaultIsUndefined] long x, [Optional=DefaultIsUndefined] long y);
+    void moveBy([Optional=DefaultIsUndefined] float x, [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
+    void moveTo([Optional=DefaultIsUndefined] float x, [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
+    void resizeBy([Optional=DefaultIsUndefined] float x, [Optional=DefaultIsUndefined] float y); // FIXME: this should take longs not floats.
+    void resizeTo([Optional=DefaultIsUndefined] float width, [Optional=DefaultIsUndefined] float height); // FIXME: this should take longs not floats.
 
-    readonly attribute [DoNotCheckSecurity] boolean closed;
+    [DoNotCheckSecurity] readonly attribute boolean closed;
 
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute unsigned long length;
 
@@ -118,52 +113,46 @@
 
     attribute DOMString status;
     attribute DOMString defaultStatus;
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // This attribute is an alias of defaultStatus and is necessary for legacy uses.
     attribute DOMString defaultstatus;
-#endif
 
     // Self referential attributes
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow self;
-    [DoNotCheckSecurity, V8Unforgeable] readonly attribute DOMWindow window;
+    [DoNotCheckSecurity, Unforgeable] readonly attribute DOMWindow window;
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute  DOMWindow frames;
 
-    [Replaceable, DoNotCheckSecurityOnGetter, V8CustomSetter] readonly attribute DOMWindow opener;
+    [Replaceable, DoNotCheckSecurityOnGetter, CustomSetter] readonly attribute DOMWindow opener;
     [Replaceable, DoNotCheckSecurityOnGetter] readonly attribute DOMWindow parent;
-    [DoNotCheckSecurityOnGetter, V8Unforgeable] readonly attribute DOMWindow top;
+    [DoNotCheckSecurityOnGetter, Unforgeable] readonly attribute DOMWindow top;
 
     // DOM Level 2 AbstractView Interface
     readonly attribute Document document;
 
     // CSSOM View Module
-    MediaQueryList matchMedia(in DOMString query);
+    MediaQueryList matchMedia(DOMString query);
 
     // styleMedia has been removed from the CSSOM View specification.
     readonly attribute StyleMedia styleMedia;
 
     // DOM Level 2 Style Interface
-    [V8PerWorldBindings] CSSStyleDeclaration getComputedStyle(in [Optional=DefaultIsUndefined] Element element,
-                                                              in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString pseudoElement);
+    [PerWorldBindings] CSSStyleDeclaration getComputedStyle([Optional=DefaultIsUndefined] Element element,
+                                                              [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString pseudoElement);
 
     // WebKit extensions
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    CSSRuleList getMatchedCSSRules(in [Optional=DefaultIsUndefined] Element element,
-                                   in [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString pseudoElement);
-#endif
+    CSSRuleList getMatchedCSSRules([Optional=DefaultIsUndefined] Element element,
+                                   [TreatNullAs=NullString, TreatUndefinedAs=NullString,Optional=DefaultIsUndefined] DOMString pseudoElement);
 
     [Replaceable] readonly attribute double devicePixelRatio;
     
-    WebKitPoint webkitConvertPointFromPageToNode(in [Optional=DefaultIsUndefined] Node node, 
-                                                 in [Optional=DefaultIsUndefined] WebKitPoint p);
-    WebKitPoint webkitConvertPointFromNodeToPage(in [Optional=DefaultIsUndefined] Node node, 
-                                                 in [Optional=DefaultIsUndefined] WebKitPoint p);
+    DOMPoint webkitConvertPointFromPageToNode([Optional=DefaultIsUndefined] Node node,
+                                              [Optional=DefaultIsUndefined] DOMPoint p);
+    DOMPoint webkitConvertPointFromNodeToPage([Optional=DefaultIsUndefined] Node node,
+                                              [Optional=DefaultIsUndefined] DOMPoint p);
 
-    readonly attribute [V8EnabledAtRuntime] DOMApplicationCache applicationCache;
+    [EnabledAtRuntime] readonly attribute DOMApplicationCache applicationCache;
 
-    readonly attribute [V8EnabledAtRuntime] Storage sessionStorage
-        getter raises(DOMException);
-    readonly attribute [V8EnabledAtRuntime] Storage localStorage
-        getter raises(DOMException);
+    [EnabledAtRuntime, GetterRaisesException] readonly attribute Storage sessionStorage;
+    [EnabledAtRuntime, GetterRaisesException] readonly attribute Storage localStorage;
 
 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
     // This is the interface orientation in degrees. Some examples are:
@@ -175,40 +164,27 @@
     [Replaceable] readonly attribute Console console;
 
     // cross-document messaging
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in DOMString targetOrigin, in [Optional] Array messagePorts)
-        raises(DOMException);
-#else
-    // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
-    [DoNotCheckSecurity, Custom] void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort, in DOMString targetOrigin)
-        raises(DOMException);
-#endif
+    [DoNotCheckSecurity, Custom, RaisesException] void postMessage(SerializedScriptValue message, DOMString targetOrigin, [Optional] Array messagePorts);
 
-#if defined(ENABLE_WEB_TIMING) && ENABLE_WEB_TIMING
     [Replaceable] readonly attribute Performance performance;
-#endif
 
     // Timers
-    [Custom] long setTimeout(in any handler, in [Optional=DefaultIsUndefined] long timeout);
-    void clearTimeout(in [Optional=DefaultIsUndefined] long handle);
-    [Custom] long setInterval(in any handler, in [Optional=DefaultIsUndefined] long timeout);
-    void clearInterval(in [Optional=DefaultIsUndefined] long handle);
+    [Custom] long setTimeout(any handler, [Optional=DefaultIsUndefined] long timeout);
+    void clearTimeout([Optional=DefaultIsUndefined] long handle);
+    [Custom] long setInterval(any handler, [Optional=DefaultIsUndefined] long timeout);
+    void clearInterval([Optional=DefaultIsUndefined] long handle);
 
-#if defined(ENABLE_REQUEST_ANIMATION_FRAME) && ENABLE_REQUEST_ANIMATION_FRAME
-    [V8MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame(in [Callback] RequestAnimationFrameCallback callback);
-    void cancelAnimationFrame(in long id);
-    [V8MeasureAs=PrefixedRequestAnimationFrame] long webkitRequestAnimationFrame(in [Callback] RequestAnimationFrameCallback callback);
-    [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(in long id);
-    [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(in long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
-#endif
+    [MeasureAs=UnprefixedRequestAnimationFrame] long requestAnimationFrame([Callback] RequestAnimationFrameCallback callback);
+    void cancelAnimationFrame(long id);
+    [MeasureAs=PrefixedRequestAnimationFrame] long webkitRequestAnimationFrame([Callback] RequestAnimationFrameCallback callback);
+    [ImplementedAs=cancelAnimationFrame] void webkitCancelAnimationFrame(long id);
+    [ImplementedAs=cancelAnimationFrame] void webkitCancelRequestAnimationFrame(long id); // This is a deprecated alias for webkitCancelAnimationFrame(). Remove this when removing vendor prefix.
 
     // Base64
-    DOMString atob(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string)
-        raises(DOMException);
-    DOMString btoa(in [TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string)
-        raises(DOMException);
+    [RaisesException] DOMString atob([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string);
+    [RaisesException] DOMString btoa([TreatNullAs=NullString,Optional=DefaultIsUndefined] DOMString string);
 
-    attribute [Replaceable,Conditional=CSS3_CONDITIONAL_RULES] DOMWindowCSS CSS;
+    [Replaceable,Conditional=CSS3_CONDITIONAL_RULES] attribute DOMWindowCSS CSS;
 
     // Events
     attribute EventListener onabort;
@@ -292,30 +268,28 @@
 #if defined(ENABLE_ORIENTATION_EVENTS) && ENABLE_ORIENTATION_EVENTS
     attribute EventListener onorientationchange;
 #endif
-    attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] EventListener ontouchstart;
-    attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] EventListener ontouchmove;
-    attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] EventListener ontouchend;
-    attribute [Conditional=TOUCH_EVENTS,V8EnabledAtRuntime=touch] EventListener ontouchcancel;
+    [Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchstart;
+    [Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchmove;
+    [Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchend;
+    [Conditional=TOUCH_EVENTS,EnabledAtRuntime=touch] attribute EventListener ontouchcancel;
 
-    attribute [Conditional=DEVICE_ORIENTATION,V8EnabledAtRuntime] EventListener ondevicemotion;
-    attribute [Conditional=DEVICE_ORIENTATION,V8EnabledAtRuntime] EventListener ondeviceorientation;
+    [EnabledAtRuntime] attribute EventListener ondevicemotion;
+    [EnabledAtRuntime] attribute EventListener ondeviceorientation;
 
-    attribute [Conditional=PROXIMITY_EVENTS] EventListener onwebkitdeviceproximity;
+    [Conditional=PROXIMITY_EVENTS] attribute EventListener onwebkitdeviceproximity;
 
     // EventTarget interface
-    [Custom] void addEventListener(in DOMString type,
-                                  in EventListener listener,
-                                  in [Optional] boolean useCapture);
-    [Custom] void removeEventListener(in DOMString type,
-                                      in EventListener listener,
-                                      in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    [Custom] void addEventListener(DOMString type,
+                                  EventListener listener,
+                                  [Optional] boolean useCapture);
+    [Custom] void removeEventListener(DOMString type,
+                                      EventListener listener,
+                                      [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 
-    [V8Custom] void captureEvents(/*in long eventFlags*/);
-    [V8Custom] void releaseEvents(/*in long eventFlags*/);
+    [Custom] void captureEvents(/*in long eventFlags*/);
+    [Custom] void releaseEvents(/*in long eventFlags*/);
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Global constructors
     attribute StyleSheetConstructor StyleSheet;
     attribute CSSStyleSheetConstructor CSSStyleSheet;
@@ -325,10 +299,8 @@
     attribute CSSValueListConstructor CSSValueList;
     attribute WebKitCSSTransformValueConstructor WebKitCSSTransformValue;
 
-#if defined(ENABLE_CSS_SHADERS) && ENABLE_CSS_SHADERS
     attribute WebKitCSSFilterRuleConstructor WebKitCSSFilterRule;
     attribute WebKitCSSMixFunctionValueConstructor WebKitCSSMixFunctionValue;
-#endif
 
 #if defined(ENABLE_CSS_FILTERS) && ENABLE_CSS_FILTERS
     attribute WebKitCSSFilterValueConstructor WebKitCSSFilterValue;
@@ -341,9 +313,7 @@
     attribute CSSRuleConstructor CSSRule;
     attribute CSSCharsetRuleConstructor CSSCharsetRule;
     attribute CSSFontFaceRuleConstructor CSSFontFaceRule;
-#if defined(ENABLE_SHADOW_DOM) && ENABLE_SHADOW_DOM
     attribute CSSHostRuleConstructor CSSHostRule;
-#endif
     attribute CSSImportRuleConstructor CSSImportRule;
     attribute CSSMediaRuleConstructor CSSMediaRule;
     attribute CSSPageRuleConstructor CSSPageRule;
@@ -388,11 +358,11 @@
     attribute NotationConstructor Notation;
     attribute EntityConstructor Entity;
     attribute EntityReferenceConstructor EntityReference;
-    [Conditional=CANVAS_PATH, V8EnabledAtRuntime=canvasPath] attribute DOMPathConstructor Path;
+    [EnabledAtRuntime=canvasPath] attribute DOMPathConstructor Path;
     attribute ProcessingInstructionConstructor ProcessingInstruction;
-    [Conditional=SHADOW_DOM, V8EnabledAtRuntime=shadowDOM] attribute ShadowRootConstructor WebKitShadowRoot;
-    [Conditional=SHADOW_DOM, V8EnabledAtRuntime=shadowDOM] attribute HTMLContentElementConstructor HTMLContentElement;
-    [Conditional=SHADOW_DOM, V8EnabledAtRuntime=shadowDOM] attribute HTMLShadowElementConstructor HTMLShadowElement;
+    [EnabledAtRuntime=shadowDOM] attribute ShadowRootConstructor WebKitShadowRoot;
+    [EnabledAtRuntime=shadowDOM] attribute HTMLContentElementConstructor HTMLContentElement;
+    [EnabledAtRuntime=shadowDOM] attribute HTMLShadowElementConstructor HTMLShadowElement;
 
     attribute DOMSelectionConstructor Selection;
     attribute DOMWindowConstructor Window;
@@ -410,7 +380,7 @@
     attribute HTMLCanvasElementConstructor HTMLCanvasElement;
     attribute HTMLDListElementConstructor HTMLDListElement;
     [Conditional=DATALIST_ELEMENT] attribute HTMLDataListElementConstructor HTMLDataListElement;
-    [Conditional=DIALOG_ELEMENT, V8EnabledPerContext=dialogElement] attribute HTMLDialogElementConstructor HTMLDialogElement;
+    [Conditional=DIALOG_ELEMENT, EnabledPerContext=dialogElement] attribute HTMLDialogElementConstructor HTMLDialogElement;
     attribute HTMLDirectoryElementConstructor HTMLDirectoryElement;
     attribute HTMLDivElementConstructor HTMLDivElement;
     attribute HTMLEmbedElementConstructor HTMLEmbedElement;
@@ -435,9 +405,7 @@
     attribute HTMLMarqueeElementConstructor HTMLMarqueeElement;
     attribute HTMLMenuElementConstructor HTMLMenuElement;
     attribute HTMLMetaElementConstructor HTMLMetaElement;
-#if defined(ENABLE_METER_ELEMENT) && ENABLE_METER_ELEMENT
     attribute HTMLMeterElementConstructor HTMLMeterElement;
-#endif
     attribute HTMLModElementConstructor HTMLModElement;
     attribute HTMLOListElementConstructor HTMLOListElement;
     attribute HTMLObjectElementConstructor HTMLObjectElement;
@@ -447,9 +415,7 @@
     attribute HTMLParagraphElementConstructor HTMLParagraphElement;
     attribute HTMLParamElementConstructor HTMLParamElement;
     attribute HTMLPreElementConstructor HTMLPreElement;
-#if defined(ENABLE_PROGRESS_ELEMENT) && ENABLE_PROGRESS_ELEMENT
     attribute HTMLProgressElementConstructor HTMLProgressElement;
-#endif
     attribute HTMLQuoteElementConstructor HTMLQuoteElement;
     attribute HTMLScriptElementConstructor HTMLScriptElement;
     attribute HTMLSelectElementConstructor HTMLSelectElement;
@@ -476,28 +442,28 @@
     [CustomConstructor] attribute HTMLImageElementConstructorConstructor Image; // Usable with new operator
     attribute HTMLOptionElementConstructorConstructor Option; // Usable with new operator
 
-    [Conditional=ENCRYPTED_MEDIA, V8EnabledAtRuntime=encryptedMedia] attribute MediaKeyEventConstructor MediaKeyEvent;
-    attribute [Conditional=ENCRYPTED_MEDIA_V2, V8EnabledAtRuntime=encryptedMedia] MediaKeysConstructor MediaKeys;
-    attribute [Conditional=ENCRYPTED_MEDIA_V2|ENCRYPTED_MEDIA, V8EnabledAtRuntime=encryptedMedia] MediaKeyErrorConstructor MediaKeyError;
-    attribute [Conditional=ENCRYPTED_MEDIA_V2, V8EnabledAtRuntime=encryptedMedia] MediaKeyMessageEventConstructor MediaKeyMessageEvent;
-    attribute [Conditional=ENCRYPTED_MEDIA_V2, V8EnabledAtRuntime=encryptedMedia] MediaKeyNeededEventConstructor MediaKeyNeededEvent;
+    [Conditional=ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyEventConstructor MediaKeyEvent;
+    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeysConstructor MediaKeys;
+    [Conditional=ENCRYPTED_MEDIA_V2|ENCRYPTED_MEDIA, EnabledAtRuntime=encryptedMedia] attribute MediaKeyErrorConstructor MediaKeyError;
+    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyMessageEventConstructor MediaKeyMessageEvent;
+    [Conditional=ENCRYPTED_MEDIA_V2, EnabledAtRuntime=encryptedMedia] attribute MediaKeyNeededEventConstructor MediaKeyNeededEvent;
 
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute HTMLTrackElementConstructor HTMLTrackElement;
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute TextTrackConstructor TextTrack;
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueConstructor TextTrackCue; // Usable with the new operator
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueListConstructor TextTrackCueList;
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute TextTrackListConstructor TextTrackList;
-    [Conditional=VIDEO_TRACK & WEBVTT_REGIONS, V8EnabledAtRuntime=webkitVideoTrack] attribute TextTrackRegionConstructor TextTrackRegion; // Usable with the new operator
-    [Conditional=VIDEO_TRACK, V8EnabledAtRuntime=webkitVideoTrack] attribute TrackEventConstructor TrackEvent;
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute HTMLTrackElementConstructor HTMLTrackElement;
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackConstructor TextTrack;
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueConstructor TextTrackCue; // Usable with the new operator
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackCueListConstructor TextTrackCueList;
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackListConstructor TextTrackList;
+    [Conditional=VIDEO_TRACK & WEBVTT_REGIONS, EnabledAtRuntime=webkitVideoTrack] attribute TextTrackRegionConstructor TextTrackRegion; // Usable with the new operator
+    [Conditional=VIDEO_TRACK, EnabledAtRuntime=webkitVideoTrack] attribute TrackEventConstructor TrackEvent;
 
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute HTMLAudioElementConstructorConstructor Audio; // Usable with the new operator
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute HTMLAudioElementConstructor HTMLAudioElement;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute HTMLMediaElementConstructor HTMLMediaElement;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute HTMLVideoElementConstructor HTMLVideoElement;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute MediaErrorConstructor MediaError;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute TimeRangesConstructor TimeRanges;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute HTMLSourceElementConstructor HTMLSourceElement;
-    [Conditional=VIDEO, V8EnabledAtRuntime] attribute MediaControllerConstructor MediaController;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute HTMLAudioElementConstructorConstructor Audio; // Usable with the new operator
+    [Conditional=VIDEO, EnabledAtRuntime] attribute HTMLAudioElementConstructor HTMLAudioElement;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute HTMLMediaElementConstructor HTMLMediaElement;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute HTMLVideoElementConstructor HTMLVideoElement;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute MediaErrorConstructor MediaError;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute TimeRangesConstructor TimeRanges;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute HTMLSourceElementConstructor HTMLSourceElement;
+    [Conditional=VIDEO, EnabledAtRuntime] attribute MediaControllerConstructor MediaController;
 
     attribute CanvasPatternConstructor CanvasPattern;
     attribute CanvasGradientConstructor CanvasGradient;
@@ -551,36 +517,36 @@
     attribute TextEventConstructor TextEvent;
     attribute TransitionEventConstructor TransitionEvent;
     attribute UIEventConstructor UIEvent;
-    attribute WebKitAnimationEventConstructor WebKitAnimationEvent;
-    attribute WebKitTransitionEventConstructor WebKitTransitionEvent;
+    attribute AnimationEventConstructor WebKitAnimationEvent;
+    attribute TransitionEventConstructor WebKitTransitionEvent;
     attribute WheelEventConstructor WheelEvent;
     attribute XMLHttpRequestProgressEventConstructor XMLHttpRequestProgressEvent;
-    [Conditional=DEVICE_ORIENTATION, V8EnabledAtRuntime] attribute DeviceMotionEventConstructor DeviceMotionEvent;
-    [Conditional=DEVICE_ORIENTATION, V8EnabledAtRuntime] attribute DeviceOrientationEventConstructor DeviceOrientationEvent;
-    [Conditional=TOUCH_EVENTS, V8EnabledAtRuntime=touch] attribute TouchConstructor Touch;
-    [Conditional=TOUCH_EVENTS, V8EnabledAtRuntime=touch] attribute TouchEventConstructor TouchEvent;
-    [Conditional=TOUCH_EVENTS, V8EnabledAtRuntime=touch] attribute TouchListConstructor TouchList;
+    [EnabledAtRuntime] attribute DeviceMotionEventConstructor DeviceMotionEvent;
+    [EnabledAtRuntime] attribute DeviceOrientationEventConstructor DeviceOrientationEvent;
+    [Conditional=TOUCH_EVENTS, EnabledAtRuntime=touch] attribute TouchConstructor Touch;
+    [Conditional=TOUCH_EVENTS, EnabledAtRuntime=touch] attribute TouchEventConstructor TouchEvent;
+    [Conditional=TOUCH_EVENTS, EnabledAtRuntime=touch] attribute TouchListConstructor TouchList;
     attribute StorageEventConstructor StorageEvent;
     [Conditional=INPUT_SPEECH] attribute SpeechInputEventConstructor SpeechInputEvent;
     [Conditional=WEBGL] attribute WebGLContextEventConstructor WebGLContextEvent;
     [Conditional=PROXIMITY_EVENTS] attribute DeviceProximityEventConstructor DeviceProximityEvent;
-    [Conditional=REQUEST_AUTOCOMPLETE] attribute AutocompleteErrorEventConstructor AutocompleteErrorEvent;
-    [V8EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute SecurityPolicyViolationEventConstructor SecurityPolicyViolationEvent;
+    [EnabledAtRuntime=requestAutocomplete] attribute AutocompleteErrorEventConstructor AutocompleteErrorEvent;
+    [EnabledAtRuntime=experimentalContentSecurityPolicyFeatures] attribute SecurityPolicyViolationEventConstructor SecurityPolicyViolationEvent;
 
     attribute EventExceptionConstructor EventException;
 
     attribute WebKitCSSKeyframeRuleConstructor WebKitCSSKeyframeRule;
     attribute WebKitCSSKeyframesRuleConstructor WebKitCSSKeyframesRule;
-    [Conditional=CSS_REGIONS, V8EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
+    [Conditional=CSS_REGIONS, EnabledAtRuntime=cssRegions] attribute WebKitCSSRegionRuleConstructor WebKitCSSRegionRule;
 
     attribute WebKitCSSMatrixConstructor WebKitCSSMatrix; // Usable with the new operator
 
-    attribute WebKitPointConstructor WebKitPoint; // Usable with new the operator
+    attribute DOMPointConstructor WebKitPoint; // Usable with new the operator
 
     attribute ClipboardConstructor Clipboard;
 
-    [Conditional=WORKERS] attribute WorkerConstructor Worker; // Usable with the new operator
-    [Conditional=SHARED_WORKERS, V8EnabledAtRuntime] attribute SharedWorkerConstructor SharedWorker; // Usable with the new operator
+    attribute WorkerConstructor Worker; // Usable with the new operator
+    [Conditional=SHARED_WORKERS, EnabledAtRuntime] attribute SharedWorkerConstructor SharedWorker; // Usable with the new operator
 
     attribute FileConstructor File;
     attribute FileListConstructor FileList;
@@ -750,7 +716,6 @@
     attribute SVGVKernElementConstructor SVGVKernElement;
 #endif
 
-#if defined(ENABLE_FILTERS) && ENABLE_FILTERS
     attribute SVGComponentTransferFunctionElementConstructor SVGComponentTransferFunctionElement;
     attribute SVGFEBlendElementConstructor SVGFEBlendElement;
     attribute SVGFEColorMatrixElementConstructor SVGFEColorMatrixElement;
@@ -779,28 +744,24 @@
     attribute SVGFETurbulenceElementConstructor SVGFETurbulenceElement;
     attribute SVGFilterElementConstructor SVGFilterElement;
 #endif
-#endif
 
     attribute DOMFormDataConstructor FormData;
 
-    [Conditional=BLOB|FILE_SYSTEM] attribute FileErrorConstructor FileError;
-    [Conditional=BLOB] attribute FileReaderConstructor FileReader;
+    attribute FileErrorConstructor FileError;
+    attribute FileReaderConstructor FileReader;
 
-    [Conditional=BLOB] attribute DOMURLConstructor URL;
-    [Conditional=BLOB] attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
+    attribute DOMURLConstructor URL;
+    attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
 
     attribute MutationObserverConstructor WebKitMutationObserver; // FIXME: Add metrics to determine when we can remove this.
     attribute MutationObserverConstructor MutationObserver;
+    attribute MutationRecordConstructor MutationRecord;
 
-    [V8EnabledAtRuntime=mediaSource] attribute MediaSourceConstructor WebKitMediaSource;
-    [V8EnabledAtRuntime=mediaSource] attribute SourceBufferConstructor WebKitSourceBuffer;
-    [V8EnabledAtRuntime=mediaSource] attribute SourceBufferListConstructor WebKitSourceBufferList;
+    [EnabledAtRuntime=mediaSource] attribute MediaSourceConstructor WebKitMediaSource;
+    [EnabledAtRuntime=mediaSource] attribute SourceBufferConstructor WebKitSourceBuffer;
+    [EnabledAtRuntime=mediaSource] attribute SourceBufferListConstructor WebKitSourceBufferList;
 
-#endif // defined(LANGUAGE_JAVASCRIPT)
-
-#if defined(V8_BINDING) && V8_BINDING
     // window.toString() requires special handling in V8
-    [V8DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString toString();
-#endif // defined(V8_BINDING)
+    [DoNotCheckSignature, DoNotCheckSecurity, Custom, NotEnumerable] DOMString toString();
 };
 
diff --git a/page/DOMWindowPagePopup.idl b/page/DOMWindowPagePopup.idl
index 301d8b9..5cd9abf 100644
--- a/page/DOMWindowPagePopup.idl
+++ b/page/DOMWindowPagePopup.idl
@@ -32,5 +32,5 @@
     Conditional=PAGE_POPUP,
     Supplemental=DOMWindow
 ] interface DOMWindowPagePopup {
-    [V8EnabledPerContext=pagePopup] readonly attribute PagePopupController pagePopupController;
+    [EnabledPerContext=pagePopup] readonly attribute PagePopupController pagePopupController;
 };
diff --git a/page/EventSource.idl b/page/EventSource.idl
index 8af0799..0dd5c6d 100644
--- a/page/EventSource.idl
+++ b/page/EventSource.idl
@@ -31,9 +31,9 @@
 
 [
     ActiveDOMObject,
-    Constructor(in DOMString url, in [Optional] Dictionary eventSourceInit),
+    Constructor(DOMString url, [Optional] Dictionary eventSourceInit),
     CallWith=ScriptExecutionContext,
-    ConstructorRaisesException,
+    RaisesException,
     EventTarget
 ] interface EventSource {
 
@@ -54,13 +54,12 @@
     void close();
 
     // EventTarget interface
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 
 };
diff --git a/page/History.idl b/page/History.idl
index aa891c0..4f1e09e 100644
--- a/page/History.idl
+++ b/page/History.idl
@@ -24,23 +24,18 @@
  */
 
 [
-#if defined(V8_BINDING) && V8_BINDING
     CheckSecurity,
-#endif
     CustomNamedSetter,
     CustomDeleteProperty,
     CustomEnumerateProperty,
-    OmitConstructor
 ] interface History {
     readonly attribute unsigned long length;
     [CachedAttribute, Custom] readonly attribute SerializedScriptValue state;
 
     [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void back();
     [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void forward();
-    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void go(in [Optional=DefaultIsUndefined] long distance);
+    [DoNotCheckSecurity, CallWith=ScriptExecutionContext] void go([Optional=DefaultIsUndefined] long distance);
 
-    [Custom, V8EnabledPerContext=pushState] void pushState(in any data, in DOMString title, in [Optional] DOMString url)
-        raises(DOMException);
-    [Custom, V8EnabledPerContext=pushState] void replaceState(in any data, in DOMString title, in [Optional] DOMString url)
-        raises(DOMException);
+    [Custom, EnabledPerContext=pushState, RaisesException] void pushState(any data, DOMString title, [Optional] DOMString url);
+    [Custom, EnabledPerContext=pushState, RaisesException] void replaceState(any data, DOMString title, [Optional] DOMString url);
 };
diff --git a/page/Location.idl b/page/Location.idl
index c9443e2..746ecb5 100644
--- a/page/Location.idl
+++ b/page/Location.idl
@@ -27,42 +27,31 @@
  */
 
 [
-#if defined(V8_BINDING) && V8_BINDING
     CheckSecurity,
-#endif
     CustomNamedSetter,
     CustomDeleteProperty,
     CustomEnumerateProperty,
-    OmitConstructor
 ] interface Location {
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-             [DoNotCheckSecurityOnSetter, CustomSetter, V8Unforgeable] attribute DOMString href;
-#endif
+    [DoNotCheckSecurityOnSetter, CustomSetter, Unforgeable] attribute DOMString href;
 
-    [Custom, V8Unforgeable] void assign(in [Optional=DefaultIsUndefined] DOMString url);
-    [Custom, V8Unforgeable] void replace(in [Optional=DefaultIsUndefined] DOMString url);
-    [Custom, V8Unforgeable] void reload();
+    [Custom, Unforgeable] void assign([Optional=DefaultIsUndefined] DOMString url);
+    [Custom, Unforgeable] void replace([Optional=DefaultIsUndefined] DOMString url);
+    [Custom, Unforgeable] void reload();
 
     // URI decomposition attributes
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-             [CustomSetter] attribute DOMString protocol;
-             [CustomSetter] attribute DOMString host;
-             [CustomSetter] attribute DOMString hostname;
-             [CustomSetter] attribute DOMString port;
-             [CustomSetter] attribute DOMString pathname;
-             [CustomSetter] attribute DOMString search;
-             [CustomSetter] attribute DOMString hash;
+    [CustomSetter] attribute DOMString protocol;
+    [CustomSetter] attribute DOMString host;
+    [CustomSetter] attribute DOMString hostname;
+    [CustomSetter] attribute DOMString port;
+    [CustomSetter] attribute DOMString pathname;
+    [CustomSetter] attribute DOMString search;
+    [CustomSetter] attribute DOMString hash;
 
-             readonly attribute DOMString origin;
-#endif
+    readonly attribute DOMString origin;
 
     readonly attribute DOMStringList ancestorOrigins;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [NotEnumerable, Custom, V8Unforgeable, V8ReadOnly, ImplementedAs=toStringFunction] DOMString toString();
-#endif
-#if defined(V8_BINDING) && V8_BINDING
-    [NotEnumerable, Custom, V8Unforgeable, V8ReadOnly] any valueOf();
-#endif
+    [NotEnumerable, Custom, Unforgeable, ReadOnly, ImplementedAs=toStringFunction] DOMString toString();
+    [NotEnumerable, Custom, Unforgeable, ReadOnly] any valueOf();
 };
 
diff --git a/page/MemoryInfo.idl b/page/MemoryInfo.idl
index 12f88bc..d3d331b 100644
--- a/page/MemoryInfo.idl
+++ b/page/MemoryInfo.idl
@@ -29,7 +29,6 @@
  */
 
 [
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface MemoryInfo {
 
diff --git a/page/Navigator.idl b/page/Navigator.idl
index 8f1838a..cd723a1 100644
--- a/page/Navigator.idl
+++ b/page/Navigator.idl
@@ -18,7 +18,6 @@
 */
 
 [
-    OmitConstructor
 ] interface Navigator {
     readonly attribute DOMString appCodeName;
     readonly attribute DOMString appName;
diff --git a/page/PagePopupController.idl b/page/PagePopupController.idl
index 607e28b..eb67bc8 100644
--- a/page/PagePopupController.idl
+++ b/page/PagePopupController.idl
@@ -32,11 +32,11 @@
     Conditional=PAGE_POPUP,
     ImplementationLacksVTable
 ] interface PagePopupController {
-    void setValueAndClosePopup(in long numberValue, in DOMString stringValue);
+    void setValueAndClosePopup(long numberValue, DOMString stringValue);
     void setValue(DOMString value);
     void closePopup();
-    DOMString localizeNumberString(in DOMString numberString);
-    [Conditional=CALENDAR_PICKER] DOMString formatMonth(in long year, in long zeroBaseMonth);
-    [Conditional=CALENDAR_PICKER] DOMString formatShortMonth(in long year, in long zeroBaseMonth);
+    DOMString localizeNumberString(DOMString numberString);
+    [Conditional=CALENDAR_PICKER] DOMString formatMonth(long year, long zeroBaseMonth);
+    [Conditional=CALENDAR_PICKER] DOMString formatShortMonth(long year, long zeroBaseMonth);
     void histogramEnumeration(DOMString name, long sample, long boundaryValue);
 };
diff --git a/page/Performance.idl b/page/Performance.idl
index 776203b..8f1f87a 100644
--- a/page/Performance.idl
+++ b/page/Performance.idl
@@ -31,37 +31,27 @@
 
 // See: http://dev.w3.org/2006/webapi/WebTiming/
 [
-    Conditional=WEB_TIMING,
     EventTarget,
-    OmitConstructor
 ] interface Performance {
     readonly attribute PerformanceNavigation navigation;
     readonly attribute PerformanceTiming timing;
     readonly attribute MemoryInfo memory;
 
-#if defined(ENABLE_PERFORMANCE_TIMELINE) && ENABLE_PERFORMANCE_TIMELINE
     PerformanceEntryList webkitGetEntries();
-    PerformanceEntryList webkitGetEntriesByType(in DOMString entryType);
-    PerformanceEntryList webkitGetEntriesByName(in DOMString name, in [Optional=DefaultIsNullString] DOMString entryType);
-#endif
+    PerformanceEntryList webkitGetEntriesByType(DOMString entryType);
+    PerformanceEntryList webkitGetEntriesByName(DOMString name, [Optional=DefaultIsNullString] DOMString entryType);
 
-#if defined(ENABLE_RESOURCE_TIMING) && ENABLE_RESOURCE_TIMING
     void webkitClearResourceTimings();
-    void webkitSetResourceTimingBufferSize(in unsigned long maxSize);
+    void webkitSetResourceTimingBufferSize(unsigned long maxSize);
 
     attribute EventListener onwebkitresourcetimingbufferfull;
-#endif
 
     // See http://www.w3.org/TR/2012/CR-user-timing-20120726/
-#if defined(ENABLE_USER_TIMING) && ENABLE_USER_TIMING
-    void webkitMark(in DOMString markName)
-        raises(DOMException);
-    void webkitClearMarks(in [Optional=DefaultIsNullString]  DOMString markName);
+    [RaisesException] void webkitMark(DOMString markName);
+    void webkitClearMarks([Optional=DefaultIsNullString]  DOMString markName);
 
-    void webkitMeasure(in DOMString measureName, in [Optional=DefaultIsNullString] DOMString startMark, in [Optional=DefaultIsNullString] DOMString endMark)
-        raises(DOMException);
-    void webkitClearMeasures(in [Optional=DefaultIsNullString] DOMString measureName);
-#endif
+    [RaisesException] void webkitMeasure(DOMString measureName, [Optional=DefaultIsNullString] DOMString startMark, [Optional=DefaultIsNullString] DOMString endMark);
+    void webkitClearMeasures([Optional=DefaultIsNullString] DOMString measureName);
 
     // See http://www.w3.org/TR/hr-time/ for details.
     double now();
diff --git a/page/PerformanceEntry.idl b/page/PerformanceEntry.idl
index ff38ded..045cab3 100644
--- a/page/PerformanceEntry.idl
+++ b/page/PerformanceEntry.idl
@@ -30,10 +30,7 @@
 
 // See: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PerformanceTimeline/Overview.html
 [
-    Conditional=WEB_TIMING,
-    Conditional=PERFORMANCE_TIMELINE,
     CustomToJSObject,
-    OmitConstructor
 ] interface PerformanceEntry {
     readonly attribute DOMString name;
     readonly attribute DOMString entryType;
diff --git a/page/PerformanceEntryList.idl b/page/PerformanceEntryList.idl
index 56f5150..342e463 100644
--- a/page/PerformanceEntryList.idl
+++ b/page/PerformanceEntryList.idl
@@ -30,13 +30,10 @@
 
 // See: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/PerformanceTimeline/Overview.html
 [
-    Conditional=WEB_TIMING,
-    Conditional=PERFORMANCE_TIMELINE,
-    OmitConstructor,
     IndexedGetter,
     ImplementationLacksVTable
 ] interface PerformanceEntryList {
     readonly attribute unsigned long length;
-    PerformanceEntry item(in unsigned long index);
+    PerformanceEntry item(unsigned long index);
 };
 
diff --git a/page/PerformanceMark.idl b/page/PerformanceMark.idl
index 85c12e0..6bae83e 100644
--- a/page/PerformanceMark.idl
+++ b/page/PerformanceMark.idl
@@ -23,8 +23,5 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=USER_TIMING,
-    OmitConstructor
-] interface PerformanceMark : PerformanceEntry {
+interface PerformanceMark : PerformanceEntry {
 };
diff --git a/page/PerformanceMeasure.idl b/page/PerformanceMeasure.idl
index 3900eb5..ee032b7 100644
--- a/page/PerformanceMeasure.idl
+++ b/page/PerformanceMeasure.idl
@@ -23,8 +23,5 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[
-    Conditional=USER_TIMING,
-    OmitConstructor
-] interface PerformanceMeasure : PerformanceEntry {
+interface PerformanceMeasure : PerformanceEntry {
 };
diff --git a/page/PerformanceNavigation.idl b/page/PerformanceNavigation.idl
index e9add4c..c48ef41 100644
--- a/page/PerformanceNavigation.idl
+++ b/page/PerformanceNavigation.idl
@@ -30,8 +30,6 @@
 
 // See: http://www.w3.org/TR/navigation-timing/
 [
-    Conditional=WEB_TIMING,
-    OmitConstructor
 ] interface PerformanceNavigation {
     const unsigned short TYPE_NAVIGATE = 0;
     const unsigned short TYPE_RELOAD = 1;
diff --git a/page/PerformanceResourceTiming.idl b/page/PerformanceResourceTiming.idl
index b5d6053..860c91d 100644
--- a/page/PerformanceResourceTiming.idl
+++ b/page/PerformanceResourceTiming.idl
@@ -29,10 +29,7 @@
  */
 
 // See: https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ResourceTiming/Overview.html
-[
-    Conditional=RESOURCE_TIMING,
-    OmitConstructor
-] interface PerformanceResourceTiming : PerformanceEntry {
+interface PerformanceResourceTiming : PerformanceEntry {
     readonly attribute DOMString initiatorType;
 
     readonly attribute double redirectStart;
diff --git a/page/PerformanceTiming.idl b/page/PerformanceTiming.idl
index ea823aa..874dead 100644
--- a/page/PerformanceTiming.idl
+++ b/page/PerformanceTiming.idl
@@ -30,8 +30,6 @@
 
 // See: http://dev.w3.org/2006/webapi/WebTiming/
 [
-    Conditional=WEB_TIMING,
-    OmitConstructor
 ] interface PerformanceTiming {
     readonly attribute unsigned long long navigationStart;
     readonly attribute unsigned long long unloadEventStart;
diff --git a/page/Screen.idl b/page/Screen.idl
index 0a06fa8..69f5dc1 100644
--- a/page/Screen.idl
+++ b/page/Screen.idl
@@ -28,7 +28,6 @@
 
 
 [
-    OmitConstructor
 ] interface Screen {
     readonly attribute unsigned long height;
     readonly attribute unsigned long width;
diff --git a/page/SpeechInputResultList.idl b/page/SpeechInputResultList.idl
index fa82ade..c5b32ac 100644
--- a/page/SpeechInputResultList.idl
+++ b/page/SpeechInputResultList.idl
@@ -29,6 +29,6 @@
     ImplementationLacksVTable
 ] interface SpeechInputResultList {
     readonly attribute unsigned long length;
-    SpeechInputResult item(in [IsIndex] unsigned long index);
+    SpeechInputResult item([IsIndex] unsigned long index);
 };
 
diff --git a/page/WorkerNavigator.idl b/page/WorkerNavigator.idl
index 03d9c79..353aadd 100644
--- a/page/WorkerNavigator.idl
+++ b/page/WorkerNavigator.idl
@@ -27,8 +27,6 @@
  */
 
 [
-    Conditional=WORKERS,
-    OmitConstructor
 ] interface WorkerNavigator {
     readonly attribute DOMString appName;
     readonly attribute DOMString appVersion;
diff --git a/plugins/DOMMimeTypeArray.idl b/plugins/DOMMimeTypeArray.idl
index 327c55b..19c52ce 100644
--- a/plugins/DOMMimeTypeArray.idl
+++ b/plugins/DOMMimeTypeArray.idl
@@ -24,7 +24,7 @@
     InterfaceName=MimeTypeArray
 ] interface DOMMimeTypeArray {
     readonly attribute unsigned long length;
-    DOMMimeType item(in [Optional=DefaultIsUndefined] unsigned long index);
-    DOMMimeType namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    DOMMimeType item([Optional=DefaultIsUndefined] unsigned long index);
+    DOMMimeType namedItem([Optional=DefaultIsUndefined] DOMString name);
 };
 
diff --git a/plugins/DOMPlugin.idl b/plugins/DOMPlugin.idl
index 523cebd..37875bf 100644
--- a/plugins/DOMPlugin.idl
+++ b/plugins/DOMPlugin.idl
@@ -27,7 +27,7 @@
     readonly attribute DOMString filename;
     readonly attribute DOMString description;
     readonly attribute unsigned long length;
-    DOMMimeType item(in [Optional=DefaultIsUndefined] unsigned long index);
-    DOMMimeType namedItem(in [Optional=DefaultIsUndefined] DOMString name);
+    DOMMimeType item([Optional=DefaultIsUndefined] unsigned long index);
+    DOMMimeType namedItem([Optional=DefaultIsUndefined] DOMString name);
 };
 
diff --git a/plugins/DOMPluginArray.idl b/plugins/DOMPluginArray.idl
index e38c927..8344fc1 100644
--- a/plugins/DOMPluginArray.idl
+++ b/plugins/DOMPluginArray.idl
@@ -24,8 +24,8 @@
     InterfaceName=PluginArray
 ] interface DOMPluginArray {
     readonly attribute unsigned long length;
-    DOMPlugin item(in [Optional=DefaultIsUndefined] unsigned long index);
-    DOMPlugin namedItem(in [Optional=DefaultIsUndefined] DOMString name);
-    void refresh(in [Optional=DefaultIsUndefined] boolean reload);
+    DOMPlugin item([Optional=DefaultIsUndefined] unsigned long index);
+    DOMPlugin namedItem([Optional=DefaultIsUndefined] DOMString name);
+    void refresh([Optional=DefaultIsUndefined] boolean reload);
 };
 
diff --git a/make-file-arrays.py b/scripts/make-file-arrays.py
similarity index 100%
rename from make-file-arrays.py
rename to scripts/make-file-arrays.py
diff --git a/storage/Storage.idl b/storage/Storage.idl
index 8097db6..089f2fc 100644
--- a/storage/Storage.idl
+++ b/storage/Storage.idl
@@ -24,22 +24,17 @@
  */
 
 [
-    NamedGetter,
+    CustomNamedGetter,
     CustomDeleteProperty,
     CustomEnumerateProperty,
-    V8CustomIndexedGetter,
+    CustomIndexedGetter,
     CustomNamedSetter,
 ] interface Storage {
-    [NotEnumerable] readonly attribute unsigned long length getter raises(DOMException);
-    [NotEnumerable, TreatReturnedNullStringAs=Null] DOMString key(in unsigned long index)
-        raises(DOMException);
-    [NotEnumerable, TreatReturnedNullStringAs=Null] DOMString getItem(in DOMString key)
-        raises(DOMException);
-    [NotEnumerable] void setItem(in DOMString key, in DOMString data) 
-        raises(DOMException);
-    [NotEnumerable] void removeItem(in DOMString key)
-        raises(DOMException);
-    [NotEnumerable] void clear()
-        raises(DOMException);
+    [NotEnumerable, GetterRaisesException] readonly attribute unsigned long length;
+    [NotEnumerable, TreatReturnedNullStringAs=Null, RaisesException] DOMString key(unsigned long index);
+    [NotEnumerable, TreatReturnedNullStringAs=Null, RaisesException] DOMString getItem(DOMString key);
+    [NotEnumerable, RaisesException] void setItem(DOMString key, DOMString data);
+    [NotEnumerable, RaisesException] void removeItem(DOMString key);
+    [NotEnumerable, RaisesException] void clear();
 };
 
diff --git a/storage/StorageEvent.idl b/storage/StorageEvent.idl
index 6880d19..b40ec53 100644
--- a/storage/StorageEvent.idl
+++ b/storage/StorageEvent.idl
@@ -32,16 +32,16 @@
     [InitializedByEventConstructor] readonly attribute DOMString url;
     [InitializedByEventConstructor] readonly attribute Storage storageArea;
 
-    void initStorageEvent(in [Optional=DefaultIsUndefined] DOMString typeArg, 
-                          in [Optional=DefaultIsUndefined] boolean canBubbleArg, 
-                          in [Optional=DefaultIsUndefined] boolean cancelableArg, 
-                          in [Optional=DefaultIsUndefined] DOMString keyArg, 
-                          in [Optional=DefaultIsUndefined,TreatNullAs=NullString] DOMString oldValueArg, 
-                          in [Optional=DefaultIsUndefined,TreatNullAs=NullString] DOMString newValueArg, 
-                          in [Optional=DefaultIsUndefined] DOMString urlArg, 
-                          in [Optional=DefaultIsUndefined] Storage storageAreaArg);
+    void initStorageEvent([Optional=DefaultIsUndefined] DOMString typeArg, 
+                          [Optional=DefaultIsUndefined] boolean canBubbleArg, 
+                          [Optional=DefaultIsUndefined] boolean cancelableArg, 
+                          [Optional=DefaultIsUndefined] DOMString keyArg, 
+                          [Optional=DefaultIsUndefined,TreatNullAs=NullString] DOMString oldValueArg, 
+                          [Optional=DefaultIsUndefined,TreatNullAs=NullString] DOMString newValueArg, 
+                          [Optional=DefaultIsUndefined] DOMString urlArg, 
+                          [Optional=DefaultIsUndefined] Storage storageAreaArg);
 
     // Needed once we support init<blank>EventNS
-    // void initStorageEventNS(in DOMString namespaceURI, in DOMString typeArg, in boolean canBubbleArg, in boolean cancelableArg, in DOMString keyArg, in DOMString oldValueArg, in DOMString newValueArg, in DOMString urlArg, in Storage storageAreaArg);
+    // void initStorageEventNS(DOMString namespaceURI, DOMString typeArg, boolean canBubbleArg, boolean cancelableArg, DOMString keyArg, DOMString oldValueArg, DOMString newValueArg, DOMString urlArg, Storage storageAreaArg);
 };
 
diff --git a/svg/ElementTimeControl.idl b/svg/ElementTimeControl.idl
index 6391176..42632cd 100644
--- a/svg/ElementTimeControl.idl
+++ b/svg/ElementTimeControl.idl
@@ -26,12 +26,11 @@
  
 [
     Conditional=SVG,
-    ObjCProtocol,
-    OmitConstructor
+    
 ] interface ElementTimeControl { 
     void beginElement();
-    void beginElementAt(in [Optional=DefaultIsUndefined] float offset);
+    void beginElementAt([Optional=DefaultIsUndefined] float offset);
     void endElement();
-    void endElementAt(in [Optional=DefaultIsUndefined] float offset);
+    void endElementAt([Optional=DefaultIsUndefined] float offset);
 };
 
diff --git a/svg/SVGAltGlyphElement.idl b/svg/SVGAltGlyphElement.idl
index 52bdabc..2e1f4c5 100644
--- a/svg/SVGAltGlyphElement.idl
+++ b/svg/SVGAltGlyphElement.idl
@@ -26,9 +26,7 @@
 [
     Conditional=SVG&SVG_FONTS,
 ] interface SVGAltGlyphElement : SVGTextPositioningElement, SVGURIReference {
-    attribute DOMString glyphRef
-        setter raises(DOMException);
-    attribute DOMString format
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString glyphRef;
+    [SetterRaisesException] attribute DOMString format;
 };
 
diff --git a/svg/SVGAngle.idl b/svg/SVGAngle.idl
index 5988c0e..2bbdeae 100644
--- a/svg/SVGAngle.idl
+++ b/svg/SVGAngle.idl
@@ -34,13 +34,10 @@
     [StrictTypeChecking] attribute float value;
     [StrictTypeChecking] attribute float valueInSpecifiedUnits;
 
-    [TreatNullAs=NullString] attribute DOMString valueAsString
-        setter raises(DOMException);
+    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString valueAsString;
 
-    [StrictTypeChecking] void newValueSpecifiedUnits(in unsigned short unitType, in float valueInSpecifiedUnits)
-        raises(DOMException);
+    [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits);
 
-    [StrictTypeChecking] void convertToSpecifiedUnits(in unsigned short unitType)
-        raises(DOMException);
+    [StrictTypeChecking, RaisesException] void convertToSpecifiedUnits(unsigned short unitType);
 };
 
diff --git a/svg/SVGAnimatedBoolean.idl b/svg/SVGAnimatedBoolean.idl
index c79350c..c00f475 100644
--- a/svg/SVGAnimatedBoolean.idl
+++ b/svg/SVGAnimatedBoolean.idl
@@ -27,8 +27,7 @@
     Conditional=SVG,
     ImplementationLacksVTable
 ] interface SVGAnimatedBoolean {
-    [StrictTypeChecking] attribute boolean baseVal
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute boolean baseVal;
     readonly attribute boolean animVal;
 };
 
diff --git a/svg/SVGAnimatedEnumeration.idl b/svg/SVGAnimatedEnumeration.idl
index 2c7de45..21f85ba 100644
--- a/svg/SVGAnimatedEnumeration.idl
+++ b/svg/SVGAnimatedEnumeration.idl
@@ -27,8 +27,7 @@
     Conditional=SVG,
     ImplementationLacksVTable
 ] interface SVGAnimatedEnumeration {
-    [StrictTypeChecking] attribute unsigned short baseVal
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute unsigned short baseVal;
     readonly attribute unsigned short animVal;
 };
 
diff --git a/svg/SVGAnimatedInteger.idl b/svg/SVGAnimatedInteger.idl
index b89de0e..d827c4e 100644
--- a/svg/SVGAnimatedInteger.idl
+++ b/svg/SVGAnimatedInteger.idl
@@ -27,8 +27,7 @@
     Conditional=SVG,
     ImplementationLacksVTable
 ] interface SVGAnimatedInteger {
-    [StrictTypeChecking] attribute long baseVal
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute long baseVal;
     readonly attribute long animVal;
 };
 
diff --git a/svg/SVGAnimatedNumber.idl b/svg/SVGAnimatedNumber.idl
index ee346c2..4c5e1f9 100644
--- a/svg/SVGAnimatedNumber.idl
+++ b/svg/SVGAnimatedNumber.idl
@@ -28,8 +28,7 @@
     Conditional=SVG,
     ImplementationLacksVTable
 ] interface SVGAnimatedNumber {
-    [StrictTypeChecking] attribute float baseVal
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute float baseVal;
     readonly attribute float animVal;
 };
 
diff --git a/svg/SVGAnimatedString.idl b/svg/SVGAnimatedString.idl
index 60ccd49..62a8dbe 100644
--- a/svg/SVGAnimatedString.idl
+++ b/svg/SVGAnimatedString.idl
@@ -27,8 +27,7 @@
     Conditional=SVG,
     ImplementationLacksVTable
 ] interface SVGAnimatedString {
-    attribute DOMString baseVal
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString baseVal;
     readonly attribute DOMString animVal;
 };
 
diff --git a/svg/SVGAnimationElement.idl b/svg/SVGAnimationElement.idl
index 2afef76..2f0b912 100644
--- a/svg/SVGAnimationElement.idl
+++ b/svg/SVGAnimationElement.idl
@@ -25,7 +25,6 @@
 
 [
     Conditional=SVG,
-    OmitConstructor
 ] interface SVGAnimationElement : SVGElement,
                                                   SVGTests,
                                                   SVGExternalResourcesRequired,
@@ -34,7 +33,6 @@
 
     float getStartTime();
     float getCurrentTime();
-    float getSimpleDuration()
-        raises(DOMException);
+    [RaisesException] float getSimpleDuration();
 };
 
diff --git a/svg/SVGColor.idl b/svg/SVGColor.idl
index 13943b1..31dcd4b 100644
--- a/svg/SVGColor.idl
+++ b/svg/SVGColor.idl
@@ -32,13 +32,10 @@
     readonly attribute RGBColor rgbColor;
     // FIXME: readonly attribute SVGICCColor iccColor;
 
-    [StrictTypeChecking] void setRGBColor(in DOMString rgbColor)
-        raises(DOMException, SVGException);
+    [StrictTypeChecking, RaisesException] void setRGBColor(DOMString rgbColor);
 
-    [StrictTypeChecking] void setRGBColorICCColor(in DOMString rgbColor, in DOMString iccColor)
-        raises(DOMException, SVGException);
+    [StrictTypeChecking, RaisesException] void setRGBColorICCColor(DOMString rgbColor, DOMString iccColor);
 
-    [StrictTypeChecking] void setColor(in unsigned short colorType, in DOMString rgbColor, in DOMString iccColor)
-        raises(DOMException, SVGException);
+    [StrictTypeChecking, RaisesException] void setColor(unsigned short colorType, DOMString rgbColor, DOMString iccColor);
 };
 
diff --git a/svg/SVGComponentTransferFunctionElement.idl b/svg/SVGComponentTransferFunctionElement.idl
index bc0ce06..393bef7 100644
--- a/svg/SVGComponentTransferFunctionElement.idl
+++ b/svg/SVGComponentTransferFunctionElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGComponentTransferFunctionElement : SVGElement {
     // Component Transfer Types
diff --git a/svg/SVGDocument.idl b/svg/SVGDocument.idl
index 024c078..514f3e1 100644
--- a/svg/SVGDocument.idl
+++ b/svg/SVGDocument.idl
@@ -21,12 +21,11 @@
 
 [
     Conditional=SVG,
-    V8CustomToJSObject
+    CustomToJSObject
 ] interface SVGDocument : Document {
     readonly attribute SVGSVGElement        rootElement;
 
     // Overwrite the one in events::DocumentEvent
-    Event createEvent(in [Optional=DefaultIsUndefined] DOMString eventType)
-        raises(DOMException);
+    [RaisesException] Event createEvent([Optional=DefaultIsUndefined] DOMString eventType);
 };
 
diff --git a/svg/SVGElement.idl b/svg/SVGElement.idl
index 9f2d0b8..589bb5c 100644
--- a/svg/SVGElement.idl
+++ b/svg/SVGElement.idl
@@ -22,10 +22,10 @@
 
 [
     Conditional=SVG,
-    V8CustomToJSObject
+    CustomToJSObject
 ] interface SVGElement : Element {
     [Reflect] attribute DOMString id;
-    [TreatNullAs=NullString] attribute DOMString xmlbase setter raises(DOMException);
+    [TreatNullAs=NullString, SetterRaisesException] attribute DOMString xmlbase;
     readonly attribute SVGSVGElement ownerSVGElement;
     readonly attribute SVGElement viewportElement;
 };
diff --git a/svg/SVGElementInstance.idl b/svg/SVGElementInstance.idl
index 7d2a2bc..ad7b2cf 100644
--- a/svg/SVGElementInstance.idl
+++ b/svg/SVGElementInstance.idl
@@ -27,12 +27,7 @@
 [
     Conditional=SVG,
     EventTarget
-] interface SVGElementInstance
-#if defined(LANGUAGE_OBJECTIVE_C) && LANGUAGE_OBJECTIVE_C
-    : Object, EventTarget
-#else
-    : EventTarget
-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
+] interface SVGElementInstance : EventTarget
 {
     readonly attribute SVGElement correspondingElement;
     readonly attribute SVGUseElement correspondingUseElement;
@@ -44,46 +39,44 @@
     readonly attribute SVGElementInstance nextSibling;
 
     // EventTarget
-#if !defined(LANGUAGE_OBJECTIVE_C) || !LANGUAGE_OBJECTIVE_C
-    attribute [NotEnumerable] EventListener onabort;
-    attribute [NotEnumerable] EventListener onblur;
-    attribute [NotEnumerable] EventListener onchange;
-    attribute [NotEnumerable] EventListener onclick;
-    attribute [NotEnumerable] EventListener oncontextmenu;
-    attribute [NotEnumerable] EventListener ondblclick;
-    attribute [NotEnumerable] EventListener onerror;
-    attribute [NotEnumerable] EventListener onfocus;
-    attribute [NotEnumerable] EventListener oninput;
-    attribute [NotEnumerable] EventListener onkeydown;
-    attribute [NotEnumerable] EventListener onkeypress;
-    attribute [NotEnumerable] EventListener onkeyup;
-    attribute [NotEnumerable] EventListener onload;
-    attribute [NotEnumerable] EventListener onmousedown;
-    attribute [NotEnumerable] EventListener onmousemove;
-    attribute [NotEnumerable] EventListener onmouseout;
-    attribute [NotEnumerable] EventListener onmouseover;
-    attribute [NotEnumerable] EventListener onmouseup;
-    attribute [NotEnumerable] EventListener onmousewheel;
-    attribute [NotEnumerable] EventListener onbeforecut;
-    attribute [NotEnumerable] EventListener oncut;
-    attribute [NotEnumerable] EventListener onbeforecopy;
-    attribute [NotEnumerable] EventListener oncopy;
-    attribute [NotEnumerable] EventListener onbeforepaste;
-    attribute [NotEnumerable] EventListener onpaste;
-    attribute [NotEnumerable] EventListener ondragenter;
-    attribute [NotEnumerable] EventListener ondragover;
-    attribute [NotEnumerable] EventListener ondragleave;
-    attribute [NotEnumerable] EventListener ondrop;
-    attribute [NotEnumerable] EventListener ondragstart;
-    attribute [NotEnumerable] EventListener ondrag;
-    attribute [NotEnumerable] EventListener ondragend;
-    attribute [NotEnumerable] EventListener onreset;
-    attribute [NotEnumerable] EventListener onresize;
-    attribute [NotEnumerable] EventListener onscroll;
-    attribute [NotEnumerable] EventListener onsearch;
-    attribute [NotEnumerable] EventListener onselect;
-    attribute [NotEnumerable] EventListener onselectstart;
-    attribute [NotEnumerable] EventListener onsubmit;
-    attribute [NotEnumerable] EventListener onunload;
-#endif /* defined(LANGUAGE_OBJECTIVE_C) */
+    [NotEnumerable] attribute EventListener onabort;
+    [NotEnumerable] attribute EventListener onblur;
+    [NotEnumerable] attribute EventListener onchange;
+    [NotEnumerable] attribute EventListener onclick;
+    [NotEnumerable] attribute EventListener oncontextmenu;
+    [NotEnumerable] attribute EventListener ondblclick;
+    [NotEnumerable] attribute EventListener onerror;
+    [NotEnumerable] attribute EventListener onfocus;
+    [NotEnumerable] attribute EventListener oninput;
+    [NotEnumerable] attribute EventListener onkeydown;
+    [NotEnumerable] attribute EventListener onkeypress;
+    [NotEnumerable] attribute EventListener onkeyup;
+    [NotEnumerable] attribute EventListener onload;
+    [NotEnumerable] attribute EventListener onmousedown;
+    [NotEnumerable] attribute EventListener onmousemove;
+    [NotEnumerable] attribute EventListener onmouseout;
+    [NotEnumerable] attribute EventListener onmouseover;
+    [NotEnumerable] attribute EventListener onmouseup;
+    [NotEnumerable] attribute EventListener onmousewheel;
+    [NotEnumerable] attribute EventListener onbeforecut;
+    [NotEnumerable] attribute EventListener oncut;
+    [NotEnumerable] attribute EventListener onbeforecopy;
+    [NotEnumerable] attribute EventListener oncopy;
+    [NotEnumerable] attribute EventListener onbeforepaste;
+    [NotEnumerable] attribute EventListener onpaste;
+    [NotEnumerable] attribute EventListener ondragenter;
+    [NotEnumerable] attribute EventListener ondragover;
+    [NotEnumerable] attribute EventListener ondragleave;
+    [NotEnumerable] attribute EventListener ondrop;
+    [NotEnumerable] attribute EventListener ondragstart;
+    [NotEnumerable] attribute EventListener ondrag;
+    [NotEnumerable] attribute EventListener ondragend;
+    [NotEnumerable] attribute EventListener onreset;
+    [NotEnumerable] attribute EventListener onresize;
+    [NotEnumerable] attribute EventListener onscroll;
+    [NotEnumerable] attribute EventListener onsearch;
+    [NotEnumerable] attribute EventListener onselect;
+    [NotEnumerable] attribute EventListener onselectstart;
+    [NotEnumerable] attribute EventListener onsubmit;
+    [NotEnumerable] attribute EventListener onunload;
 };
diff --git a/svg/SVGElementInstanceList.idl b/svg/SVGElementInstanceList.idl
index 2aca3fa..24af453 100644
--- a/svg/SVGElementInstanceList.idl
+++ b/svg/SVGElementInstanceList.idl
@@ -28,5 +28,5 @@
 ] interface SVGElementInstanceList {
     readonly attribute unsigned long length;
 
-    SVGElementInstance item(in [Optional=DefaultIsUndefined] unsigned long index);
+    SVGElementInstance item([Optional=DefaultIsUndefined] unsigned long index);
 };
diff --git a/svg/SVGException.idl b/svg/SVGException.idl
index 7b28b28..d9872df 100644
--- a/svg/SVGException.idl
+++ b/svg/SVGException.idl
@@ -28,10 +28,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // SVGExceptionCode
     const unsigned short SVG_WRONG_TYPE_ERR = 0;
diff --git a/svg/SVGExternalResourcesRequired.idl b/svg/SVGExternalResourcesRequired.idl
index 65567f0..36bff05 100644
--- a/svg/SVGExternalResourcesRequired.idl
+++ b/svg/SVGExternalResourcesRequired.idl
@@ -26,9 +26,8 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGExternalResourcesRequired { 
     readonly attribute SVGAnimatedBoolean externalResourcesRequired;
 };
diff --git a/svg/SVGFEBlendElement.idl b/svg/SVGFEBlendElement.idl
index 8aea427..2a9e620 100644
--- a/svg/SVGFEBlendElement.idl
+++ b/svg/SVGFEBlendElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFEBlendElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFEColorMatrixElement.idl b/svg/SVGFEColorMatrixElement.idl
index 328be81..56ee414 100644
--- a/svg/SVGFEColorMatrixElement.idl
+++ b/svg/SVGFEColorMatrixElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFEColorMatrixElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFEComponentTransferElement.idl b/svg/SVGFEComponentTransferElement.idl
index f3d9578..69ad46e 100644
--- a/svg/SVGFEComponentTransferElement.idl
+++ b/svg/SVGFEComponentTransferElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEComponentTransferElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
diff --git a/svg/SVGFECompositeElement.idl b/svg/SVGFECompositeElement.idl
index f0be969..980f1e9 100644
--- a/svg/SVGFECompositeElement.idl
+++ b/svg/SVGFECompositeElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFECompositeElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFEConvolveMatrixElement.idl b/svg/SVGFEConvolveMatrixElement.idl
index 5822dbe..0887bd6 100644
--- a/svg/SVGFEConvolveMatrixElement.idl
+++ b/svg/SVGFEConvolveMatrixElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFEConvolveMatrixElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFEDiffuseLightingElement.idl b/svg/SVGFEDiffuseLightingElement.idl
index 7a4aa98..f93e451 100644
--- a/svg/SVGFEDiffuseLightingElement.idl
+++ b/svg/SVGFEDiffuseLightingElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEDiffuseLightingElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
diff --git a/svg/SVGFEDisplacementMapElement.idl b/svg/SVGFEDisplacementMapElement.idl
index 73f68a4..8556744 100644
--- a/svg/SVGFEDisplacementMapElement.idl
+++ b/svg/SVGFEDisplacementMapElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFEDisplacementMapElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFEDistantLightElement.idl b/svg/SVGFEDistantLightElement.idl
index e62b8f5..5eac5e4 100644
--- a/svg/SVGFEDistantLightElement.idl
+++ b/svg/SVGFEDistantLightElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEDistantLightElement : SVGElement {
     readonly attribute SVGAnimatedNumber azimuth;
     readonly attribute SVGAnimatedNumber elevation;
diff --git a/svg/SVGFEDropShadowElement.idl b/svg/SVGFEDropShadowElement.idl
index 244ae3a..89abacf 100644
--- a/svg/SVGFEDropShadowElement.idl
+++ b/svg/SVGFEDropShadowElement.idl
@@ -18,7 +18,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEDropShadowElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
@@ -27,7 +27,7 @@
     readonly attribute SVGAnimatedNumber stdDeviationX;
     readonly attribute SVGAnimatedNumber stdDeviationY;
 
-    void setStdDeviation(in [Optional=DefaultIsUndefined] float stdDeviationX, 
-                         in [Optional=DefaultIsUndefined] float stdDeviationY);
+    void setStdDeviation([Optional=DefaultIsUndefined] float stdDeviationX, 
+                         [Optional=DefaultIsUndefined] float stdDeviationY);
 };
 
diff --git a/svg/SVGFEFloodElement.idl b/svg/SVGFEFloodElement.idl
index a38b4a3..e844c7e 100644
--- a/svg/SVGFEFloodElement.idl
+++ b/svg/SVGFEFloodElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEFloodElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
 };
diff --git a/svg/SVGFEFuncAElement.idl b/svg/SVGFEFuncAElement.idl
index 4d78ecd..77ee553 100644
--- a/svg/SVGFEFuncAElement.idl
+++ b/svg/SVGFEFuncAElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEFuncAElement : SVGComponentTransferFunctionElement {
 };
 
diff --git a/svg/SVGFEFuncBElement.idl b/svg/SVGFEFuncBElement.idl
index a143760..07d5e2c 100644
--- a/svg/SVGFEFuncBElement.idl
+++ b/svg/SVGFEFuncBElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEFuncBElement : SVGComponentTransferFunctionElement {
 };
 
diff --git a/svg/SVGFEFuncGElement.idl b/svg/SVGFEFuncGElement.idl
index 53c6e68..78dfe8d 100644
--- a/svg/SVGFEFuncGElement.idl
+++ b/svg/SVGFEFuncGElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEFuncGElement : SVGComponentTransferFunctionElement {
 };
 
diff --git a/svg/SVGFEFuncRElement.idl b/svg/SVGFEFuncRElement.idl
index 0f73b9a..c5f7aec 100644
--- a/svg/SVGFEFuncRElement.idl
+++ b/svg/SVGFEFuncRElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEFuncRElement : SVGComponentTransferFunctionElement {
 };
 
diff --git a/svg/SVGFEGaussianBlurElement.idl b/svg/SVGFEGaussianBlurElement.idl
index 2c0f6b7..b3bc542 100644
--- a/svg/SVGFEGaussianBlurElement.idl
+++ b/svg/SVGFEGaussianBlurElement.idl
@@ -24,14 +24,14 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEGaussianBlurElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
     readonly attribute SVGAnimatedNumber stdDeviationX;
     readonly attribute SVGAnimatedNumber stdDeviationY;
 
-    void setStdDeviation(in [Optional=DefaultIsUndefined] float stdDeviationX, 
-                         in [Optional=DefaultIsUndefined] float stdDeviationY);
+    void setStdDeviation([Optional=DefaultIsUndefined] float stdDeviationX, 
+                         [Optional=DefaultIsUndefined] float stdDeviationY);
 };
 
diff --git a/svg/SVGFEImageElement.idl b/svg/SVGFEImageElement.idl
index ce8c40e..9a484a0 100644
--- a/svg/SVGFEImageElement.idl
+++ b/svg/SVGFEImageElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEImageElement : SVGStyledElement,
                                                         SVGURIReference,
                                                         SVGLangSpace,
diff --git a/svg/SVGFEMergeElement.idl b/svg/SVGFEMergeElement.idl
index 63d53a1..f5dc646 100644
--- a/svg/SVGFEMergeElement.idl
+++ b/svg/SVGFEMergeElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEMergeElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
 };
diff --git a/svg/SVGFEMergeNodeElement.idl b/svg/SVGFEMergeNodeElement.idl
index f7093c4..9d24447 100644
--- a/svg/SVGFEMergeNodeElement.idl
+++ b/svg/SVGFEMergeNodeElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEMergeNodeElement : SVGElement {
     readonly attribute SVGAnimatedString in1;
 };
diff --git a/svg/SVGFEMorphologyElement.idl b/svg/SVGFEMorphologyElement.idl
index 55b4a86..fd22b94 100644
--- a/svg/SVGFEMorphologyElement.idl
+++ b/svg/SVGFEMorphologyElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFEMorphologyElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
@@ -38,7 +38,7 @@
     readonly attribute SVGAnimatedNumber      radiusX;
     readonly attribute SVGAnimatedNumber      radiusY;
 
-    void setRadius(in [Optional=DefaultIsUndefined] float radiusX, 
-                   in [Optional=DefaultIsUndefined] float radiusY);
+    void setRadius([Optional=DefaultIsUndefined] float radiusX, 
+                   [Optional=DefaultIsUndefined] float radiusY);
 };
 
diff --git a/svg/SVGFEOffsetElement.idl b/svg/SVGFEOffsetElement.idl
index d6cd695..c4fb7d4 100644
--- a/svg/SVGFEOffsetElement.idl
+++ b/svg/SVGFEOffsetElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEOffsetElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
diff --git a/svg/SVGFEPointLightElement.idl b/svg/SVGFEPointLightElement.idl
index 102d5b2..d57829c 100644
--- a/svg/SVGFEPointLightElement.idl
+++ b/svg/SVGFEPointLightElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFEPointLightElement : SVGElement {
     readonly attribute SVGAnimatedNumber x;
     readonly attribute SVGAnimatedNumber y;
diff --git a/svg/SVGFESpecularLightingElement.idl b/svg/SVGFESpecularLightingElement.idl
index ad1ca20..e096654 100644
--- a/svg/SVGFESpecularLightingElement.idl
+++ b/svg/SVGFESpecularLightingElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFESpecularLightingElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
diff --git a/svg/SVGFESpotLightElement.idl b/svg/SVGFESpotLightElement.idl
index 20d8f91..7867ada 100644
--- a/svg/SVGFESpotLightElement.idl
+++ b/svg/SVGFESpotLightElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFESpotLightElement : SVGElement {
     readonly attribute SVGAnimatedNumber x;
     readonly attribute SVGAnimatedNumber y;
diff --git a/svg/SVGFETileElement.idl b/svg/SVGFETileElement.idl
index a5a67c3..d97e67b 100644
--- a/svg/SVGFETileElement.idl
+++ b/svg/SVGFETileElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFETileElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedString in1;
diff --git a/svg/SVGFETurbulenceElement.idl b/svg/SVGFETurbulenceElement.idl
index e3034ba..ec9ca2e 100644
--- a/svg/SVGFETurbulenceElement.idl
+++ b/svg/SVGFETurbulenceElement.idl
@@ -24,7 +24,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS,
+    Conditional=SVG,
     DoNotCheckConstants
 ] interface SVGFETurbulenceElement : SVGStyledElement,
                            SVGFilterPrimitiveStandardAttributes {
diff --git a/svg/SVGFilterElement.idl b/svg/SVGFilterElement.idl
index 96d5126..bba4fbb 100644
--- a/svg/SVGFilterElement.idl
+++ b/svg/SVGFilterElement.idl
@@ -25,7 +25,7 @@
  */
 
 [
-    Conditional=SVG&FILTERS
+    Conditional=SVG
 ] interface SVGFilterElement : SVGStyledElement,
                                                SVGURIReference,
                                                SVGLangSpace,
@@ -40,7 +40,7 @@
     readonly attribute SVGAnimatedInteger     filterResX;
     readonly attribute SVGAnimatedInteger     filterResY;
 
-    void setFilterRes(in [Optional=DefaultIsUndefined] unsigned long filterResX, 
-                      in [Optional=DefaultIsUndefined] unsigned long filterResY);
+    void setFilterRes([Optional=DefaultIsUndefined] unsigned long filterResX, 
+                      [Optional=DefaultIsUndefined] unsigned long filterResY);
 };
 
diff --git a/svg/SVGFilterPrimitiveStandardAttributes.idl b/svg/SVGFilterPrimitiveStandardAttributes.idl
index 82c8563..3bfa06a 100644
--- a/svg/SVGFilterPrimitiveStandardAttributes.idl
+++ b/svg/SVGFilterPrimitiveStandardAttributes.idl
@@ -26,7 +26,6 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol
 ] interface SVGFilterPrimitiveStandardAttributes {
     readonly attribute SVGAnimatedLength x;
     readonly attribute SVGAnimatedLength y;
diff --git a/svg/SVGFitToViewBox.idl b/svg/SVGFitToViewBox.idl
index e250924..e9ad2ab 100644
--- a/svg/SVGFitToViewBox.idl
+++ b/svg/SVGFitToViewBox.idl
@@ -26,9 +26,8 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGFitToViewBox {
     readonly attribute SVGAnimatedRect                viewBox;
     readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio;
diff --git a/svg/SVGGlyphRefElement.idl b/svg/SVGGlyphRefElement.idl
index 678ccbd..1a052d7 100644
--- a/svg/SVGGlyphRefElement.idl
+++ b/svg/SVGGlyphRefElement.idl
@@ -20,16 +20,11 @@
 [Conditional=SVG&SVG_FONTS] interface SVGGlyphRefElement : SVGStyledElement,
                                                            SVGURIReference {
     // FIXME: Use [Reflect] after https://bugs.webkit.org/show_bug.cgi?id=64843 is fixed.
-    attribute DOMString glyphRef
-        setter raises(DOMException);
+    [SetterRaisesException] attribute DOMString glyphRef;
     [Reflect] attribute DOMString format;
-    attribute float x
-        setter raises(DOMException);
-    attribute float y
-        setter raises(DOMException);
-    attribute float dx
-        setter raises(DOMException);
-    attribute float dy
-        setter raises(DOMException);
+    [SetterRaisesException] attribute float x;
+    [SetterRaisesException] attribute float y;
+    [SetterRaisesException] attribute float dx;
+    [SetterRaisesException] attribute float dy;
 };
 
diff --git a/svg/SVGLangSpace.idl b/svg/SVGLangSpace.idl
index 0b61d80..fef8c46 100644
--- a/svg/SVGLangSpace.idl
+++ b/svg/SVGLangSpace.idl
@@ -26,13 +26,10 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGLangSpace {
-             attribute DOMString xmllang
-                 /*setter raises(DOMException)*/;
-             attribute DOMString xmlspace
-                 /*setter raises(DOMException)*/;
+             attribute DOMString xmllang;
+             attribute DOMString xmlspace;
 };
 
diff --git a/svg/SVGLength.idl b/svg/SVGLength.idl
index 1e0b7ea..4c41ba5 100644
--- a/svg/SVGLength.idl
+++ b/svg/SVGLength.idl
@@ -37,19 +37,14 @@
     const unsigned short SVG_LENGTHTYPE_PC         = 10;
 
     readonly attribute unsigned short unitType;
-    [Custom, StrictTypeChecking] attribute float value
-        setter raises(DOMException),
-        getter raises(DOMException);
+    [Custom, StrictTypeChecking, GetterRaisesException, SetterRaisesException] attribute float value;
 
     [StrictTypeChecking] attribute float valueInSpecifiedUnits;
-    [TreatNullAs=NullString, StrictTypeChecking] attribute DOMString valueAsString
-        setter raises(DOMException);
+    [TreatNullAs=NullString, StrictTypeChecking, SetterRaisesException] attribute DOMString valueAsString;
 
-    [StrictTypeChecking] void newValueSpecifiedUnits(in unsigned short unitType, 
-                                                     in float valueInSpecifiedUnits)
-        raises(DOMException);
+    [StrictTypeChecking, RaisesException] void newValueSpecifiedUnits(unsigned short unitType, 
+                                                     float valueInSpecifiedUnits);
 
-    [Custom, StrictTypeChecking] void convertToSpecifiedUnits(in unsigned short unitType)
-        raises(DOMException);
+    [Custom, StrictTypeChecking, RaisesException] void convertToSpecifiedUnits(unsigned short unitType);
 };
 
diff --git a/svg/SVGLengthList.idl b/svg/SVGLengthList.idl
index 6233adc..f93ce0a 100644
--- a/svg/SVGLengthList.idl
+++ b/svg/SVGLengthList.idl
@@ -29,19 +29,12 @@
 ] interface SVGLengthList { 
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] SVGLength initialize(in SVGLength item)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGLength getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGLength insertItemBefore(in SVGLength item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGLength replaceItem(in SVGLength item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGLength removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGLength appendItem(in SVGLength item)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] SVGLength initialize(SVGLength item);
+    [StrictTypeChecking, RaisesException] SVGLength getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGLength insertItemBefore(SVGLength item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGLength replaceItem(SVGLength item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGLength removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGLength appendItem(SVGLength item);
 };
 
diff --git a/svg/SVGLocatable.idl b/svg/SVGLocatable.idl
index e9e34ed..8f3ad05 100644
--- a/svg/SVGLocatable.idl
+++ b/svg/SVGLocatable.idl
@@ -26,9 +26,8 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGLocatable {
     readonly attribute SVGElement nearestViewportElement;
     readonly attribute SVGElement farthestViewportElement;
@@ -36,7 +35,6 @@
     SVGRect   getBBox();
     SVGMatrix getCTM();
     SVGMatrix getScreenCTM();
-    SVGMatrix getTransformToElement(in [Optional=DefaultIsUndefined] SVGElement element)
-        raises(SVGException);
+    [RaisesException] SVGMatrix getTransformToElement([Optional=DefaultIsUndefined] SVGElement element);
 };
 
diff --git a/svg/SVGMarkerElement.idl b/svg/SVGMarkerElement.idl
index 67c684e..696c22e 100644
--- a/svg/SVGMarkerElement.idl
+++ b/svg/SVGMarkerElement.idl
@@ -48,6 +48,6 @@
     readonly attribute SVGAnimatedAngle       orientAngle;
 
     void setOrientToAuto();
-    void setOrientToAngle(in [Optional=DefaultIsUndefined] SVGAngle angle);
+    void setOrientToAngle([Optional=DefaultIsUndefined] SVGAngle angle);
 };
 
diff --git a/svg/SVGMatrix.idl b/svg/SVGMatrix.idl
index dc1f87a..714f804 100644
--- a/svg/SVGMatrix.idl
+++ b/svg/SVGMatrix.idl
@@ -32,18 +32,16 @@
     [StrictTypeChecking] attribute double e;
     [StrictTypeChecking] attribute double f;
 
-    [StrictTypeChecking] SVGMatrix multiply(in SVGMatrix secondMatrix);
-    SVGMatrix inverse()
-        raises(SVGException);
-    [Immutable, StrictTypeChecking] SVGMatrix translate(in float x, in float y);
-    [Immutable, StrictTypeChecking] SVGMatrix scale(in float scaleFactor);
-    [Immutable, StrictTypeChecking] SVGMatrix scaleNonUniform(in float scaleFactorX, in float scaleFactorY);
-    [Immutable, StrictTypeChecking] SVGMatrix rotate(in float angle);
-    [StrictTypeChecking] SVGMatrix rotateFromVector(in float x, in float y)
-        raises(SVGException);
+    [StrictTypeChecking] SVGMatrix multiply(SVGMatrix secondMatrix);
+    [RaisesException] SVGMatrix inverse();
+    [Immutable, StrictTypeChecking] SVGMatrix translate(float x, float y);
+    [Immutable, StrictTypeChecking] SVGMatrix scale(float scaleFactor);
+    [Immutable, StrictTypeChecking] SVGMatrix scaleNonUniform(float scaleFactorX, float scaleFactorY);
+    [Immutable, StrictTypeChecking] SVGMatrix rotate(float angle);
+    [StrictTypeChecking, RaisesException] SVGMatrix rotateFromVector(float x, float y);
     [Immutable] SVGMatrix flipX();
     [Immutable] SVGMatrix flipY();
-    [Immutable, StrictTypeChecking] SVGMatrix skewX(in float angle);
-    [Immutable, StrictTypeChecking] SVGMatrix skewY(in float angle);
+    [Immutable, StrictTypeChecking] SVGMatrix skewX(float angle);
+    [Immutable, StrictTypeChecking] SVGMatrix skewY(float angle);
 };
 
diff --git a/svg/SVGNumberList.idl b/svg/SVGNumberList.idl
index 8ee8eef..de11a23 100644
--- a/svg/SVGNumberList.idl
+++ b/svg/SVGNumberList.idl
@@ -29,19 +29,12 @@
 ] interface SVGNumberList {
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] SVGNumber initialize(in SVGNumber item)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGNumber getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGNumber insertItemBefore(in SVGNumber item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGNumber replaceItem(in SVGNumber item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGNumber removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGNumber appendItem(in SVGNumber item)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] SVGNumber initialize(SVGNumber item);
+    [StrictTypeChecking, RaisesException] SVGNumber getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGNumber insertItemBefore(SVGNumber item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGNumber replaceItem(SVGNumber item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGNumber removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGNumber appendItem(SVGNumber item);
 };
 
diff --git a/svg/SVGPaint.idl b/svg/SVGPaint.idl
index 173679b..8680088 100644
--- a/svg/SVGPaint.idl
+++ b/svg/SVGPaint.idl
@@ -41,8 +41,7 @@
     readonly attribute unsigned short paintType;
     readonly attribute DOMString uri;
 
-    [StrictTypeChecking] void setUri(in DOMString uri);
-    [StrictTypeChecking] void setPaint(in unsigned short paintType, in DOMString uri, in DOMString rgbColor, in DOMString iccColor)
-        raises(DOMException, SVGException);
+    [StrictTypeChecking] void setUri(DOMString uri);
+    [StrictTypeChecking, RaisesException] void setPaint(unsigned short paintType, DOMString uri, DOMString rgbColor, DOMString iccColor);
 };
 
diff --git a/svg/SVGPathElement.idl b/svg/SVGPathElement.idl
index 4c0ac91..dd08316 100644
--- a/svg/SVGPathElement.idl
+++ b/svg/SVGPathElement.idl
@@ -34,77 +34,77 @@
     readonly attribute SVGAnimatedNumber pathLength;
 
     float getTotalLength();
-    SVGPoint getPointAtLength(in [Optional=DefaultIsUndefined] float distance);
-    unsigned long getPathSegAtLength(in [Optional=DefaultIsUndefined] float distance);
+    SVGPoint getPointAtLength([Optional=DefaultIsUndefined] float distance);
+    unsigned long getPathSegAtLength([Optional=DefaultIsUndefined] float distance);
 
     SVGPathSegClosePath createSVGPathSegClosePath();
 
-    SVGPathSegMovetoAbs createSVGPathSegMovetoAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                  in [Optional=DefaultIsUndefined] float y);
-    SVGPathSegMovetoRel createSVGPathSegMovetoRel(in [Optional=DefaultIsUndefined] float x, 
-                                                  in [Optional=DefaultIsUndefined] float y);
+    SVGPathSegMovetoAbs createSVGPathSegMovetoAbs([Optional=DefaultIsUndefined] float x, 
+                                                  [Optional=DefaultIsUndefined] float y);
+    SVGPathSegMovetoRel createSVGPathSegMovetoRel([Optional=DefaultIsUndefined] float x, 
+                                                  [Optional=DefaultIsUndefined] float y);
 
-    SVGPathSegLinetoAbs createSVGPathSegLinetoAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                  in [Optional=DefaultIsUndefined] float y);
-    SVGPathSegLinetoRel createSVGPathSegLinetoRel(in [Optional=DefaultIsUndefined] float x, 
-                                                  in [Optional=DefaultIsUndefined] float y);
+    SVGPathSegLinetoAbs createSVGPathSegLinetoAbs([Optional=DefaultIsUndefined] float x, 
+                                                  [Optional=DefaultIsUndefined] float y);
+    SVGPathSegLinetoRel createSVGPathSegLinetoRel([Optional=DefaultIsUndefined] float x, 
+                                                  [Optional=DefaultIsUndefined] float y);
 
-    SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                              in [Optional=DefaultIsUndefined] float y, 
-                                                              in [Optional=DefaultIsUndefined] float x1, 
-                                                              in [Optional=DefaultIsUndefined] float y1, 
-                                                              in [Optional=DefaultIsUndefined] float x2, 
-                                                              in [Optional=DefaultIsUndefined] float y2);
-    SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel(in [Optional=DefaultIsUndefined] float x, 
-                                                              in [Optional=DefaultIsUndefined] float y, 
-                                                              in [Optional=DefaultIsUndefined] float x1, 
-                                                              in [Optional=DefaultIsUndefined] float y1, 
-                                                              in [Optional=DefaultIsUndefined] float x2, 
-                                                              in [Optional=DefaultIsUndefined] float y2);
+    SVGPathSegCurvetoCubicAbs createSVGPathSegCurvetoCubicAbs([Optional=DefaultIsUndefined] float x, 
+                                                              [Optional=DefaultIsUndefined] float y, 
+                                                              [Optional=DefaultIsUndefined] float x1, 
+                                                              [Optional=DefaultIsUndefined] float y1, 
+                                                              [Optional=DefaultIsUndefined] float x2, 
+                                                              [Optional=DefaultIsUndefined] float y2);
+    SVGPathSegCurvetoCubicRel createSVGPathSegCurvetoCubicRel([Optional=DefaultIsUndefined] float x, 
+                                                              [Optional=DefaultIsUndefined] float y, 
+                                                              [Optional=DefaultIsUndefined] float x1, 
+                                                              [Optional=DefaultIsUndefined] float y1, 
+                                                              [Optional=DefaultIsUndefined] float x2, 
+                                                              [Optional=DefaultIsUndefined] float y2);
 
-    SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                                      in [Optional=DefaultIsUndefined] float y, 
-                                                                      in [Optional=DefaultIsUndefined] float x1, 
-                                                                      in [Optional=DefaultIsUndefined] float y1);
-    SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel(in [Optional=DefaultIsUndefined] float x, 
-                                                                      in [Optional=DefaultIsUndefined] float y, 
-                                                                      in [Optional=DefaultIsUndefined] float x1, 
-                                                                      in [Optional=DefaultIsUndefined] float y1);
+    SVGPathSegCurvetoQuadraticAbs createSVGPathSegCurvetoQuadraticAbs([Optional=DefaultIsUndefined] float x, 
+                                                                      [Optional=DefaultIsUndefined] float y, 
+                                                                      [Optional=DefaultIsUndefined] float x1, 
+                                                                      [Optional=DefaultIsUndefined] float y1);
+    SVGPathSegCurvetoQuadraticRel createSVGPathSegCurvetoQuadraticRel([Optional=DefaultIsUndefined] float x, 
+                                                                      [Optional=DefaultIsUndefined] float y, 
+                                                                      [Optional=DefaultIsUndefined] float x1, 
+                                                                      [Optional=DefaultIsUndefined] float y1);
 
-    SVGPathSegArcAbs createSVGPathSegArcAbs(in [Optional=DefaultIsUndefined] float x, 
-                                            in [Optional=DefaultIsUndefined] float y, 
-                                            in [Optional=DefaultIsUndefined] float r1, 
-                                            in [Optional=DefaultIsUndefined] float r2, 
-                                            in [Optional=DefaultIsUndefined] float angle, 
-                                            in [Optional=DefaultIsUndefined] boolean largeArcFlag, 
-                                            in [Optional=DefaultIsUndefined] boolean sweepFlag);
-    SVGPathSegArcRel createSVGPathSegArcRel(in [Optional=DefaultIsUndefined] float x, 
-                                            in [Optional=DefaultIsUndefined] float y, 
-                                            in [Optional=DefaultIsUndefined] float r1, 
-                                            in [Optional=DefaultIsUndefined] float r2, 
-                                            in [Optional=DefaultIsUndefined] float angle, 
-                                            in [Optional=DefaultIsUndefined] boolean largeArcFlag, 
-                                            in [Optional=DefaultIsUndefined] boolean sweepFlag);
+    SVGPathSegArcAbs createSVGPathSegArcAbs([Optional=DefaultIsUndefined] float x, 
+                                            [Optional=DefaultIsUndefined] float y, 
+                                            [Optional=DefaultIsUndefined] float r1, 
+                                            [Optional=DefaultIsUndefined] float r2, 
+                                            [Optional=DefaultIsUndefined] float angle, 
+                                            [Optional=DefaultIsUndefined] boolean largeArcFlag, 
+                                            [Optional=DefaultIsUndefined] boolean sweepFlag);
+    SVGPathSegArcRel createSVGPathSegArcRel([Optional=DefaultIsUndefined] float x, 
+                                            [Optional=DefaultIsUndefined] float y, 
+                                            [Optional=DefaultIsUndefined] float r1, 
+                                            [Optional=DefaultIsUndefined] float r2, 
+                                            [Optional=DefaultIsUndefined] float angle, 
+                                            [Optional=DefaultIsUndefined] boolean largeArcFlag, 
+                                            [Optional=DefaultIsUndefined] boolean sweepFlag);
 
-    SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs(in [Optional=DefaultIsUndefined] float x);
-    SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel(in [Optional=DefaultIsUndefined] float x);
+    SVGPathSegLinetoHorizontalAbs createSVGPathSegLinetoHorizontalAbs([Optional=DefaultIsUndefined] float x);
+    SVGPathSegLinetoHorizontalRel createSVGPathSegLinetoHorizontalRel([Optional=DefaultIsUndefined] float x);
 
-    SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs(in [Optional=DefaultIsUndefined] float y);
-    SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel(in [Optional=DefaultIsUndefined] float y);
+    SVGPathSegLinetoVerticalAbs createSVGPathSegLinetoVerticalAbs([Optional=DefaultIsUndefined] float y);
+    SVGPathSegLinetoVerticalRel createSVGPathSegLinetoVerticalRel([Optional=DefaultIsUndefined] float y);
 
-    SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                                          in [Optional=DefaultIsUndefined] float y, 
-                                                                          in [Optional=DefaultIsUndefined] float x2, 
-                                                                          in [Optional=DefaultIsUndefined] float y2);
-    SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel(in [Optional=DefaultIsUndefined] float x, 
-                                                                          in [Optional=DefaultIsUndefined] float y, 
-                                                                          in [Optional=DefaultIsUndefined] float x2, 
-                                                                          in [Optional=DefaultIsUndefined] float y2);
+    SVGPathSegCurvetoCubicSmoothAbs createSVGPathSegCurvetoCubicSmoothAbs([Optional=DefaultIsUndefined] float x, 
+                                                                          [Optional=DefaultIsUndefined] float y, 
+                                                                          [Optional=DefaultIsUndefined] float x2, 
+                                                                          [Optional=DefaultIsUndefined] float y2);
+    SVGPathSegCurvetoCubicSmoothRel createSVGPathSegCurvetoCubicSmoothRel([Optional=DefaultIsUndefined] float x, 
+                                                                          [Optional=DefaultIsUndefined] float y, 
+                                                                          [Optional=DefaultIsUndefined] float x2, 
+                                                                          [Optional=DefaultIsUndefined] float y2);
 
-    SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs(in [Optional=DefaultIsUndefined] float x, 
-                                                                                  in [Optional=DefaultIsUndefined] float y);
-    SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel(in [Optional=DefaultIsUndefined] float x, 
-                                                                                  in [Optional=DefaultIsUndefined] float y);
+    SVGPathSegCurvetoQuadraticSmoothAbs createSVGPathSegCurvetoQuadraticSmoothAbs([Optional=DefaultIsUndefined] float x, 
+                                                                                  [Optional=DefaultIsUndefined] float y);
+    SVGPathSegCurvetoQuadraticSmoothRel createSVGPathSegCurvetoQuadraticSmoothRel([Optional=DefaultIsUndefined] float x, 
+                                                                                  [Optional=DefaultIsUndefined] float y);
 
     readonly attribute SVGPathSegList pathSegList;
     readonly attribute SVGPathSegList normalizedPathSegList;
diff --git a/svg/SVGPathSeg.idl b/svg/SVGPathSeg.idl
index e277b37..2d1267d 100644
--- a/svg/SVGPathSeg.idl
+++ b/svg/SVGPathSeg.idl
@@ -27,7 +27,7 @@
 [
     Conditional=SVG,
     CustomToJSObject,
-    ObjCPolymorphic,
+    
     ImplementationLacksVTable
 ] interface SVGPathSeg {
     // Path Segment Types
diff --git a/svg/SVGPathSegList.idl b/svg/SVGPathSegList.idl
index 08f69e7..c2fda40 100644
--- a/svg/SVGPathSegList.idl
+++ b/svg/SVGPathSegList.idl
@@ -29,19 +29,12 @@
 ] interface SVGPathSegList {
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] SVGPathSeg initialize(in SVGPathSeg newItem)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPathSeg getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGPathSeg insertItemBefore(in SVGPathSeg newItem, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPathSeg replaceItem(in SVGPathSeg newItem, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPathSeg removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGPathSeg appendItem(in SVGPathSeg newItem)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] SVGPathSeg initialize(SVGPathSeg newItem);
+    [StrictTypeChecking, RaisesException] SVGPathSeg getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPathSeg insertItemBefore(SVGPathSeg newItem, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPathSeg replaceItem(SVGPathSeg newItem, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPathSeg removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPathSeg appendItem(SVGPathSeg newItem);
 };
 
diff --git a/svg/SVGPoint.idl b/svg/SVGPoint.idl
index 19693dc..40fa201 100644
--- a/svg/SVGPoint.idl
+++ b/svg/SVGPoint.idl
@@ -26,6 +26,6 @@
     [StrictTypeChecking] attribute float x;
     [StrictTypeChecking] attribute float y;
 
-    [StrictTypeChecking] SVGPoint matrixTransform(in SVGMatrix matrix);
+    [StrictTypeChecking] SVGPoint matrixTransform(SVGMatrix matrix);
 };
 
diff --git a/svg/SVGPointList.idl b/svg/SVGPointList.idl
index fe84c51..93e6889 100644
--- a/svg/SVGPointList.idl
+++ b/svg/SVGPointList.idl
@@ -28,19 +28,12 @@
 ] interface SVGPointList {
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] SVGPoint initialize(in SVGPoint item)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPoint getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGPoint insertItemBefore(in SVGPoint item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPoint replaceItem(in SVGPoint item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGPoint removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGPoint appendItem(in SVGPoint item)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] SVGPoint initialize(SVGPoint item);
+    [StrictTypeChecking, RaisesException] SVGPoint getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPoint insertItemBefore(SVGPoint item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPoint replaceItem(SVGPoint item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPoint removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGPoint appendItem(SVGPoint item);
 };
 
diff --git a/svg/SVGPreserveAspectRatio.idl b/svg/SVGPreserveAspectRatio.idl
index 44be334..5f4ed8a 100644
--- a/svg/SVGPreserveAspectRatio.idl
+++ b/svg/SVGPreserveAspectRatio.idl
@@ -44,10 +44,8 @@
     const unsigned short SVG_MEETORSLICE_MEET = 1;
     const unsigned short SVG_MEETORSLICE_SLICE = 2;
 
-    [StrictTypeChecking] attribute unsigned short align
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute unsigned short align;
 
-    [StrictTypeChecking] attribute unsigned short meetOrSlice
-        setter raises(DOMException);
+    [StrictTypeChecking, SetterRaisesException] attribute unsigned short meetOrSlice;
 };
 
diff --git a/svg/SVGSVGElement.idl b/svg/SVGSVGElement.idl
index 7411b23..e73eb29 100644
--- a/svg/SVGSVGElement.idl
+++ b/svg/SVGSVGElement.idl
@@ -36,10 +36,8 @@
     readonly attribute SVGAnimatedLength y;
     readonly attribute SVGAnimatedLength width;
     readonly attribute SVGAnimatedLength height;
-             attribute DOMString contentScriptType
-                 /*setter raises(DOMException)*/;
-             attribute DOMString contentStyleType
-                 /*setter raises(DOMException)*/;
+             attribute DOMString contentScriptType;
+             attribute DOMString contentStyleType;
     readonly attribute SVGRect viewport;
     readonly attribute float pixelUnitToMillimeterX;
     readonly attribute float pixelUnitToMillimeterY;
@@ -47,27 +45,26 @@
     readonly attribute float screenPixelToMillimeterY;
     readonly attribute boolean useCurrentView;
     readonly attribute SVGViewSpec currentView;
-             attribute float currentScale
-                 /*setter raises(DOMException)*/;
+             attribute float currentScale;
     readonly attribute SVGPoint currentTranslate;
 
-    unsigned long suspendRedraw(in [Optional=DefaultIsUndefined] unsigned long maxWaitMilliseconds);
-    void unsuspendRedraw(in [Optional=DefaultIsUndefined] unsigned long suspendHandleId);
+    unsigned long suspendRedraw([Optional=DefaultIsUndefined] unsigned long maxWaitMilliseconds);
+    void unsuspendRedraw([Optional=DefaultIsUndefined] unsigned long suspendHandleId);
     void unsuspendRedrawAll();
     void forceRedraw();
     void pauseAnimations();
     void unpauseAnimations();
     boolean animationsPaused();
     float getCurrentTime();
-    void setCurrentTime(in [Optional=DefaultIsUndefined] float seconds);
-    NodeList getIntersectionList(in [Optional=DefaultIsUndefined] SVGRect rect, 
-                                 in [Optional=DefaultIsUndefined] SVGElement referenceElement);
-    NodeList getEnclosureList(in [Optional=DefaultIsUndefined] SVGRect rect, 
-                              in [Optional=DefaultIsUndefined] SVGElement referenceElement);
-    boolean checkIntersection(in [Optional=DefaultIsUndefined] SVGElement element, 
-                              in [Optional=DefaultIsUndefined] SVGRect rect);
-    boolean checkEnclosure(in [Optional=DefaultIsUndefined] SVGElement element, 
-                           in [Optional=DefaultIsUndefined] SVGRect rect);
+    void setCurrentTime([Optional=DefaultIsUndefined] float seconds);
+    NodeList getIntersectionList([Optional=DefaultIsUndefined] SVGRect rect, 
+                                 [Optional=DefaultIsUndefined] SVGElement referenceElement);
+    NodeList getEnclosureList([Optional=DefaultIsUndefined] SVGRect rect, 
+                              [Optional=DefaultIsUndefined] SVGElement referenceElement);
+    boolean checkIntersection([Optional=DefaultIsUndefined] SVGElement element, 
+                              [Optional=DefaultIsUndefined] SVGRect rect);
+    boolean checkEnclosure([Optional=DefaultIsUndefined] SVGElement element, 
+                           [Optional=DefaultIsUndefined] SVGRect rect);
     void deselectAll();
 
     SVGNumber createSVGNumber();
@@ -77,7 +74,7 @@
     SVGMatrix createSVGMatrix();
     SVGRect createSVGRect();
     SVGTransform createSVGTransform();
-    SVGTransform createSVGTransformFromMatrix(in [Optional=DefaultIsUndefined] SVGMatrix matrix);
-    Element getElementById(in [Optional=DefaultIsUndefined] DOMString elementId);
+    SVGTransform createSVGTransformFromMatrix([Optional=DefaultIsUndefined] SVGMatrix matrix);
+    Element getElementById([Optional=DefaultIsUndefined] DOMString elementId);
 };
 
diff --git a/svg/SVGScriptElement.idl b/svg/SVGScriptElement.idl
index 4b96625..2fa2cc6 100644
--- a/svg/SVGScriptElement.idl
+++ b/svg/SVGScriptElement.idl
@@ -28,7 +28,6 @@
 ] interface SVGScriptElement : SVGElement,
                                                SVGURIReference,
                                                SVGExternalResourcesRequired {
-             attribute [TreatNullAs=NullString] DOMString type
-                 /*setter raises(DOMException)*/;
+             [TreatNullAs=NullString] attribute DOMString type;
 };
 
diff --git a/svg/SVGStringList.idl b/svg/SVGStringList.idl
index 8bb4077..48b87ca 100644
--- a/svg/SVGStringList.idl
+++ b/svg/SVGStringList.idl
@@ -28,19 +28,12 @@
 ] interface SVGStringList {
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] DOMString initialize(in DOMString item)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] DOMString getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] DOMString insertItemBefore(in DOMString item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] DOMString replaceItem(in DOMString item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] DOMString removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] DOMString appendItem(in DOMString item)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] DOMString initialize(DOMString item);
+    [StrictTypeChecking, RaisesException] DOMString getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] DOMString insertItemBefore(DOMString item, unsigned long index);
+    [StrictTypeChecking, RaisesException] DOMString replaceItem(DOMString item, unsigned long index);
+    [StrictTypeChecking, RaisesException] DOMString removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] DOMString appendItem(DOMString item);
 };
 
diff --git a/svg/SVGStyleElement.idl b/svg/SVGStyleElement.idl
index 6853535..6005b2e 100644
--- a/svg/SVGStyleElement.idl
+++ b/svg/SVGStyleElement.idl
@@ -29,11 +29,8 @@
 ] interface SVGStyleElement : SVGElement,
                                               SVGLangSpace {
              attribute boolean disabled;
-             attribute DOMString type
-                 setter raises(DOMException);
-             attribute DOMString media
-                 setter raises(DOMException);
-             attribute DOMString title
-                 setter raises(DOMException);
+             [SetterRaisesException] attribute DOMString type;
+             [SetterRaisesException] attribute DOMString media;
+             [SetterRaisesException] attribute DOMString title;
 };
 
diff --git a/svg/SVGStyledElement.idl b/svg/SVGStyledElement.idl
index 976051d..78418ba 100644
--- a/svg/SVGStyledElement.idl
+++ b/svg/SVGStyledElement.idl
@@ -31,6 +31,6 @@
     readonly attribute SVGAnimatedString className;
     readonly attribute CSSStyleDeclaration style;
 
-    CSSValue getPresentationAttribute(in [Optional=DefaultIsUndefined] DOMString name);
+    CSSValue getPresentationAttribute([Optional=DefaultIsUndefined] DOMString name);
 };
 
diff --git a/svg/SVGTests.idl b/svg/SVGTests.idl
index 05a31fd..6d96757 100644
--- a/svg/SVGTests.idl
+++ b/svg/SVGTests.idl
@@ -26,14 +26,13 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGTests {
     readonly attribute SVGStringList requiredFeatures;
     readonly attribute SVGStringList requiredExtensions;
     readonly attribute SVGStringList systemLanguage;
 
-    boolean hasExtension(in [Optional=DefaultIsUndefined] DOMString extension);
+    boolean hasExtension([Optional=DefaultIsUndefined] DOMString extension);
 };
 
diff --git a/svg/SVGTextContentElement.idl b/svg/SVGTextContentElement.idl
index 14ed0f5..5c2491c 100644
--- a/svg/SVGTextContentElement.idl
+++ b/svg/SVGTextContentElement.idl
@@ -39,20 +39,14 @@
 
     long getNumberOfChars();
     float getComputedTextLength();
-    float getSubStringLength(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset, 
-                             in [Optional=DefaultIsUndefined,IsIndex] unsigned long length)
-        raises(DOMException);
-    SVGPoint getStartPositionOfChar(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset)
-        raises(DOMException);
-    SVGPoint getEndPositionOfChar(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset)
-        raises(DOMException);
-    SVGRect getExtentOfChar(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset)
-        raises(DOMException);
-    float getRotationOfChar(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset)
-        raises(DOMException);
-    long getCharNumAtPosition(in [Optional=DefaultIsUndefined] SVGPoint point);
-    void selectSubString(in [Optional=DefaultIsUndefined,IsIndex] unsigned long offset, 
-                         in [Optional=DefaultIsUndefined,IsIndex] unsigned long length)
-        raises(DOMException);
+    [RaisesException] float getSubStringLength([Optional=DefaultIsUndefined,IsIndex] unsigned long offset, 
+                             [Optional=DefaultIsUndefined,IsIndex] unsigned long length);
+    [RaisesException] SVGPoint getStartPositionOfChar([Optional=DefaultIsUndefined,IsIndex] unsigned long offset);
+    [RaisesException] SVGPoint getEndPositionOfChar([Optional=DefaultIsUndefined,IsIndex] unsigned long offset);
+    [RaisesException] SVGRect getExtentOfChar([Optional=DefaultIsUndefined,IsIndex] unsigned long offset);
+    [RaisesException] float getRotationOfChar([Optional=DefaultIsUndefined,IsIndex] unsigned long offset);
+    long getCharNumAtPosition([Optional=DefaultIsUndefined] SVGPoint point);
+    [RaisesException] void selectSubString([Optional=DefaultIsUndefined,IsIndex] unsigned long offset, 
+                         [Optional=DefaultIsUndefined,IsIndex] unsigned long length);
 };
 
diff --git a/svg/SVGTransform.idl b/svg/SVGTransform.idl
index b8387a5..2edaa80 100644
--- a/svg/SVGTransform.idl
+++ b/svg/SVGTransform.idl
@@ -35,11 +35,11 @@
     readonly attribute SVGMatrix matrix;
     readonly attribute float angle;
 
-    [StrictTypeChecking] void setMatrix(in SVGMatrix matrix);
-    [StrictTypeChecking] void setTranslate(in float tx, in float ty);
-    [StrictTypeChecking] void setScale(in float sx, in float sy);
-    [StrictTypeChecking] void setRotate(in float angle, in float cx, in float cy);
-    [StrictTypeChecking] void setSkewX(in float angle);
-    [StrictTypeChecking] void setSkewY(in float angle);
+    [StrictTypeChecking] void setMatrix(SVGMatrix matrix);
+    [StrictTypeChecking] void setTranslate(float tx, float ty);
+    [StrictTypeChecking] void setScale(float sx, float sy);
+    [StrictTypeChecking] void setRotate(float angle, float cx, float cy);
+    [StrictTypeChecking] void setSkewX(float angle);
+    [StrictTypeChecking] void setSkewY(float angle);
 };
 
diff --git a/svg/SVGTransformList.idl b/svg/SVGTransformList.idl
index ceabe5b..0212373 100644
--- a/svg/SVGTransformList.idl
+++ b/svg/SVGTransformList.idl
@@ -29,25 +29,16 @@
 ] interface SVGTransformList {
     readonly attribute unsigned long numberOfItems;
 
-    void clear()
-        raises(DOMException);
-    [StrictTypeChecking] SVGTransform initialize(in SVGTransform item)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGTransform getItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGTransform insertItemBefore(in SVGTransform item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGTransform replaceItem(in SVGTransform item, in unsigned long index)
-        raises(DOMException, SVGException);
-    [StrictTypeChecking] SVGTransform removeItem(in unsigned long index)
-        raises(DOMException);
-    [StrictTypeChecking] SVGTransform appendItem(in SVGTransform item)
-        raises(DOMException, SVGException);
+    [RaisesException] void clear();
+    [StrictTypeChecking, RaisesException] SVGTransform initialize(SVGTransform item);
+    [StrictTypeChecking, RaisesException] SVGTransform getItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGTransform insertItemBefore(SVGTransform item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGTransform replaceItem(SVGTransform item, unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGTransform removeItem(unsigned long index);
+    [StrictTypeChecking, RaisesException] SVGTransform appendItem(SVGTransform item);
 
-    [StrictTypeChecking] SVGTransform createSVGTransformFromMatrix(in SVGMatrix matrix)
-        raises(DOMException);
+    [StrictTypeChecking, RaisesException] SVGTransform createSVGTransformFromMatrix(SVGMatrix matrix);
 
-    SVGTransform consolidate()
-        raises(DOMException);
+    [RaisesException] SVGTransform consolidate();
 };
 
diff --git a/svg/SVGTransformable.idl b/svg/SVGTransformable.idl
index 0dfff36..e4ab3ce 100644
--- a/svg/SVGTransformable.idl
+++ b/svg/SVGTransformable.idl
@@ -26,8 +26,7 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
-    OmitConstructor
+    
 ] interface SVGTransformable : SVGLocatable {
     readonly attribute SVGAnimatedTransformList transform;
 };
diff --git a/svg/SVGURIReference.idl b/svg/SVGURIReference.idl
index a6311cd..8722ada 100644
--- a/svg/SVGURIReference.idl
+++ b/svg/SVGURIReference.idl
@@ -26,9 +26,8 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
-    OmitConstructor
 ] interface SVGURIReference {
     readonly attribute SVGAnimatedString href;
 };
diff --git a/svg/SVGViewSpec.idl b/svg/SVGViewSpec.idl
index 8c0f1de..453a8f5 100644
--- a/svg/SVGViewSpec.idl
+++ b/svg/SVGViewSpec.idl
@@ -36,8 +36,7 @@
       readonly attribute DOMString viewTargetString;
 
       // SVGZoomAndPan
-      attribute unsigned short zoomAndPan
-          setter raises(DOMException);
+      [SetterRaisesException] attribute unsigned short zoomAndPan;
 
       // SVGFitToViewBox
       readonly attribute SVGAnimatedRect viewBox;
diff --git a/svg/SVGZoomAndPan.idl b/svg/SVGZoomAndPan.idl
index 594033e..cf10f3c 100644
--- a/svg/SVGZoomAndPan.idl
+++ b/svg/SVGZoomAndPan.idl
@@ -26,7 +26,7 @@
 
 [
     Conditional=SVG,
-    ObjCProtocol,
+    
     SuppressToJSObject,
     ImplementationLacksVTable
 ] interface SVGZoomAndPan {
diff --git a/testing/InternalSettings.idl b/testing/InternalSettings.idl
index 25d4539..97e9fb2 100644
--- a/testing/InternalSettings.idl
+++ b/testing/InternalSettings.idl
@@ -24,39 +24,36 @@
  */
 
 [
-    OmitConstructor
 ] interface InternalSettings : InternalSettingsGenerated {
-    void setMockScrollbarsEnabled(in boolean enabled) raises(DOMException);
-    void setTouchEventEmulationEnabled(in boolean enabled) raises(DOMException);
-    void setShadowDOMEnabled(in boolean enabled) raises(DOMException);
-    void setAuthorShadowDOMForAnyElementEnabled(in boolean isEnabled);
-    void setStyleScopedEnabled(in boolean isEnabled);
-    void setStandardFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setSerifFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setSansSerifFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setFixedFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setCursiveFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setFantasyFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setPictographFontFamily(in DOMString family, in DOMString script) raises(DOMException);
-    void setTextAutosizingEnabled(in boolean enabled) raises(DOMException);
-    void setTextAutosizingWindowSizeOverride(in long width, in long height) raises(DOMException);
-    void setTextAutosizingFontScaleFactor(in float fontScaleFactor) raises(DOMException);
-    void setResolutionOverride(in long dotsPerCSSInchHorizontally, in long dotsPerCSSInchVertically) raises(DOMException);
-    void setMediaTypeOverride(in DOMString mediaTypeOverride) raises(DOMException);
-    void setCSSExclusionsEnabled(in boolean enabled) raises(DOMException);
-    void setCSSVariablesEnabled(in boolean enabled) raises(DOMException);
-    boolean cssVariablesEnabled() raises(DOMException);
-    void setCanStartMedia(in boolean enabled) raises(DOMException);
-    void setEditingBehavior(in DOMString behavior) raises(DOMException);
-    void setDialogElementEnabled(in boolean enabled) raises(DOMException);
-    void setLangAttributeAwareFormControlUIEnabled(in boolean enabled);
+    [RaisesException] void setMockScrollbarsEnabled(boolean enabled);
+    [RaisesException] void setTouchEventEmulationEnabled(boolean enabled);
+    [RaisesException] void setShadowDOMEnabled(boolean enabled);
+    void setAuthorShadowDOMForAnyElementEnabled(boolean isEnabled);
+    void setStyleScopedEnabled(boolean isEnabled);
+    [RaisesException] void setStandardFontFamily(DOMString family, DOMString script);
+    [RaisesException] void setSerifFontFamily(DOMString family, DOMString script);
+    [RaisesException] void setSansSerifFontFamily(DOMString family, DOMString script);
+    [RaisesException] void setFixedFontFamily(DOMString family, DOMString script);
+    [RaisesException] void setCursiveFontFamily(DOMString family, DOMString script);
+    [RaisesException] void setFantasyFontFamily(DOMString family, DOMString script);
+    [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 setResolutionOverride(long dotsPerCSSInchHorizontally, long dotsPerCSSInchVertically);
+    [RaisesException] void setMediaTypeOverride(DOMString mediaTypeOverride);
+    [RaisesException] void setCSSExclusionsEnabled(boolean enabled);
+    [RaisesException] void setCSSVariablesEnabled(boolean enabled);
+    [RaisesException] boolean cssVariablesEnabled();
+    [RaisesException] void setCanStartMedia(boolean enabled);
+    [RaisesException] void setEditingBehavior(DOMString behavior);
+    [RaisesException] void setDialogElementEnabled(boolean enabled);
+    void setLangAttributeAwareFormControlUIEnabled(boolean enabled);
 
-    [Conditional=VIDEO_TRACK] void setShouldDisplayTrackKind(in DOMString kind, in boolean enabled) raises (DOMException);
-    [Conditional=VIDEO_TRACK] boolean shouldDisplayTrackKind(in DOMString trackKind) raises (DOMException);
-    void setStorageBlockingPolicy(in DOMString policy) raises(DOMException);
-    void setImagesEnabled(in boolean enabled) raises(DOMException);
-    void setMinimumTimerInterval(in double intervalInSeconds) raises(DOMException);
-    void setDefaultVideoPosterURL(in DOMString poster) raises(DOMException);
-    void setTimeWithoutMouseMovementBeforeHidingControls(in double time) raises(DOMException);
-    void setUseLegacyBackgroundSizeShorthandBehavior(in boolean enabled) raises(DOMException);
+    [Conditional=VIDEO_TRACK, RaisesException] void setShouldDisplayTrackKind(DOMString kind, boolean enabled);
+    [Conditional=VIDEO_TRACK, RaisesException] boolean shouldDisplayTrackKind(DOMString trackKind);
+    [RaisesException] void setImagesEnabled(boolean enabled);
+    [RaisesException] void setMinimumTimerInterval(double intervalInSeconds);
+    [RaisesException] void setDefaultVideoPosterURL(DOMString poster);
+    [RaisesException] void setTimeWithoutMouseMovementBeforeHidingControls(double time);
 };
diff --git a/testing/Internals.idl b/testing/Internals.idl
index 3df2f4b..3aa5b96 100644
--- a/testing/Internals.idl
+++ b/testing/Internals.idl
@@ -25,156 +25,146 @@
  */
 
 [
-    OmitConstructor
 ] interface Internals {
-    DOMString address(in Node node);
+    DOMString address(Node node);
 
-    DOMString elementRenderTreeAsText(in Element element) raises(DOMException);
-    boolean isPreloaded(in DOMString url);
-    boolean isLoadingFromMemoryCache(in DOMString url);
+    [RaisesException] DOMString elementRenderTreeAsText(Element element);
+    boolean isPreloaded(DOMString url);
+    boolean isLoadingFromMemoryCache(DOMString url);
 
-    unsigned long numberOfScopedHTMLStyleChildren(in Node scope) raises(DOMException);
-    CSSStyleDeclaration computedStyleIncludingVisitedInfo(in Node node) raises(DOMException);
+    [RaisesException] unsigned long numberOfScopedHTMLStyleChildren(Node scope);
+    [RaisesException] CSSStyleDeclaration computedStyleIncludingVisitedInfo(Node node);
 
-#if defined(ENABLE_SHADOW_DOM) && ENABLE_SHADOW_DOM
-    ShadowRoot ensureShadowRoot(in Element host) raises (DOMException);
-    ShadowRoot createShadowRoot(in Element host) raises (DOMException);
-    ShadowRoot shadowRoot(in Element host) raises (DOMException);
-    ShadowRoot youngestShadowRoot(in Element host) raises (DOMException);
-    ShadowRoot oldestShadowRoot(in Element host) raises (DOMException);
-    ShadowRoot youngerShadowRoot(in Node root) raises (DOMException);
-    ShadowRoot olderShadowRoot(in Node root) raises (DOMException);
-#else
-    Node ensureShadowRoot(in Element host) raises (DOMException);
-    Node createShadowRoot(in Element host) raises (DOMException);
-    Node shadowRoot(in Element host) raises (DOMException);
-    Node youngestShadowRoot(in Element host) raises (DOMException);
-    Node oldestShadowRoot(in Element host) raises (DOMException);
-    Node youngerShadowRoot(in Node root) raises (DOMException);
-#endif
-    DOMString shadowRootType(in Node root) raises (DOMException);
-    boolean hasShadowInsertionPoint(in Node root) raises (DOMException);
-    boolean hasContentElement(in Node root) raises (DOMException);
-    unsigned long countElementShadow(in Node Root) raises (DOMException);
-    Element includerFor(in Node node) raises (DOMException);
-    DOMString shadowPseudoId(in Element element) raises (DOMException);
-    void setShadowPseudoId(in Element element, in DOMString id) raises (DOMException);
-    Element createContentElement() raises(DOMException);
-    boolean isValidContentSelect(in Element contentElement) raises(DOMException);
-    Node treeScopeRootNode(in Node node) raises (DOMException);
-    Node parentTreeScope(in Node node) raises (DOMException);
-    boolean hasSelectorForIdInShadow(in Element host, in DOMString id) raises (DOMException);
-    boolean hasSelectorForClassInShadow(in Element host, in DOMString className) raises (DOMException);
-    boolean hasSelectorForAttributeInShadow(in Element host, in DOMString attributeName) raises (DOMException);
-    boolean hasSelectorForPseudoClassInShadow(in Element host, in DOMString pseudoClass) raises (DOMException);
+    [RaisesException] ShadowRoot ensureShadowRoot(Element host);
+    [RaisesException] ShadowRoot createShadowRoot(Element host);
+    [RaisesException] ShadowRoot shadowRoot(Element host);
+    [RaisesException] ShadowRoot youngestShadowRoot(Element host);
+    [RaisesException] ShadowRoot oldestShadowRoot(Element host);
+    [RaisesException] ShadowRoot youngerShadowRoot(Node root);
+    [RaisesException] ShadowRoot olderShadowRoot(Node root);
+
+    [RaisesException] DOMString shadowRootType(Node root);
+    [RaisesException] boolean hasShadowInsertionPoint(Node root);
+    [RaisesException] boolean hasContentElement(Node root);
+    [RaisesException] unsigned long countElementShadow(Node Root);
+    [RaisesException] Element includerFor(Node node);
+    [RaisesException] DOMString shadowPseudoId(Element element);
+    [RaisesException] void setShadowPseudoId(Element element, DOMString id);
+    [RaisesException] Element createContentElement();
+    [RaisesException] boolean isValidContentSelect(Element contentElement);
+    [RaisesException] Node treeScopeRootNode(Node node);
+    [RaisesException] Node parentTreeScope(Node node);
+    [RaisesException] boolean hasSelectorForIdInShadow(Element host, DOMString id);
+    [RaisesException] boolean hasSelectorForClassInShadow(Element host, DOMString className);
+    [RaisesException] boolean hasSelectorForAttributeInShadow(Element host, DOMString attributeName);
+    [RaisesException] boolean hasSelectorForPseudoClassInShadow(Element host, DOMString pseudoClass);
 
     // CSS Animation testing.
     unsigned long numberOfActiveAnimations();
-    void suspendAnimations(in Document document) raises (DOMException);
-    void resumeAnimations(in Document document) raises (DOMException);
-    boolean pauseAnimationAtTimeOnElement(in DOMString animationName, in double pauseTime, in Element element) raises (DOMException);
-    boolean pauseAnimationAtTimeOnPseudoElement(in DOMString animationName, in double pauseTime, in Element element, in DOMString pseudoId) raises (DOMException);
+    [RaisesException] void suspendAnimations(Document document);
+    [RaisesException] void resumeAnimations(Document document);
+    [RaisesException] boolean pauseAnimationAtTimeOnElement(DOMString animationName, double pauseTime, Element element);
+    [RaisesException] boolean pauseAnimationAtTimeOnPseudoElement(DOMString animationName, double pauseTime, Element element, DOMString pseudoId);
 
     // CSS Transition testing.
-    boolean pauseTransitionAtTimeOnElement(in DOMString propertyName, in double pauseTime, in Element element) raises (DOMException);
-    boolean pauseTransitionAtTimeOnPseudoElement(in DOMString property, in double pauseTime, in Element element, in DOMString pseudoId) raises (DOMException);
+    [RaisesException] boolean pauseTransitionAtTimeOnElement(DOMString propertyName, double pauseTime, Element element);
+    [RaisesException] boolean pauseTransitionAtTimeOnPseudoElement(DOMString property, double pauseTime, Element element, DOMString pseudoId);
 
-    Node nextSiblingByWalker(in Node node) raises(DOMException);
-    Node firstChildByWalker(in Node node) raises(DOMException);
-    Node lastChildByWalker(in Node node) raises(DOMException);
-    Node nextNodeByWalker(in Node node) raises(DOMException);
-    Node previousNodeByWalker(in Node node) raises(DOMException);
+    [RaisesException] Node nextSiblingByWalker(Node node);
+    [RaisesException] Node firstChildByWalker(Node node);
+    [RaisesException] Node lastChildByWalker(Node node);
+    [RaisesException] Node nextNodeByWalker(Node node);
+    [RaisesException] Node previousNodeByWalker(Node node);
 
-    boolean attached(in Node node) raises(DOMException);
+    [RaisesException] boolean attached(Node node);
 
-    DOMString visiblePlaceholder(in Element element);
+    DOMString visiblePlaceholder(Element element);
 #if defined(ENABLE_INPUT_TYPE_COLOR) && ENABLE_INPUT_TYPE_COLOR
-    void selectColorInColorChooser(in Element element, in DOMString colorValue);
+    void selectColorInColorChooser(Element element, DOMString colorValue);
 #endif
-    DOMString[] formControlStateOfPreviousHistoryItem() raises(DOMException);
-    void setFormControlStateOfPreviousHistoryItem(in sequence<DOMString> values) raises(DOMException);
-    void setEnableMockPagePopup(in boolean enabled) raises(DOMException);
+    [RaisesException] DOMString[] formControlStateOfPreviousHistoryItem();
+    [RaisesException] void setFormControlStateOfPreviousHistoryItem(sequence<DOMString> values);
+    [RaisesException] void setEnableMockPagePopup(boolean enabled);
 #if defined(ENABLE_PAGE_POPUP) && ENABLE_PAGE_POPUP
     readonly attribute PagePopupController pagePopupController;
 #endif
 
-    ClientRect absoluteCaretBounds() raises(DOMException);
+    [RaisesException] ClientRect absoluteCaretBounds();
 
-    ClientRect boundingBox(in Element element) raises(DOMException);
+    [RaisesException] ClientRect boundingBox(Element element);
 
-    ClientRectList inspectorHighlightRects(in Document document) raises (DOMException);
+    [RaisesException] ClientRectList inspectorHighlightRects(Document document);
 
-    unsigned long markerCountForNode(in Node node, in DOMString markerType) raises(DOMException);
-    Range markerRangeForNode(in Node node, in DOMString markerType, in unsigned long index) raises(DOMException);
-    DOMString markerDescriptionForNode(in Node node, in DOMString markerType, in unsigned long index) raises(DOMException);
-    void addTextMatchMarker(in Range range, in boolean isActive);
+    [RaisesException] unsigned long markerCountForNode(Node node, DOMString markerType);
+    [RaisesException] Range markerRangeForNode(Node node, DOMString markerType, unsigned long index);
+    [RaisesException] DOMString markerDescriptionForNode(Node node, DOMString markerType, unsigned long index);
+    void addTextMatchMarker(Range range, boolean isActive);
 
-    void setScrollViewPosition(in Document document, in long x, in long y) raises(DOMException);
+    [RaisesException] void setScrollViewPosition(Document document, long x, long y);
 
-    void setPagination(in Document document, in DOMString mode, in long gap, in [Optional] long pageLength) raises(DOMException);
+    [RaisesException] void setPagination(Document document, DOMString mode, long gap, [Optional] long pageLength);
 
-    DOMString configurationForViewport(in Document document,
-                                       in float devicePixelRatio,
-                                       in long deviceWidth,
-                                       in long deviceHeight,
-                                       in long availableWidth,
-                                       in long availableHeight) raises(DOMException);
+    [RaisesException] DOMString configurationForViewport(Document document,
+                                       float devicePixelRatio,
+                                       long deviceWidth,
+                                       long deviceHeight,
+                                       long availableWidth,
+                                       long availableHeight);
 
-    boolean wasLastChangeUserEdit(in Element textField) raises (DOMException);
-    boolean elementShouldAutoComplete(in Element inputElement) raises (DOMException);
-    DOMString suggestedValue(in Element inputElement) raises (DOMException);
-    void setSuggestedValue(in Element inputElement, in DOMString value) raises (DOMException);
-    void setEditingValue(in Element inputElement, in DOMString value) raises (DOMException);
-    void setAutofilled(in Element inputElement, in boolean enabled) raises(DOMException);
+    [RaisesException] boolean wasLastChangeUserEdit(Element textField);
+    [RaisesException] boolean elementShouldAutoComplete(Element inputElement);
+    [RaisesException] DOMString suggestedValue(Element inputElement);
+    [RaisesException] void setSuggestedValue(Element inputElement, DOMString value);
+    [RaisesException] void setEditingValue(Element inputElement, DOMString value);
+    [RaisesException] void setAutofilled(Element inputElement, boolean enabled);
 
-    void paintControlTints(in Document document) raises (DOMException);
+    [RaisesException] void paintControlTints(Document document);
 
-    void scrollElementToRect(in Element element, in long x, in long y, in long w, in long h) raises (DOMException);
+    [RaisesException] void scrollElementToRect(Element element, long x, long y, long w, long h);
 
-    Range rangeFromLocationAndLength(in Element scope, in long rangeLocation, in long rangeLength) raises (DOMException);
-    unsigned long locationFromRange(in Element scope, in Range range) raises (DOMException);
-    unsigned long lengthFromRange(in Element scope, in Range range) raises (DOMException);
-    DOMString rangeAsText(in Range range) raises (DOMException);
+    [RaisesException] Range rangeFromLocationAndLength(Element scope, long rangeLocation, long rangeLength);
+    [RaisesException] unsigned long locationFromRange(Element scope, Range range);
+    [RaisesException] unsigned long lengthFromRange(Element scope, Range range);
+    [RaisesException] DOMString rangeAsText(Range range);
 
-    void setDelegatesScrolling(in boolean enabled, in Document document) raises (DOMException);
 #if defined(ENABLE_TOUCH_ADJUSTMENT) && ENABLE_TOUCH_ADJUSTMENT
-    WebKitPoint touchPositionAdjustedToBestClickableNode(in long x, in long y, in long width, in long height, in Document document) raises (DOMException);
-    Node touchNodeAdjustedToBestClickableNode(in long x, in long y, in long width, in long height, in Document document) raises (DOMException);
-    WebKitPoint touchPositionAdjustedToBestContextMenuNode(in long x, in long y, in long width, in long height, in Document document) raises (DOMException);
-    Node touchNodeAdjustedToBestContextMenuNode(in long x, in long y, in long width, in long height, in Document document) raises (DOMException);
-    ClientRect bestZoomableAreaForTouchPoint(in long x, in long y, in long width, in long height, in Document document) raises (DOMException);
+    [RaisesException] DOMPoint touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
+    [RaisesException] Node touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, Document document);
+    [RaisesException] DOMPoint touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
+    [RaisesException] Node touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, Document document);
+    [RaisesException] ClientRect bestZoomableAreaForTouchPoint(long x, long y, long width, long height, Document document);
 #endif
 
-    long lastSpellCheckRequestSequence(in Document document) raises (DOMException);
-    long lastSpellCheckProcessedSequence(in Document document) raises (DOMException);
+    [RaisesException] long lastSpellCheckRequestSequence(Document document);
+    [RaisesException] long lastSpellCheckProcessedSequence(Document document);
 
     sequence<DOMString> userPreferredLanguages();
-    void setUserPreferredLanguages(in sequence<DOMString> languages);
+    void setUserPreferredLanguages(sequence<DOMString> languages);
 
-    unsigned long wheelEventHandlerCount(in Document document) raises (DOMException);
-    unsigned long touchEventHandlerCount(in Document document) raises (DOMException);
+    [RaisesException] unsigned long wheelEventHandlerCount(Document document);
+    [RaisesException] unsigned long touchEventHandlerCount(Document document);
 #if defined(ENABLE_TOUCH_EVENT_TRACKING) && ENABLE_TOUCH_EVENT_TRACKING
-    ClientRectList touchEventTargetClientRects(in Document document) raises (DOMException);
+    [RaisesException] ClientRectList touchEventTargetClientRects(Document document);
 #endif
 
-    NodeList nodesFromRect(in Document document, in long x, in long y,
-        in unsigned long topPadding, in unsigned long rightPadding, in unsigned long bottomPadding, in unsigned long leftPadding,
-        in boolean ignoreClipping, in boolean allowShadowContent, in boolean allowChildFrameContent) raises (DOMException);
+    [RaisesException] NodeList nodesFromRect(Document document, long x, long y,
+        unsigned long topPadding, unsigned long rightPadding, unsigned long bottomPadding, unsigned long leftPadding,
+        boolean ignoreClipping, boolean allowShadowContent, boolean allowChildFrameContent);
 
     void emitInspectorDidBeginFrame();
     void emitInspectorDidCancelFrame();
 
-    boolean hasSpellingMarker(in Document document, in long from, in long length) raises (DOMException);
-    boolean hasGrammarMarker(in Document document, in long from, in long length) raises (DOMException);
-    boolean hasAutocorrectedMarker(in Document document, in long from, in long length) raises (DOMException);
-    void setContinuousSpellCheckingEnabled(in boolean enabled) raises (DOMException);
+    [RaisesException] boolean hasSpellingMarker(Document document, long from, long length);
+    [RaisesException] boolean hasGrammarMarker(Document document, long from, long length);
+    [RaisesException] boolean hasAutocorrectedMarker(Document document, long from, long length);
+    [RaisesException] void setContinuousSpellCheckingEnabled(boolean enabled);
 
-    boolean isOverwriteModeEnabled(in Document document) raises (DOMException);
-    void toggleOverwriteModeEnabled(in Document document) raises (DOMException);
+    [RaisesException] boolean isOverwriteModeEnabled(Document document);
+    [RaisesException] void toggleOverwriteModeEnabled(Document document);
 
-    unsigned long numberOfScrollableAreas(in Document document) raises (DOMException);
+    [RaisesException] unsigned long numberOfScrollableAreas(Document document);
 
-    boolean isPageBoxVisible(in Document document, in long pageNumber) raises (DOMException);
+    [RaisesException] boolean isPageBoxVisible(Document document, long pageNumber);
 
     readonly attribute InternalSettings settings;
     readonly attribute unsigned long workerThreadCount;
@@ -184,61 +174,57 @@
     const unsigned short LAYER_TREE_INCLUDES_TILE_CACHES = 2;
     const unsigned short LAYER_TREE_INCLUDES_REPAINT_RECTS = 4;
     const unsigned short LAYER_TREE_INCLUDES_PAINTING_PHASES = 8;
-    DOMString layerTreeAsText(in Document document, in [Optional] unsigned short flags) raises (DOMException);
+    [RaisesException] DOMString layerTreeAsText(Document document, [Optional] unsigned short flags);
 
-    DOMString scrollingStateTreeAsText(in Document document) raises (DOMException);
-    DOMString mainThreadScrollingReasons(in Document document) raises (DOMException);
-    ClientRectList nonFastScrollableRects(in Document document) raises (DOMException);
+    [RaisesException] DOMString scrollingStateTreeAsText(Document document);
+    [RaisesException] DOMString mainThreadScrollingReasons(Document document);
+    [RaisesException] ClientRectList nonFastScrollableRects(Document document);
 
-    DOMString repaintRectsAsText(in Document document) raises (DOMException);
+    [RaisesException] DOMString repaintRectsAsText(Document document);
 
-    void garbageCollectDocumentResources(in Document document) raises (DOMException);
+    [RaisesException] void garbageCollectDocumentResources(Document document);
 
     void allowRoundingHacks();
 
-    void insertAuthorCSS(in Document document, in DOMString css);
-    void insertUserCSS(in Document document, in DOMString css);
+    void insertAuthorCSS(Document document, DOMString css);
+    void insertUserCSS(Document document, DOMString css);
 
 #if defined(ENABLE_BATTERY_STATUS) && ENABLE_BATTERY_STATUS
-    void setBatteryStatus(in Document document, in DOMString eventType, in boolean charging, in double chargingTime, in double dischargingTime, in double level) raises (DOMException);
-#endif
-
-#if defined(ENABLE_NETWORK_INFO) && ENABLE_NETWORK_INFO
-    void setNetworkInformation(in Document document, in DOMString eventType, in double bandwidth, in boolean metered) raises (DOMException);
+    [RaisesException] void setBatteryStatus(Document document, DOMString eventType, boolean charging, double chargingTime, double dischargingTime, double level);
 #endif
 
 #if defined(ENABLE_PROXIMITY_EVENTS) && ENABLE_PROXIMITY_EVENTS
-    void setDeviceProximity(in Document document, in DOMString eventType, in double value, in double min, in double max) raises (DOMException);
+    [RaisesException] void setDeviceProximity(Document document, DOMString eventType, double value, double min, double max);
 #endif
 
-    [Conditional=INSPECTOR] unsigned long numberOfLiveNodes();
-    [Conditional=INSPECTOR] unsigned long numberOfLiveDocuments();
-    [Conditional=INSPECTOR] sequence<DOMString> consoleMessageArgumentCounts(in Document document);
-    [Conditional=INSPECTOR] DOMWindow openDummyInspectorFrontend(in DOMString url);
-    [Conditional=INSPECTOR] void closeDummyInspectorFrontend();
-    [Conditional=INSPECTOR] void setInspectorResourcesDataSizeLimits(in long maximumResourcesContentSize, in long maximumSingleResourceContentSize) raises(DOMException);
-    [Conditional=INSPECTOR] void setJavaScriptProfilingEnabled(in boolean creates) raises(DOMException);
+    unsigned long numberOfLiveNodes();
+    unsigned long numberOfLiveDocuments();
+    sequence<DOMString> consoleMessageArgumentCounts(Document document);
+    DOMWindow openDummyInspectorFrontend(DOMString url);
+    void closeDummyInspectorFrontend();
+    [RaisesException] void setInspectorResourcesDataSizeLimits(long maximumResourcesContentSize, long maximumSingleResourceContentSize);
+    [RaisesException] void setJavaScriptProfilingEnabled(boolean creates);
 
-    DOMString counterValue(in Element element);
-    long pageNumber(in Element element, in [Optional] float pageWidth, in [Optional] float pageHeight);
-    DOMString[] shortcutIconURLs(in Document document);
-    DOMString[] allIconURLs(in Document document);
-    long numberOfPages(in [Optional] double pageWidthInPixels, in [Optional] double pageHeightInPixels);
-    DOMString pageProperty(in DOMString propertyName, in long pageNumber) raises (DOMException);
-    DOMString pageSizeAndMarginsInPixels(in long pageIndex, in long width, in long height, in long marginTop, in long marginRight, in long marginBottom, in long marginLeft) raises (DOMException);
+    DOMString counterValue(Element element);
+    long pageNumber(Element element, [Optional] float pageWidth, [Optional] float pageHeight);
+    DOMString[] shortcutIconURLs(Document document);
+    DOMString[] allIconURLs(Document document);
+    long numberOfPages([Optional] double pageWidthInPixels, [Optional] double pageHeightInPixels);
+    [RaisesException] DOMString pageProperty(DOMString propertyName, long pageNumber);
+    [RaisesException] DOMString pageSizeAndMarginsInPixels(long pageIndex, long width, long height, long marginTop, long marginRight, long marginBottom, long marginLeft);
 
-    void setPageScaleFactor(in float scaleFactor, in long x, in long y) raises(DOMException);
+    [RaisesException] void setPageScaleFactor(float scaleFactor, long x, long y);
 
-    void setHeaderHeight(in Document document, in float height);
-    void setFooterHeight(in Document document, in float height);
+    void setHeaderHeight(Document document, float height);
+    void setFooterHeight(Document document, float height);
 
-    void webkitWillEnterFullScreenForElement(in Document document, in Element element);
-    void webkitDidEnterFullScreenForElement(in Document document, in Element element);
-    void webkitWillExitFullScreenForElement(in Document document, in Element element);
-    void webkitDidExitFullScreenForElement(in Document document, in Element element);
+    void webkitWillEnterFullScreenForElement(Document document, Element element);
+    void webkitDidEnterFullScreenForElement(Document document, Element element);
+    void webkitWillExitFullScreenForElement(Document document, Element element);
+    void webkitDidExitFullScreenForElement(Document document, Element element);
 
-    void registerURLSchemeAsBypassingContentSecurityPolicy(in DOMString scheme);
-    void removeURLSchemeRegisteredAsBypassingContentSecurityPolicy(in DOMString scheme);
+    void registerURLSchemeAsBypassingContentSecurityPolicy(DOMString scheme);
+    void removeURLSchemeRegisteredAsBypassingContentSecurityPolicy(DOMString scheme);
 
     MallocStatistics mallocStatistics();
     TypeConversions typeConversions();
@@ -247,28 +233,28 @@
 
     // These functions both reset the tracked repaint rects. They are inteded to be used in the following order:
     //  startTrackingRepaints, repaintRectsAsText, stopTrackingRepaints.
-    void startTrackingRepaints(in Document document) raises (DOMException);
-    void stopTrackingRepaints(in Document document) raises (DOMException);
+    [RaisesException] void startTrackingRepaints(Document document);
+    [RaisesException] void stopTrackingRepaints(Document document);
 
     // Returns a string with information about the mouse cursor used at the specified client location.
-    DOMString getCurrentCursorInfo(in Document document) raises (DOMException);
+    [RaisesException] DOMString getCurrentCursorInfo(Document document);
 
-    DOMString markerTextForListItem(in Element element) raises (DOMException);
+    [RaisesException] DOMString markerTextForListItem(Element element);
 
-    SerializedScriptValue deserializeBuffer(in ArrayBuffer buffer);
-    ArrayBuffer serializeObject(in SerializedScriptValue obj);
+    SerializedScriptValue deserializeBuffer(ArrayBuffer buffer);
+    ArrayBuffer serializeObject(SerializedScriptValue obj);
 
-    void setUsesOverlayScrollbars(in boolean enabled);
+    void setUsesOverlayScrollbars(boolean enabled);
 
-    void forceReload(in boolean endToEnd);
+    void forceReload(boolean endToEnd);
 
-    [Conditional=VIDEO] void simulateAudioInterruption(in Node node);
+    [Conditional=VIDEO] void simulateAudioInterruption(Node node);
 
     [Conditional=ENCRYPTED_MEDIA_V2] void initializeMockCDM();
 
     [Conditional=SPEECH_SYNTHESIS] void enableMockSpeechSynthesizer();
 
-    DOMString getImageSourceURL(in Element element) raises(DOMException);
+    [RaisesException] DOMString getImageSourceURL(Element element);
 
-    boolean isSelectPopupVisible(in Node node);
+    boolean isSelectPopupVisible(Node node);
 };
diff --git a/testing/MallocStatistics.idl b/testing/MallocStatistics.idl
index 249e460..bf78b4c 100644
--- a/testing/MallocStatistics.idl
+++ b/testing/MallocStatistics.idl
@@ -24,7 +24,6 @@
  */
 
 [
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface MallocStatistics {
     readonly attribute unsigned long reservedVMBytes;
diff --git a/testing/TypeConversions.idl b/testing/TypeConversions.idl
index b27b158..e96c215 100644
--- a/testing/TypeConversions.idl
+++ b/testing/TypeConversions.idl
@@ -24,16 +24,15 @@
  */
 
 [
-    OmitConstructor,
     ImplementationLacksVTable
 ] interface TypeConversions {
     attribute long testLong;
-    attribute [EnforceRange] long testEnforceRangeLong;
+    [EnforceRange] attribute long testEnforceRangeLong;
     attribute unsigned long testUnsignedLong;
-    attribute [EnforceRange] unsigned long testEnforceRangeUnsignedLong;
+    [EnforceRange] attribute unsigned long testEnforceRangeUnsignedLong;
 
     attribute long long testLongLong;
-    attribute [EnforceRange] long long testEnforceRangeLongLong;
+    [EnforceRange] attribute long long testEnforceRangeLongLong;
     attribute unsigned long long testUnsignedLongLong;
-    attribute [EnforceRange] unsigned long long testEnforceRangeUnsignedLongLong;
+    [EnforceRange] attribute unsigned long long testEnforceRangeUnsignedLongLong;
 };
diff --git a/workers/AbstractWorker.idl b/workers/AbstractWorker.idl
index 55e7df3..942c498 100644
--- a/workers/AbstractWorker.idl
+++ b/workers/AbstractWorker.idl
@@ -30,20 +30,18 @@
  */
 
 [
-    Conditional=WORKERS,
     ActiveDOMObject,
     EventTarget
 ] interface AbstractWorker {
 
     attribute EventListener onerror;
 
-    void addEventListener(in DOMString type,
-                          in EventListener listener,
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type,
-                             in EventListener listener,
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type,
+                          EventListener listener,
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type,
+                             EventListener listener,
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/workers/DedicatedWorkerContext.idl b/workers/DedicatedWorkerContext.idl
index 2333570..bf6ad34 100644
--- a/workers/DedicatedWorkerContext.idl
+++ b/workers/DedicatedWorkerContext.idl
@@ -29,24 +29,11 @@
  */
 
 [
-    Conditional=WORKERS,
-    ExtendsDOMGlobalObject,
     IsWorkerContext,
-    OmitConstructor
 ] interface DedicatedWorkerContext : WorkerContext {
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [Custom] void postMessage(in any message, in [Optional] Array messagePorts)
-        raises(DOMException);
-#else
-    // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
-    void postMessage(in DOMString message, in [Optional] MessagePort messagePort)
-        raises(DOMException);
-#endif
-#endif
+    [Custom, RaisesException] void postMessage(any message, [Optional] Array messagePorts);
 
-             attribute EventListener onmessage;
-
+    attribute EventListener onmessage;
 };
 
diff --git a/workers/SharedWorker.idl b/workers/SharedWorker.idl
index 1f2e845..3d0f3ee 100644
--- a/workers/SharedWorker.idl
+++ b/workers/SharedWorker.idl
@@ -31,9 +31,9 @@
 
 [
     Conditional=SHARED_WORKERS,
-    Constructor(in DOMString scriptURL, in [Optional=DefaultIsNullString] DOMString name),
+    Constructor(DOMString scriptURL, [Optional=DefaultIsNullString] DOMString name),
     CallWith=ScriptExecutionContext,
-    ConstructorRaisesException
+    RaisesException
 ] interface SharedWorker : AbstractWorker {
     readonly attribute MessagePort port;
 };
diff --git a/workers/SharedWorkerContext.idl b/workers/SharedWorkerContext.idl
index e411976..dd0c267 100644
--- a/workers/SharedWorkerContext.idl
+++ b/workers/SharedWorkerContext.idl
@@ -30,9 +30,7 @@
 
 [
     Conditional=SHARED_WORKERS,
-    ExtendsDOMGlobalObject,
     IsWorkerContext,
-    OmitConstructor
 ] interface SharedWorkerContext : WorkerContext {
 
     readonly attribute DOMString name;
diff --git a/workers/Worker.idl b/workers/Worker.idl
index 2f06067..ec5105f 100644
--- a/workers/Worker.idl
+++ b/workers/Worker.idl
@@ -26,23 +26,14 @@
  */
 
 [
-    Conditional=WORKERS,
-    Constructor(in DOMString scriptUrl),
+    Constructor(DOMString scriptUrl),
     CallWith=ScriptExecutionContext,
-    ConstructorRaisesException
+    RaisesException
 ] interface Worker : AbstractWorker {
 
     attribute EventListener onmessage;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
-    [Custom] void postMessage(in SerializedScriptValue message, in [Optional] Array messagePorts)
-        raises(DOMException);
-#else
-    // There's no good way to expose an array via the ObjC bindings, so for now just allow passing in a single port.
-    void postMessage(in SerializedScriptValue message, in [Optional] MessagePort messagePort)
-        raises(DOMException);
-#endif
-
+    [Custom, RaisesException] void postMessage(SerializedScriptValue message, [Optional] Array messagePorts);
     void terminate();
 };
 
diff --git a/workers/WorkerContext.idl b/workers/WorkerContext.idl
index fefb13c..888f35b 100644
--- a/workers/WorkerContext.idl
+++ b/workers/WorkerContext.idl
@@ -25,19 +25,14 @@
  */
 
 [
-    Conditional=WORKERS,
     EventTarget,
-    ExtendsDOMGlobalObject,
     IsWorkerContext,
-    OmitConstructor,
-    V8CustomToJSObject,
-    V8NoWrapperCache
+    CustomToJSObject,
+    NoWrapperCache
 ] interface WorkerContext {
 
     // WorkerGlobalScope
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
              [Replaceable] readonly attribute  WorkerContext self;
-#endif
              [Replaceable] readonly attribute WorkerLocation location;
     void close();
              attribute EventListener onerror;
@@ -47,23 +42,21 @@
              [Replaceable] readonly attribute WorkerNavigator navigator;
 
     // Timers
-    [Custom] long setTimeout(in any handler, in [Optional=DefaultIsUndefined] long timeout);
-    void clearTimeout(in [Optional=DefaultIsUndefined] long handle);
-    [Custom] long setInterval(in any handler, in [Optional=DefaultIsUndefined] long timeout);
-    void clearInterval(in [Optional=DefaultIsUndefined] long handle);
+    [Custom] long setTimeout(any handler, [Optional=DefaultIsUndefined] long timeout);
+    void clearTimeout([Optional=DefaultIsUndefined] long handle);
+    [Custom] long setInterval(any handler, [Optional=DefaultIsUndefined] long timeout);
+    void clearInterval([Optional=DefaultIsUndefined] long handle);
 
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 
-#if !defined(LANGUAGE_CPP) || !LANGUAGE_CPP
     // Constructors
     attribute MessageEventConstructor MessageEvent;
     attribute WorkerLocationConstructor WorkerLocation;
@@ -73,16 +66,13 @@
 #endif
     attribute EventSourceConstructor EventSource;
     attribute XMLHttpRequestConstructor XMLHttpRequest;
-#endif
 
-#if defined(ENABLE_BLOB) && ENABLE_BLOB
     attribute BlobConstructor Blob;
     attribute FileReaderConstructor FileReader;
     attribute FileReaderSyncConstructor FileReaderSync;
-#endif
 
-    [Conditional=BLOB] attribute DOMURLConstructor URL;
-    [Conditional=BLOB] attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
+    attribute DOMURLConstructor URL;
+    attribute DOMURLConstructor webkitURL; // FIXME: deprecate this.
 
     attribute ArrayBufferConstructor ArrayBuffer; // Usable with new operator
     attribute Int8ArrayConstructor Int8Array; // Usable with new operator
diff --git a/workers/WorkerLocation.idl b/workers/WorkerLocation.idl
index fd4b977..ac581e3 100644
--- a/workers/WorkerLocation.idl
+++ b/workers/WorkerLocation.idl
@@ -27,7 +27,6 @@
  */
 
 [
-    Conditional=WORKERS,
     ImplementationLacksVTable
 ] interface WorkerLocation {
     readonly attribute DOMString href;
diff --git a/xml/DOMParser.idl b/xml/DOMParser.idl
index ece8971..b4338b8 100644
--- a/xml/DOMParser.idl
+++ b/xml/DOMParser.idl
@@ -21,6 +21,6 @@
     Constructor,
     ImplementationLacksVTable
 ] interface DOMParser {
-    Document parseFromString(in [Optional=DefaultIsUndefined] DOMString str, 
-                             in [Optional=DefaultIsUndefined] DOMString contentType);
+    Document parseFromString([Optional=DefaultIsUndefined] DOMString str, 
+                             [Optional=DefaultIsUndefined] DOMString contentType);
 };
diff --git a/xml/XMLHttpRequest.idl b/xml/XMLHttpRequest.idl
index 3266362..0011357 100644
--- a/xml/XMLHttpRequest.idl
+++ b/xml/XMLHttpRequest.idl
@@ -40,7 +40,7 @@
     ActiveDOMObject,
     Constructor,
     CallWith=ScriptExecutionContext,
-    V8CustomConstructor,
+    CustomConstructor,
     EventTarget
 ] interface XMLHttpRequest {
     // From XMLHttpRequestEventTarget
@@ -63,56 +63,42 @@
     const unsigned short LOADING = 3;
     const unsigned short DONE = 4;
 
-    [Conditional=XHR_TIMEOUT] attribute unsigned long timeout
-        setter raises(DOMException);
+    [Conditional=XHR_TIMEOUT, SetterRaisesException] attribute unsigned long timeout;
     readonly attribute unsigned short readyState;
 
-    attribute boolean withCredentials
-        setter raises(DOMException);
+    [SetterRaisesException] attribute boolean withCredentials;
 
-    [Custom] void open(in DOMString method, in DOMString url, in [Optional] boolean async, in [Optional] DOMString user, in [Optional] DOMString password)
-        raises(DOMException);
+    [Custom, RaisesException] void open(DOMString method, DOMString url, [Optional] boolean async, [Optional] DOMString user, [Optional] DOMString password);
 
-    void setRequestHeader(in DOMString header, in DOMString value)
-        raises(DOMException);
+    [RaisesException] void setRequestHeader(DOMString header, DOMString value);
 
-    [Custom] void send()
-        raises(DOMException);
+    [Custom, RaisesException] void send();
 
     void abort();
 
     readonly attribute XMLHttpRequestUpload upload;
 
     // response
-    [TreatReturnedNullStringAs=Undefined] DOMString getAllResponseHeaders()
-        raises(DOMException);
-    [TreatReturnedNullStringAs=Null] DOMString getResponseHeader(in DOMString header)
-        raises(DOMException);
-    [CustomGetter] readonly attribute DOMString responseText // The custom getter implements TreatReturnedNullStringAs=Null
-        getter raises(DOMException);
-    readonly attribute Document responseXML
-        getter raises(DOMException);
+    [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;
 
-    attribute XMLHttpRequestResponseType responseType
-        setter raises(DOMException);
-    [CustomGetter] readonly attribute Object response
-        getter raises(DOMException);
+    [SetterRaisesException] attribute XMLHttpRequestResponseType responseType;
+    [CustomGetter, GetterRaisesException] readonly attribute Object response;
 
-    readonly attribute unsigned short status
-        getter raises(DOMException);
-    readonly attribute DOMString statusText
-        getter raises(DOMException);
+    [GetterRaisesException] readonly attribute unsigned short status;
+    [GetterRaisesException] readonly attribute DOMString statusText;
 
     // Extension
-    void overrideMimeType(in DOMString override);
+    void overrideMimeType(DOMString override);
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
diff --git a/xml/XMLHttpRequestException.idl b/xml/XMLHttpRequestException.idl
index 16e2846..6bf63a0 100644
--- a/xml/XMLHttpRequestException.idl
+++ b/xml/XMLHttpRequestException.idl
@@ -35,10 +35,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // XMLHttpRequestExceptionCode
     const unsigned short NETWORK_ERR = 101;
diff --git a/xml/XMLHttpRequestUpload.idl b/xml/XMLHttpRequestUpload.idl
index f4b8527..1f5dc5a 100644
--- a/xml/XMLHttpRequestUpload.idl
+++ b/xml/XMLHttpRequestUpload.idl
@@ -39,13 +39,12 @@
     attribute EventListener onprogress;
 
     // EventTarget interface
-    void addEventListener(in DOMString type, 
-                          in EventListener listener, 
-                          in [Optional] boolean useCapture);
-    void removeEventListener(in DOMString type, 
-                             in EventListener listener, 
-                             in [Optional] boolean useCapture);
-    boolean dispatchEvent(in Event evt)
-        raises(EventException);
+    void addEventListener(DOMString type, 
+                          EventListener listener, 
+                          [Optional] boolean useCapture);
+    void removeEventListener(DOMString type, 
+                             EventListener listener, 
+                             [Optional] boolean useCapture);
+    [RaisesException] boolean dispatchEvent(Event evt);
 };
 
diff --git a/xml/XMLSerializer.idl b/xml/XMLSerializer.idl
index 31ec051..eeb9b5d 100644
--- a/xml/XMLSerializer.idl
+++ b/xml/XMLSerializer.idl
@@ -22,7 +22,6 @@
     Constructor,
     ImplementationLacksVTable
 ] interface XMLSerializer {
-    DOMString serializeToString(in [Optional=DefaultIsUndefined] Node node)
-        raises(DOMException);
+    [RaisesException] DOMString serializeToString([Optional=DefaultIsUndefined] Node node);
 };
 
diff --git a/xml/XPathEvaluator.idl b/xml/XPathEvaluator.idl
index 5ba6ab3..3bd168d 100644
--- a/xml/XPathEvaluator.idl
+++ b/xml/XPathEvaluator.idl
@@ -21,16 +21,14 @@
     Constructor,
     ImplementationLacksVTable
 ] interface XPathEvaluator {
-    XPathExpression createExpression(in [Optional=DefaultIsUndefined] DOMString expression,
-                                     in [Optional=DefaultIsUndefined] XPathNSResolver resolver)
-        raises(DOMException);
+    [RaisesException] XPathExpression createExpression([Optional=DefaultIsUndefined] DOMString expression,
+                                     [Optional=DefaultIsUndefined] XPathNSResolver resolver);
 
-    XPathNSResolver createNSResolver(in [Optional=DefaultIsUndefined] Node nodeResolver);
+    XPathNSResolver createNSResolver([Optional=DefaultIsUndefined] Node nodeResolver);
 
-    XPathResult evaluate(in [Optional=DefaultIsUndefined] DOMString expression,
-                         in [Optional=DefaultIsUndefined] Node contextNode, 
-                         in [Optional=DefaultIsUndefined] XPathNSResolver resolver,
-                         in [Optional=DefaultIsUndefined] unsigned short type,
-                         in [Optional=DefaultIsUndefined] XPathResult inResult)
-        raises(DOMException);
+    [RaisesException] XPathResult evaluate([Optional=DefaultIsUndefined] DOMString expression,
+                         [Optional=DefaultIsUndefined] Node contextNode, 
+                         [Optional=DefaultIsUndefined] XPathNSResolver resolver,
+                         [Optional=DefaultIsUndefined] unsigned short type,
+                         [Optional=DefaultIsUndefined] XPathResult inResult);
 };
diff --git a/xml/XPathException.idl b/xml/XPathException.idl
index 55879f6..6e63839 100644
--- a/xml/XPathException.idl
+++ b/xml/XPathException.idl
@@ -35,10 +35,8 @@
     readonly attribute DOMString        name;
     readonly attribute DOMString        message;
 
-#if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
     // Override in a Mozilla compatible format
     [NotEnumerable] DOMString toString();
-#endif
 
     // XPathExceptionCode
     const unsigned short INVALID_EXPRESSION_ERR = 51;
diff --git a/xml/XPathExpression.idl b/xml/XPathExpression.idl
index aec35fd..16258c7 100644
--- a/xml/XPathExpression.idl
+++ b/xml/XPathExpression.idl
@@ -20,9 +20,8 @@
 [
      ImplementationLacksVTable
 ] interface XPathExpression {
-    [ObjCLegacyUnnamedParameters] XPathResult evaluate(in [Optional=DefaultIsUndefined] Node contextNode, 
-                                        in [Optional=DefaultIsUndefined] unsigned short type, 
-                                        in [Optional=DefaultIsUndefined] XPathResult inResult)
-        raises(DOMException);
+     [RaisesException] XPathResult evaluate([Optional=DefaultIsUndefined] Node contextNode, 
+                                        [Optional=DefaultIsUndefined] unsigned short type, 
+                                        [Optional=DefaultIsUndefined] XPathResult inResult);
 };
 
diff --git a/xml/XPathNSResolver.idl b/xml/XPathNSResolver.idl
index 0d64f1b..6b40a8a 100644
--- a/xml/XPathNSResolver.idl
+++ b/xml/XPathNSResolver.idl
@@ -19,10 +19,9 @@
  */
 
 [
-    ObjCProtocol,
-    OmitConstructor,
-    V8SkipVTableValidation
+    
+    SkipVTableValidation
 ] interface XPathNSResolver {
-    [TreatReturnedNullStringAs=Null] DOMString lookupNamespaceURI(in [Optional=DefaultIsUndefined] DOMString prefix);
+    [TreatReturnedNullStringAs=Null] DOMString lookupNamespaceURI([Optional=DefaultIsUndefined] DOMString prefix);
 };
 
diff --git a/xml/XPathResult.idl b/xml/XPathResult.idl
index 6534f4a..698b955 100644
--- a/xml/XPathResult.idl
+++ b/xml/XPathResult.idl
@@ -32,25 +32,18 @@
     const unsigned short FIRST_ORDERED_NODE_TYPE        = 9;
 
     readonly attribute unsigned short  resultType;
-    readonly attribute double          numberValue
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute double          numberValue;
         
-    readonly attribute DOMString       stringValue
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute DOMString       stringValue;
 
-    readonly attribute boolean         booleanValue
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute boolean         booleanValue;
 
-    readonly attribute Node            singleNodeValue
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute Node            singleNodeValue;
 
     readonly attribute boolean         invalidIteratorState;
-    readonly attribute unsigned long   snapshotLength
-        getter raises (DOMException);
+    [GetterRaisesException] readonly attribute unsigned long   snapshotLength;
         
-    Node iterateNext()
-        raises (DOMException);
-    Node snapshotItem(in [Optional=DefaultIsUndefined] unsigned long index)
-        raises (DOMException);
+    [RaisesException] Node iterateNext();
+    [RaisesException] Node snapshotItem([Optional=DefaultIsUndefined] unsigned long index);
 };
 
diff --git a/xml/XSLTProcessor.idl b/xml/XSLTProcessor.idl
index e351659..436bb0f 100644
--- a/xml/XSLTProcessor.idl
+++ b/xml/XSLTProcessor.idl
@@ -36,13 +36,13 @@
     ImplementationLacksVTable
 ] interface XSLTProcessor {
     
-    void importStylesheet(in [Optional=DefaultIsUndefined] Node stylesheet);
-    DocumentFragment transformToFragment(in [Optional=DefaultIsUndefined] Node source, in [Optional=DefaultIsUndefined] Document docVal);
-    Document transformToDocument(in [Optional=DefaultIsUndefined] Node source);
+    void importStylesheet([Optional=DefaultIsUndefined] Node stylesheet);
+    DocumentFragment transformToFragment([Optional=DefaultIsUndefined] Node source, [Optional=DefaultIsUndefined] Document docVal);
+    Document transformToDocument([Optional=DefaultIsUndefined] Node source);
 
-    [Custom] void setParameter(in DOMString namespaceURI, in DOMString localName, in DOMString value);
-    [Custom, TreatReturnedNullStringAs=Undefined] DOMString getParameter(in DOMString namespaceURI, in DOMString localName);
-    [Custom] void removeParameter(in DOMString namespaceURI, in DOMString localName);
+    [Custom] void setParameter(DOMString namespaceURI, DOMString localName, DOMString value);
+    [Custom, TreatReturnedNullStringAs=Undefined] DOMString getParameter(DOMString namespaceURI, DOMString localName);
+    [Custom] void removeParameter(DOMString namespaceURI, DOMString localName);
     void clearParameters();
 
     void reset();
