Merge from Chromium at DEPS revision r213605

This commit was generated by merge_to_master.py.

Change-Id: I80f2c13996553a65d67577f7d543166697ba3675
diff --git a/Source/WebKit/chromium/WebKit.gypi b/Source/WebKit/chromium/WebKit.gypi
new file mode 100644
index 0000000..4361f1c
--- /dev/null
+++ b/Source/WebKit/chromium/WebKit.gypi
@@ -0,0 +1,128 @@
+#
+# 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.
+#
+
+{
+    'variables': {
+        'webkit_unittest_files': [
+            'tests/ArenaTestHelpers.h',
+            'tests/ChromeClientImplTest.cpp',
+            'tests/DragImageTest.cpp',
+            'tests/FakeWebPlugin.cpp',
+            'tests/FakeWebPlugin.h',
+            'tests/FilterOperationsTest.cpp',
+            'tests/FrameLoaderClientImplTest.cpp',
+            'tests/FrameTestHelpers.cpp',
+            'tests/FrameTestHelpers.h',
+            'tests/GraphicsContextTest.cpp',
+            'tests/GraphicsLayerTest.cpp',
+            'tests/IDBBindingUtilitiesTest.cpp',
+            'tests/IDBKeyPathTest.cpp',
+            'tests/IDBRequestTest.cpp',
+            'tests/IDBTransactionTest.cpp',
+            'tests/ImageFilterBuilderTest.cpp',
+            'tests/ImageLayerChromiumTest.cpp',
+            'tests/KeyboardTest.cpp',
+            'tests/LinkHighlightTest.cpp',
+            'tests/ListenerLeakTest.cpp',
+            'tests/MemoryInfo.cpp',
+            'tests/OpaqueRectTrackingContentLayerDelegateTest.cpp',
+            'tests/OpenTypeVerticalDataTest.cpp',
+            'tests/PODArenaTest.cpp',
+            'tests/PODIntervalTreeTest.cpp',
+            'tests/PODRedBlackTreeTest.cpp',
+            'tests/PaintAggregatorTest.cpp',
+            'tests/PopupContainerTest.cpp',
+            'tests/PrerenderingTest.cpp',
+            'tests/ProgrammaticScrollTest.cpp',
+            'tests/RegionTest.cpp',
+            'tests/RenderLayerBackingTest.cpp',
+            'tests/RenderTableCellTest.cpp',
+            'tests/RenderTableRowTest.cpp',
+            'tests/ScrollingCoordinatorChromiumTest.cpp',
+            'tests/TreeTestHelpers.cpp',
+            'tests/TreeTestHelpers.h',
+            'tests/URLTestHelpers.cpp',
+            'tests/URLTestHelpers.h',
+            'tests/WebFrameTest.cpp',
+            'tests/WebImageTest.cpp',
+            'tests/WebInputEventConversionTest.cpp',
+            'tests/WebInputEventFactoryTestMac.mm',
+            'tests/WebPageNewSerializerTest.cpp',
+            'tests/WebPageSerializerTest.cpp',
+            'tests/WebPluginContainerTest.cpp',
+            'tests/WebUserGestureTokenTest.cpp',
+            'tests/WebURLRequestTest.cpp',
+            'tests/WebURLResponseTest.cpp',
+            'tests/WebViewTest.cpp',
+        ],
+
+        'conditions': [
+            ['OS=="win"', {
+                'webkit_unittest_files': [
+                    'tests/LocaleWinTest.cpp',
+                    # FIXME: Port PopupMenuTest to Linux and Mac.
+                    'tests/PopupMenuTest.cpp',
+                    'tests/TransparencyWinTest.cpp',
+                    'tests/UniscribeHelperTest.cpp',
+                    'tests/WebPageNewSerializerTest.cpp',
+                    'tests/WebPageSerializerTest.cpp',
+                ],
+            }],
+            ['OS=="mac"', {
+                'webkit_unittest_files': [
+                    'tests/LocaleMacTest.cpp',
+                ],
+            }],
+            ['OS!="mac"', {
+                'webkit_unittest_files': [
+                    # Mac uses ScrollAnimatorMac instead of ScrollAnimatorNone.
+                    'tests/ScrollAnimatorNoneTest.cpp',
+                ],
+            }],
+            ['os_posix==1 and OS!="mac"', {
+                'webkit_unittest_files': [
+                    'tests/LocaleICUTest.cpp',
+                ],
+            }],
+            ['toolkit_uses_gtk == 1', {
+                'webkit_unittest_files': [
+                    'tests/KeyCodeConversionTestGtk.cpp',
+                    'tests/WebInputEventFactoryTestGtk.cpp',
+                ],
+            }],
+        ],
+    },
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/Source/WebKit/chromium/blink_common.target.darwin-arm.mk b/Source/WebKit/chromium/blink_common.target.darwin-arm.mk
index eb18e67..9bd4462 100644
--- a/Source/WebKit/chromium/blink_common.target.darwin-arm.mk
+++ b/Source/WebKit/chromium/blink_common.target.darwin-arm.mk
@@ -121,11 +121,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -253,11 +253,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/blink_common.target.darwin-mips.mk b/Source/WebKit/chromium/blink_common.target.darwin-mips.mk
index e0856d4..b3a660f 100644
--- a/Source/WebKit/chromium/blink_common.target.darwin-mips.mk
+++ b/Source/WebKit/chromium/blink_common.target.darwin-mips.mk
@@ -121,11 +121,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -253,11 +253,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/blink_common.target.darwin-x86.mk b/Source/WebKit/chromium/blink_common.target.darwin-x86.mk
index d7eb0e6..24f4966 100644
--- a/Source/WebKit/chromium/blink_common.target.darwin-x86.mk
+++ b/Source/WebKit/chromium/blink_common.target.darwin-x86.mk
@@ -123,11 +123,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -258,11 +258,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/blink_common.target.linux-arm.mk b/Source/WebKit/chromium/blink_common.target.linux-arm.mk
index eb18e67..9bd4462 100644
--- a/Source/WebKit/chromium/blink_common.target.linux-arm.mk
+++ b/Source/WebKit/chromium/blink_common.target.linux-arm.mk
@@ -121,11 +121,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -253,11 +253,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/blink_common.target.linux-mips.mk b/Source/WebKit/chromium/blink_common.target.linux-mips.mk
index e0856d4..b3a660f 100644
--- a/Source/WebKit/chromium/blink_common.target.linux-mips.mk
+++ b/Source/WebKit/chromium/blink_common.target.linux-mips.mk
@@ -121,11 +121,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -253,11 +253,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/blink_common.target.linux-x86.mk b/Source/WebKit/chromium/blink_common.target.linux-x86.mk
index d7eb0e6..24f4966 100644
--- a/Source/WebKit/chromium/blink_common.target.linux-x86.mk
+++ b/Source/WebKit/chromium/blink_common.target.linux-x86.mk
@@ -123,11 +123,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
@@ -258,11 +258,11 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(LOCAL_PATH)/third_party/skia/src/core \
diff --git a/Source/WebKit/chromium/webkit.target.darwin-arm.mk b/Source/WebKit/chromium/webkit.target.darwin-arm.mk
index 54b2e39..be99766 100644
--- a/Source/WebKit/chromium/webkit.target.darwin-arm.mk
+++ b/Source/WebKit/chromium/webkit.target.darwin-arm.mk
@@ -356,15 +356,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -505,15 +505,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/WebKit/chromium/webkit.target.darwin-mips.mk b/Source/WebKit/chromium/webkit.target.darwin-mips.mk
index 76e9b95..aed6942 100644
--- a/Source/WebKit/chromium/webkit.target.darwin-mips.mk
+++ b/Source/WebKit/chromium/webkit.target.darwin-mips.mk
@@ -355,15 +355,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,15 +503,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/WebKit/chromium/webkit.target.darwin-x86.mk b/Source/WebKit/chromium/webkit.target.darwin-x86.mk
index ec3da68..f085c85 100644
--- a/Source/WebKit/chromium/webkit.target.darwin-x86.mk
+++ b/Source/WebKit/chromium/webkit.target.darwin-x86.mk
@@ -358,15 +358,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -510,15 +510,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/WebKit/chromium/webkit.target.linux-arm.mk b/Source/WebKit/chromium/webkit.target.linux-arm.mk
index 54b2e39..be99766 100644
--- a/Source/WebKit/chromium/webkit.target.linux-arm.mk
+++ b/Source/WebKit/chromium/webkit.target.linux-arm.mk
@@ -356,15 +356,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -505,15 +505,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/WebKit/chromium/webkit.target.linux-mips.mk b/Source/WebKit/chromium/webkit.target.linux-mips.mk
index 76e9b95..aed6942 100644
--- a/Source/WebKit/chromium/webkit.target.linux-mips.mk
+++ b/Source/WebKit/chromium/webkit.target.linux-mips.mk
@@ -355,15 +355,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,15 +503,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/WebKit/chromium/webkit.target.linux-x86.mk b/Source/WebKit/chromium/webkit.target.linux-x86.mk
index ec3da68..f085c85 100644
--- a/Source/WebKit/chromium/webkit.target.linux-x86.mk
+++ b/Source/WebKit/chromium/webkit.target.linux-x86.mk
@@ -358,15 +358,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -510,15 +510,15 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/public/web \
 	$(LOCAL_PATH)/third_party/WebKit/Source/web \
 	$(LOCAL_PATH)/third_party/angle_dx11/include \
 	$(LOCAL_PATH)/third_party/skia/include/utils \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/android \
 	$(LOCAL_PATH)/third_party/WebKit/public/web/linux \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/bindings/tests/results/V8TestEventConstructor.cpp b/Source/bindings/tests/results/V8TestEventConstructor.cpp
index 3e12da4..f061c79 100644
--- a/Source/bindings/tests/results/V8TestEventConstructor.cpp
+++ b/Source/bindings/tests/results/V8TestEventConstructor.cpp
@@ -65,7 +65,7 @@
 static void attr1AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestEventConstructor* imp = V8TestEventConstructor::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->attr1(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->attr1(), info.GetIsolate());
     return;
 }
 
@@ -79,7 +79,7 @@
 static void attr2AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestEventConstructor* imp = V8TestEventConstructor::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->attr2(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->attr2(), info.GetIsolate());
     return;
 }
 
diff --git a/Source/bindings/tests/results/V8TestException.cpp b/Source/bindings/tests/results/V8TestException.cpp
index 9d7f193..8c8eaea 100644
--- a/Source/bindings/tests/results/V8TestException.cpp
+++ b/Source/bindings/tests/results/V8TestException.cpp
@@ -63,7 +63,7 @@
 static void nameAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestException* imp = V8TestException::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->name(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->name(), info.GetIsolate());
     return;
 }
 
diff --git a/Source/bindings/tests/results/V8TestInterface.cpp b/Source/bindings/tests/results/V8TestInterface.cpp
index 6164adc..bbf0fdb 100644
--- a/Source/bindings/tests/results/V8TestInterface.cpp
+++ b/Source/bindings/tests/results/V8TestInterface.cpp
@@ -95,7 +95,7 @@
 
 static void implementsStaticAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
-    v8SetReturnValueString(info, TestImplements::implementsStaticAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestImplements::implementsStaticAttr(), info.GetIsolate());
     return;
 }
 
@@ -139,7 +139,7 @@
 static void implementsStr1AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestInterface* imp = V8TestInterface::toNative(info.Holder());
-    v8SetReturnValueString(info, TestImplements::implementsStr1(imp), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestImplements::implementsStr1(imp), info.GetIsolate());
     return;
 }
 
@@ -161,7 +161,7 @@
 static void implementsStr2AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestInterface* imp = V8TestInterface::toNative(info.Holder());
-    v8SetReturnValueString(info, TestImplements::implementsStr2(imp), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestImplements::implementsStr2(imp), info.GetIsolate());
     return;
 }
 
@@ -428,7 +428,7 @@
 
 static void supplementalStaticAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
-    v8SetReturnValueString(info, TestPartialInterface::supplementalStaticAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestPartialInterface::supplementalStaticAttr(), info.GetIsolate());
     return;
 }
 
@@ -472,7 +472,7 @@
 static void supplementalStr1AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestInterface* imp = V8TestInterface::toNative(info.Holder());
-    v8SetReturnValueString(info, TestPartialInterface::supplementalStr1(imp), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestPartialInterface::supplementalStr1(imp), info.GetIsolate());
     return;
 }
 
@@ -494,7 +494,7 @@
 static void supplementalStr2AttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestInterface* imp = V8TestInterface::toNative(info.Holder());
-    v8SetReturnValueString(info, TestPartialInterface::supplementalStr2(imp), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestPartialInterface::supplementalStr2(imp), info.GetIsolate());
     return;
 }
 
diff --git a/Source/bindings/tests/results/V8TestInterfaceImplementedAs.cpp b/Source/bindings/tests/results/V8TestInterfaceImplementedAs.cpp
index cd47e05..0b0380d 100644
--- a/Source/bindings/tests/results/V8TestInterfaceImplementedAs.cpp
+++ b/Source/bindings/tests/results/V8TestInterfaceImplementedAs.cpp
@@ -66,7 +66,7 @@
 static void aAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     RealClass* imp = V8TestInterfaceImplementedAs::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->a(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->a(), info.GetIsolate());
     return;
 }
 
@@ -129,7 +129,7 @@
     }
     RealClass* imp = V8TestInterfaceImplementedAs::toNative(args.Holder());
     V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID(V8StringResource<>, a, args[0]);
-    v8SetReturnValueString(args, imp->func1(a), args.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(args, imp->func1(a), args.GetIsolate());
     return;
 }
 
@@ -148,7 +148,7 @@
     }
     RealClass* imp = V8TestInterfaceImplementedAs::toNative(args.Holder());
     V8TRYCATCH_VOID(RealClass*, orange, V8TestInterfaceImplementedAs::HasInstance(args[0], args.GetIsolate(), worldType(args.GetIsolate())) ? V8TestInterfaceImplementedAs::toNative(v8::Handle<v8::Object>::Cast(args[0])) : 0);
-    v8SetReturnValueString(args, imp->funcTestInterfaceImplementedAsParam(orange), args.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(args, imp->funcTestInterfaceImplementedAsParam(orange), args.GetIsolate());
     return;
 }
 
diff --git a/Source/bindings/tests/results/V8TestObject.cpp b/Source/bindings/tests/results/V8TestObject.cpp
index 8b61e64..4760653 100644
--- a/Source/bindings/tests/results/V8TestObject.cpp
+++ b/Source/bindings/tests/results/V8TestObject.cpp
@@ -110,7 +110,7 @@
 static void readOnlyStringAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->readOnlyStringAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->readOnlyStringAttr(), info.GetIsolate());
     return;
 }
 
@@ -157,7 +157,7 @@
 
 static void staticStringAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
-    v8SetReturnValueString(info, TestObj::staticStringAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, TestObj::staticStringAttr(), info.GetIsolate());
     return;
 }
 
@@ -185,7 +185,7 @@
 static void enumAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->enumAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->enumAttr(), info.GetIsolate());
     return;
 }
 
@@ -217,7 +217,7 @@
 static void readOnlyEnumAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->readOnlyEnumAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->readOnlyEnumAttr(), info.GetIsolate());
     return;
 }
 
@@ -434,7 +434,7 @@
 static void stringAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->stringAttr(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->stringAttr(), info.GetIsolate());
     return;
 }
 
@@ -552,7 +552,7 @@
 static void reflectedStringAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->fastGetAttribute(WebCore::HTMLNames::reflectedstringattrAttr), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->fastGetAttribute(WebCore::HTMLNames::reflectedstringattrAttr), info.GetIsolate());
     return;
 }
 
@@ -676,7 +676,7 @@
 static void reflectedURLAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr), info.GetIsolate());
     return;
 }
 
@@ -707,7 +707,7 @@
 static void reflectedStringAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->fastGetAttribute(WebCore::HTMLNames::customContentStringAttrAttr), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->fastGetAttribute(WebCore::HTMLNames::customContentStringAttrAttr), info.GetIsolate());
     return;
 }
 
@@ -800,7 +800,7 @@
 static void reflectedCustomURLAttrAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr), info.GetIsolate());
     return;
 }
 
@@ -928,7 +928,7 @@
     String v = imp->stringAttrWithGetterException(es);
     if (UNLIKELY(es.throwIfNeeded()))
         return;
-    v8SetReturnValueString(info, v, info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, v, info.GetIsolate());
     return;
 }
 
@@ -957,7 +957,7 @@
 static void stringAttrWithSetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->stringAttrWithSetterException(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->stringAttrWithSetterException(), info.GetIsolate());
     return;
 }
 
@@ -2089,7 +2089,7 @@
 static void hashAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestObj* imp = V8TestObject::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->hash(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->hash(), info.GetIsolate());
     return;
 }
 
@@ -2183,7 +2183,7 @@
         v8SetReturnValueNull(info);
         return;
     }
-    v8SetReturnValueString(info, v, info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, v, info.GetIsolate());
     return;
 }
 
@@ -3901,7 +3901,7 @@
 static void conditionalMethod1Method(const v8::FunctionCallbackInfo<v8::Value>& args)
 {
     TestObj* imp = V8TestObject::toNative(args.Holder());
-    v8SetReturnValueString(args, imp->conditionalMethod1(), args.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(args, imp->conditionalMethod1(), args.GetIsolate());
     return;
 }
 
@@ -5174,7 +5174,7 @@
     String element = collection->namedItem(propertyName);
     if (element.isNull())
         return;
-    v8SetReturnValueString(info, element, info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, element, info.GetIsolate());
 }
 
 static void namedPropertyGetterCallback(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
diff --git a/Source/bindings/tests/results/V8TestTypedefs.cpp b/Source/bindings/tests/results/V8TestTypedefs.cpp
index 4688a0f..45c2c40 100644
--- a/Source/bindings/tests/results/V8TestTypedefs.cpp
+++ b/Source/bindings/tests/results/V8TestTypedefs.cpp
@@ -198,7 +198,7 @@
     String v = imp->stringAttrWithGetterException(es);
     if (UNLIKELY(es.throwIfNeeded()))
         return;
-    v8SetReturnValueString(info, v, info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, v, info.GetIsolate());
     return;
 }
 
@@ -227,7 +227,7 @@
 static void stringAttrWithSetterExceptionAttrGetter(v8::Local<v8::String> name, const v8::PropertyCallbackInfo<v8::Value>& info)
 {
     TestTypedefs* imp = V8TestTypedefs::toNative(info.Holder());
-    v8SetReturnValueString(info, imp->stringAttrWithSetterException(), info.GetIsolate(), NullStringAsEmpty);
+    v8SetReturnValueString(info, imp->stringAttrWithSetterException(), info.GetIsolate());
     return;
 }
 
diff --git a/Source/bindings/v8/IDBBindingUtilities.cpp b/Source/bindings/v8/IDBBindingUtilities.cpp
index 59f6dc4..4cc3a4b 100644
--- a/Source/bindings/v8/IDBBindingUtilities.cpp
+++ b/Source/bindings/v8/IDBBindingUtilities.cpp
@@ -210,7 +210,7 @@
     ASSERT(error == IDBKeyPathParseErrorNone);
     ASSERT(v8::Context::InContext());
 
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(isolate);
     v8::Handle<v8::Value> v8Value(value.v8Value());
     v8::Handle<v8::Value> v8Key(getNthValueOnKeyPath(v8Value, keyPathElements, keyPathElements.size(), isolate));
     if (v8Key.IsEmpty())
@@ -226,7 +226,7 @@
 
 
     v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(isolate);
     if (keyPath.type() == IDBKeyPath::ArrayType) {
         IDBKey::KeyArray result;
         const Vector<String>& array = keyPath.array();
@@ -243,20 +243,22 @@
     return createIDBKeyFromScriptValueAndKeyPath(value, keyPath.string(), isolate);
 }
 
-ScriptValue deserializeIDBValue(DOMRequestState*, PassRefPtr<SerializedScriptValue> prpValue)
+ScriptValue deserializeIDBValue(DOMRequestState* state, PassRefPtr<SerializedScriptValue> prpValue)
 {
     ASSERT(v8::Context::InContext());
-    v8::HandleScope handleScope;
+    v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
+    v8::HandleScope handleScope(isolate);
     RefPtr<SerializedScriptValue> serializedValue = prpValue;
     if (serializedValue)
         return ScriptValue(serializedValue->deserialize());
     return ScriptValue(v8::Null());
 }
 
-ScriptValue deserializeIDBValueBuffer(DOMRequestState*, PassRefPtr<SharedBuffer> prpBuffer)
+ScriptValue deserializeIDBValueBuffer(DOMRequestState* state, PassRefPtr<SharedBuffer> prpBuffer)
 {
     ASSERT(v8::Context::InContext());
-    v8::HandleScope handleScope;
+    v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
+    v8::HandleScope handleScope(isolate);
     RefPtr<SharedBuffer> buffer = prpBuffer;
     if (buffer) {
         // FIXME: The extra copy here can be eliminated by allowing SerializedScriptValue to take a raw const char* or const uint8_t*.
@@ -283,7 +285,7 @@
         return 0;
 
     v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(isolate);
     v8::Handle<v8::Value> v8Value(value.v8Value());
     v8::Handle<v8::Value> parent(ensureNthValueOnKeyPath(v8Value, keyPathElements, keyPathElements.size() - 1, isolate));
     if (parent.IsEmpty())
@@ -314,15 +316,17 @@
 ScriptValue idbKeyToScriptValue(DOMRequestState* state, PassRefPtr<IDBKey> key)
 {
     ASSERT(v8::Context::InContext());
-    v8::HandleScope handleScope;
+    v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
+    v8::HandleScope handleScope(isolate);
     v8::Handle<v8::Value> v8Value(idbKeyToV8Value(key.get(), state->context()->GetIsolate()));
     return ScriptValue(v8Value);
 }
 
-PassRefPtr<IDBKey> scriptValueToIDBKey(DOMRequestState*, const ScriptValue& scriptValue)
+PassRefPtr<IDBKey> scriptValueToIDBKey(DOMRequestState* state, const ScriptValue& scriptValue)
 {
     ASSERT(v8::Context::InContext());
-    v8::HandleScope handleScope;
+    v8::Isolate* isolate = state ? state->context()->GetIsolate() : v8::Isolate::GetCurrent();
+    v8::HandleScope handleScope(isolate);
     v8::Handle<v8::Value> v8Value(scriptValue.v8Value());
     return createIDBKeyFromValue(v8Value);
 }
diff --git a/Source/bindings/v8/PageScriptDebugServer.cpp b/Source/bindings/v8/PageScriptDebugServer.cpp
index 1c312bd..41ebce4 100644
--- a/Source/bindings/v8/PageScriptDebugServer.cpp
+++ b/Source/bindings/v8/PageScriptDebugServer.cpp
@@ -163,7 +163,7 @@
 
 ScriptDebugListener* PageScriptDebugServer::getDebugListenerForContext(v8::Handle<v8::Context> context)
 {
-    v8::HandleScope scope;
+    v8::HandleScope scope(m_isolate);
     Frame* frame = retrieveFrameWithGlobalObjectCheck(context);
     if (!frame)
         return 0;
@@ -172,7 +172,7 @@
 
 void PageScriptDebugServer::runMessageLoopOnPause(v8::Handle<v8::Context> context)
 {
-    v8::HandleScope scope;
+    v8::HandleScope scope(m_isolate);
     Frame* frame = retrieveFrameWithGlobalObjectCheck(context);
     m_pausedPage = frame->page();
 
diff --git a/Source/bindings/v8/ScriptController.cpp b/Source/bindings/v8/ScriptController.cpp
index fcc59ba..18e21cc 100644
--- a/Source/bindings/v8/ScriptController.cpp
+++ b/Source/bindings/v8/ScriptController.cpp
@@ -346,7 +346,7 @@
 // Create a V8 object with an interceptor of NPObjectPropertyGetter.
 void ScriptController::bindToWindowObject(Frame* frame, const String& key, NPObject* object)
 {
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
 
     v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(frame);
     if (v8Context.IsEmpty())
@@ -358,14 +358,14 @@
 
     // Attach to the global object.
     v8::Handle<v8::Object> global = v8Context->Global();
-    global->Set(v8String(key, v8Context->GetIsolate()), value);
+    global->Set(v8String(key, m_isolate), value);
 }
 
 void ScriptController::enableEval()
 {
     if (!m_windowShell->isContextInitialized())
         return;
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     m_windowShell->context()->AllowCodeGenerationFromStrings(true);
 }
 
@@ -373,10 +373,10 @@
 {
     if (!m_windowShell->isContextInitialized())
         return;
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     v8::Local<v8::Context> v8Context = m_windowShell->context();
     v8Context->AllowCodeGenerationFromStrings(false);
-    v8Context->SetErrorMessageForCodeGenerationFromStrings(v8String(errorMessage, v8Context->GetIsolate()));
+    v8Context->SetErrorMessageForCodeGenerationFromStrings(v8String(errorMessage, m_isolate));
 }
 
 PassScriptInstance ScriptController::createScriptInstanceForWidget(Widget* widget)
diff --git a/Source/bindings/v8/ScriptDebugServer.cpp b/Source/bindings/v8/ScriptDebugServer.cpp
index 25e8474..7ed6fcc 100644
--- a/Source/bindings/v8/ScriptDebugServer.cpp
+++ b/Source/bindings/v8/ScriptDebugServer.cpp
@@ -139,7 +139,7 @@
 
 String ScriptDebugServer::setBreakpoint(const String& sourceID, const ScriptBreakpoint& scriptBreakpoint, int* actualLineNumber, int* actualColumnNumber, bool interstatementLocation)
 {
-    v8::HandleScope scope;
+    v8::HandleScope scope(m_isolate);
     v8::Local<v8::Context> debuggerContext = v8::Debug::GetDebugContext();
     v8::Context::Scope contextScope(debuggerContext);
 
diff --git a/Source/bindings/v8/ScriptState.cpp b/Source/bindings/v8/ScriptState.cpp
index e7195d8..516eb94 100644
--- a/Source/bindings/v8/ScriptState.cpp
+++ b/Source/bindings/v8/ScriptState.cpp
@@ -96,13 +96,13 @@
 
 bool ScriptState::evalEnabled() const
 {
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     return context()->IsCodeGenerationFromStringsAllowed();
 }
 
 void ScriptState::setEvalEnabled(bool enabled)
 {
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     return context()->AllowCodeGenerationFromStrings(enabled);
 }
 
diff --git a/Source/bindings/v8/ScriptString.cpp b/Source/bindings/v8/ScriptString.cpp
index 317c53b..b031856 100644
--- a/Source/bindings/v8/ScriptString.cpp
+++ b/Source/bindings/v8/ScriptString.cpp
@@ -35,8 +35,9 @@
 
 ScriptString ScriptString::concatenateWith(const String& string)
 {
-    v8::HandleScope handleScope;
-    v8::Handle<v8::String> b = v8String(string, v8::Isolate::GetCurrent());
+    v8::Isolate* isolate = v8::Isolate::GetCurrent();
+    v8::HandleScope handleScope(isolate);
+    v8::Handle<v8::String> b = v8String(string, isolate);
     if (hasNoValue())
         return ScriptString(b);
     v8::Handle<v8::String> a = v8::Handle<v8::String>::Cast(v8Value());
diff --git a/Source/bindings/v8/SerializedScriptValue.cpp b/Source/bindings/v8/SerializedScriptValue.cpp
index a968219..1ba1558 100644
--- a/Source/bindings/v8/SerializedScriptValue.cpp
+++ b/Source/bindings/v8/SerializedScriptValue.cpp
@@ -76,7 +76,6 @@
 #include "wtf/Uint8Array.h"
 #include "wtf/Uint8ClampedArray.h"
 #include "wtf/Vector.h"
-#include "wtf/text/StringBuffer.h"
 #include "wtf/text/StringUTF8Adaptor.h"
 
 // FIXME: consider crashing in debug mode on deserialization errors
@@ -730,7 +729,7 @@
 
     Status serialize(v8::Handle<v8::Value> value)
     {
-        v8::HandleScope scope;
+        v8::HandleScope scope(m_isolate);
         m_writer.writeVersion();
         StateBase* state = doSerialize(value, 0);
         while (state)
@@ -2251,9 +2250,9 @@
     // Decode wire data from big endian to host byte order.
     ASSERT(!(data.size() % sizeof(UChar)));
     size_t length = data.size() / sizeof(UChar);
-    StringBuffer<UChar> buffer(length);
+    Vector<UChar> buffer(length);
     const UChar* src = reinterpret_cast<const UChar*>(data.data());
-    UChar* dst = buffer.characters();
+    UChar* dst = buffer.data();
     for (size_t i = 0; i < length; i++)
         dst[i] = ntohs(src[i]);
 
diff --git a/Source/bindings/v8/V8AbstractEventListener.cpp b/Source/bindings/v8/V8AbstractEventListener.cpp
index 2384220..f1f0c8a 100644
--- a/Source/bindings/v8/V8AbstractEventListener.cpp
+++ b/Source/bindings/v8/V8AbstractEventListener.cpp
@@ -76,7 +76,7 @@
     // See issue 889829.
     RefPtr<V8AbstractEventListener> protect(this);
 
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
 
     v8::Local<v8::Context> v8Context = toV8Context(context, world());
     if (v8Context.IsEmpty())
diff --git a/Source/bindings/v8/V8GCController.cpp b/Source/bindings/v8/V8GCController.cpp
index db44b25..568ebdb 100644
--- a/Source/bindings/v8/V8GCController.cpp
+++ b/Source/bindings/v8/V8GCController.cpp
@@ -351,7 +351,7 @@
     if (isMainThread()) {
         {
             TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "MinorGC");
-            v8::HandleScope scope;
+            v8::HandleScope scope(isolate);
             MinorGCWrapperVisitor visitor(isolate);
             v8::V8::VisitHandlesForPartialDependence(isolate, &visitor);
             visitor.notifyFinished();
@@ -364,7 +364,7 @@
 // Create object groups for DOM tree nodes.
 void V8GCController::majorGCPrologue(bool constructRetainedObjectInfos, v8::Isolate* isolate)
 {
-    v8::HandleScope scope;
+    v8::HandleScope scope(isolate);
     TRACE_EVENT_BEGIN0("v8", "majorGC");
     if (isMainThread()) {
         {
@@ -403,7 +403,7 @@
 
 void V8GCController::majorGCEpilogue(v8::Isolate* isolate)
 {
-    v8::HandleScope scope;
+    v8::HandleScope scope(isolate);
 
     TRACE_EVENT_END0("v8", "majorGC");
     if (isMainThread())
diff --git a/Source/bindings/v8/V8MutationCallback.cpp b/Source/bindings/v8/V8MutationCallback.cpp
index 51bdeab..484666e 100644
--- a/Source/bindings/v8/V8MutationCallback.cpp
+++ b/Source/bindings/v8/V8MutationCallback.cpp
@@ -40,6 +40,7 @@
     : ActiveDOMCallback(context)
     , m_callback(callback)
     , m_world(DOMWrapperWorld::current())
+    , m_isolate(isolate)
 {
     owner->SetHiddenValue(V8HiddenPropertyName::callback(), callback);
     m_callback.makeWeak(this, &makeWeakCallback);
@@ -50,20 +51,19 @@
     if (!canInvokeCallback())
         return;
 
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
 
     v8::Handle<v8::Context> v8Context = toV8Context(scriptExecutionContext(), m_world.get());
     if (v8Context.IsEmpty())
         return;
 
     v8::Context::Scope scope(v8Context);
-    v8::Isolate* isolate = v8Context->GetIsolate();
 
-    v8::Handle<v8::Function> callback = m_callback.newLocal(isolate);
+    v8::Handle<v8::Function> callback = m_callback.newLocal(m_isolate);
     if (callback.IsEmpty())
         return;
 
-    v8::Handle<v8::Value> observerHandle = toV8(observer, v8::Handle<v8::Object>(), isolate);
+    v8::Handle<v8::Value> observerHandle = toV8(observer, v8::Handle<v8::Object>(), m_isolate);
     if (observerHandle.IsEmpty()) {
         if (!isScriptControllerTerminating())
             CRASH();
@@ -74,7 +74,7 @@
         return;
 
     v8::Handle<v8::Object> thisObject = v8::Handle<v8::Object>::Cast(observerHandle);
-    v8::Handle<v8::Value> argv[] = { v8Array(mutations, isolate), observerHandle };
+    v8::Handle<v8::Value> argv[] = { v8Array(mutations, m_isolate), observerHandle };
 
     v8::TryCatch exceptionCatcher;
     exceptionCatcher.SetVerbose(true);
diff --git a/Source/bindings/v8/V8MutationCallback.h b/Source/bindings/v8/V8MutationCallback.h
index 27fe4b8..1261250 100644
--- a/Source/bindings/v8/V8MutationCallback.h
+++ b/Source/bindings/v8/V8MutationCallback.h
@@ -56,6 +56,7 @@
 
     ScopedPersistent<v8::Function> m_callback;
     RefPtr<DOMWrapperWorld> m_world;
+    v8::Isolate* m_isolate;
 };
 
 }
diff --git a/Source/bindings/v8/V8PerIsolateData.cpp b/Source/bindings/v8/V8PerIsolateData.cpp
index 16d55e9..c563200 100644
--- a/Source/bindings/v8/V8PerIsolateData.cpp
+++ b/Source/bindings/v8/V8PerIsolateData.cpp
@@ -151,7 +151,7 @@
 
 void V8PerIsolateData::visitExternalStrings(ExternalStringVisitor* visitor)
 {
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     class VisitorImpl : public v8::ExternalResourceVisitor {
     public:
         VisitorImpl(ExternalStringVisitor* visitor) : m_visitor(visitor) { }
diff --git a/Source/bindings/v8/V8WindowShell.cpp b/Source/bindings/v8/V8WindowShell.cpp
index 766218e..e80cb54 100644
--- a/Source/bindings/v8/V8WindowShell.cpp
+++ b/Source/bindings/v8/V8WindowShell.cpp
@@ -509,7 +509,7 @@
     ASSERT(m_world->isMainWorld());
     if (m_context.isEmpty())
         return;
-    v8::HandleScope handleScope;
+    v8::HandleScope handleScope(m_isolate);
     setSecurityToken();
 }
 
diff --git a/Source/core/core.gypi b/Source/core/core.gypi
index 6e8312c..3907bd5 100644
--- a/Source/core/core.gypi
+++ b/Source/core/core.gypi
@@ -1106,8 +1106,8 @@
             'loader/cache/CachedResource.cpp',
             'loader/cache/CachedResourceClientWalker.h',
             'loader/cache/CachedResourceHandle.cpp',
-            'loader/cache/CachedResourceLoader.cpp',
-            'loader/cache/CachedResourceRequest.cpp',
+            'loader/cache/ResourceFetcher.cpp',
+            'loader/cache/FetchRequest.cpp',
             'loader/cache/CachedResourceInitiatorInfo.h',
             'loader/cache/CachedScript.cpp',
             'loader/cache/CachedScript.h',
diff --git a/Source/core/css/CSSCanvasValue.h b/Source/core/css/CSSCanvasValue.h
index c67015f..c2e7b77 100644
--- a/Source/core/css/CSSCanvasValue.h
+++ b/Source/core/css/CSSCanvasValue.h
@@ -45,7 +45,7 @@
     IntSize fixedSize(const RenderObject*);
 
     bool isPending() const { return false; }
-    void loadSubimages(CachedResourceLoader*) { }
+    void loadSubimages(ResourceFetcher*) { }
 
     bool equals(const CSSCanvasValue&) const;
 
diff --git a/Source/core/css/CSSCrossfadeValue.cpp b/Source/core/css/CSSCrossfadeValue.cpp
index 224ca45..34ce1c1 100644
--- a/Source/core/css/CSSCrossfadeValue.cpp
+++ b/Source/core/css/CSSCrossfadeValue.cpp
@@ -61,13 +61,13 @@
     return false;
 }
 
-static CachedImage* cachedImageForCSSValue(CSSValue* value, CachedResourceLoader* cachedResourceLoader)
+static CachedImage* cachedImageForCSSValue(CSSValue* value, ResourceFetcher* fetcher)
 {
     if (!value)
         return 0;
 
     if (value->isImageValue()) {
-        StyleCachedImage* styleCachedImage = toCSSImageValue(value)->cachedImage(cachedResourceLoader);
+        StyleCachedImage* styleCachedImage = toCSSImageValue(value)->cachedImage(fetcher);
         if (!styleCachedImage)
             return 0;
 
@@ -75,7 +75,7 @@
     }
     
     if (value->isImageGeneratorValue()) {
-        static_cast<CSSImageGeneratorValue*>(value)->loadSubimages(cachedResourceLoader);
+        static_cast<CSSImageGeneratorValue*>(value)->loadSubimages(fetcher);
         // FIXME: Handle CSSImageGeneratorValue (and thus cross-fades with gradients and canvas).
         return 0;
     }
@@ -111,9 +111,9 @@
     float percentage = m_percentageValue->getFloatValue();
     float inversePercentage = 1 - percentage;
 
-    CachedResourceLoader* cachedResourceLoader = renderer->document()->cachedResourceLoader();
-    CachedImage* cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), cachedResourceLoader);
-    CachedImage* cachedToImage = cachedImageForCSSValue(m_toValue.get(), cachedResourceLoader);
+    ResourceFetcher* fetcher = renderer->document()->fetcher();
+    CachedImage* cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), fetcher);
+    CachedImage* cachedToImage = cachedImageForCSSValue(m_toValue.get(), fetcher);
 
     if (!cachedFromImage || !cachedToImage)
         return IntSize();
@@ -140,13 +140,13 @@
     return subimageKnownToBeOpaque(m_fromValue.get(), renderer) && subimageKnownToBeOpaque(m_toValue.get(), renderer);
 }
 
-void CSSCrossfadeValue::loadSubimages(CachedResourceLoader* cachedResourceLoader)
+void CSSCrossfadeValue::loadSubimages(ResourceFetcher* fetcher)
 {
     CachedResourceHandle<CachedImage> oldCachedFromImage = m_cachedFromImage;
     CachedResourceHandle<CachedImage> oldCachedToImage = m_cachedToImage;
 
-    m_cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), cachedResourceLoader);
-    m_cachedToImage = cachedImageForCSSValue(m_toValue.get(), cachedResourceLoader);
+    m_cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), fetcher);
+    m_cachedToImage = cachedImageForCSSValue(m_toValue.get(), fetcher);
 
     if (m_cachedFromImage != oldCachedFromImage) {
         if (oldCachedFromImage)
@@ -170,9 +170,9 @@
     if (size.isEmpty())
         return 0;
 
-    CachedResourceLoader* cachedResourceLoader = renderer->document()->cachedResourceLoader();
-    CachedImage* cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), cachedResourceLoader);
-    CachedImage* cachedToImage = cachedImageForCSSValue(m_toValue.get(), cachedResourceLoader);
+    ResourceFetcher* fetcher = renderer->document()->fetcher();
+    CachedImage* cachedFromImage = cachedImageForCSSValue(m_fromValue.get(), fetcher);
+    CachedImage* cachedToImage = cachedImageForCSSValue(m_toValue.get(), fetcher);
 
     if (!cachedFromImage || !cachedToImage)
         return Image::nullImage();
diff --git a/Source/core/css/CSSCrossfadeValue.h b/Source/core/css/CSSCrossfadeValue.h
index 724e639..a09faf3 100644
--- a/Source/core/css/CSSCrossfadeValue.h
+++ b/Source/core/css/CSSCrossfadeValue.h
@@ -59,7 +59,7 @@
     bool isPending() const;
     bool knownToBeOpaque(const RenderObject*) const;
 
-    void loadSubimages(CachedResourceLoader*);
+    void loadSubimages(ResourceFetcher*);
 
     void setPercentage(PassRefPtr<CSSPrimitiveValue> percentageValue) { m_percentageValue = percentageValue; }
 
diff --git a/Source/core/css/CSSCursorImageValue.cpp b/Source/core/css/CSSCursorImageValue.cpp
index fa653e3..54d4f2a 100644
--- a/Source/core/css/CSSCursorImageValue.cpp
+++ b/Source/core/css/CSSCursorImageValue.cpp
@@ -26,7 +26,7 @@
 #include "core/css/CSSImageSetValue.h"
 #include "core/css/CSSImageValue.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/rendering/style/StyleCachedImage.h"
 #include "core/rendering/style/StyleCachedImageSet.h"
 #include "core/rendering/style/StyleImage.h"
@@ -119,7 +119,7 @@
     return false;
 }
 
-StyleImage* CSSCursorImageValue::cachedImage(CachedResourceLoader* loader, float deviceScaleFactor)
+StyleImage* CSSCursorImageValue::cachedImage(ResourceFetcher* loader, float deviceScaleFactor)
 {
     if (m_imageValue->isImageSetValue())
         return static_cast<CSSImageSetValue*>(m_imageValue.get())->cachedImageSet(loader, deviceScaleFactor);
diff --git a/Source/core/css/CSSCursorImageValue.h b/Source/core/css/CSSCursorImageValue.h
index 1f05c47..a1ee588 100644
--- a/Source/core/css/CSSCursorImageValue.h
+++ b/Source/core/css/CSSCursorImageValue.h
@@ -51,7 +51,7 @@
     String customCssText() const;
 
     bool updateIfSVGCursorIsUsed(Element*);
-    StyleImage* cachedImage(CachedResourceLoader*, float deviceScaleFactor);
+    StyleImage* cachedImage(ResourceFetcher*, float deviceScaleFactor);
     StyleImage* cachedOrPendingImage(float deviceScaleFactor);
 
     void removeReferencedElement(SVGElement*);
diff --git a/Source/core/css/CSSFontFaceSrcValue.cpp b/Source/core/css/CSSFontFaceSrcValue.cpp
index fcac127..92265e5 100644
--- a/Source/core/css/CSSFontFaceSrcValue.cpp
+++ b/Source/core/css/CSSFontFaceSrcValue.cpp
@@ -31,8 +31,8 @@
 #include "core/dom/Document.h"
 #include "core/dom/Node.h"
 #include "core/loader/cache/CachedFont.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/graphics/FontCustomPlatformData.h"
 #include "core/svg/SVGFontFaceElement.h"
 #include "wtf/text/StringBuilder.h"
@@ -97,8 +97,8 @@
 CachedFont* CSSFontFaceSrcValue::cachedFont(Document* document)
 {
     if (!m_cachedFont) {
-        CachedResourceRequest request(ResourceRequest(document->completeURL(m_resource)), CachedResourceInitiatorTypeNames::css);
-        m_cachedFont = document->cachedResourceLoader()->requestFont(request);
+        FetchRequest request(ResourceRequest(document->completeURL(m_resource)), CachedResourceInitiatorTypeNames::css);
+        m_cachedFont = document->fetcher()->requestFont(request);
     }
     return m_cachedFont.get();
 }
diff --git a/Source/core/css/CSSFontSelector.cpp b/Source/core/css/CSSFontSelector.cpp
index e8e9c4f..c5f5a08 100644
--- a/Source/core/css/CSSFontSelector.cpp
+++ b/Source/core/css/CSSFontSelector.cpp
@@ -45,7 +45,7 @@
 #include "core/dom/Document.h"
 #include "core/loader/FrameLoader.h"
 #include "core/loader/cache/CachedFont.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/Settings.h"
 #include "core/platform/graphics/FontCache.h"
@@ -558,10 +558,10 @@
 
     m_beginLoadingTimer.stop();
 
-    CachedResourceLoader* cachedResourceLoader = m_document->cachedResourceLoader();
+    ResourceFetcher* fetcher = m_document->fetcher();
     for (size_t i = 0; i < m_fontsToBeginLoading.size(); ++i) {
         // Balances incrementRequestCount() in beginLoadingFontSoon().
-        cachedResourceLoader->decrementRequestCount(m_fontsToBeginLoading[i].get());
+        fetcher->decrementRequestCount(m_fontsToBeginLoading[i].get());
     }
 
     m_fontsToBeginLoading.clear();
@@ -578,7 +578,7 @@
     // Increment the request count now, in order to prevent didFinishLoad from being dispatched
     // after this font has been requested but before it began loading. Balanced by
     // decrementRequestCount() in beginLoadTimerFired() and in clearDocument().
-    m_document->cachedResourceLoader()->incrementRequestCount(font);
+    m_document->fetcher()->incrementRequestCount(font);
     m_beginLoadingTimer.startOneShot(0);
 }
 
@@ -590,14 +590,14 @@
     // CSSFontSelector could get deleted via beginLoadIfNeeded() or loadDone() unless protected.
     RefPtr<CSSFontSelector> protect(this);
 
-    CachedResourceLoader* cachedResourceLoader = m_document->cachedResourceLoader();
+    ResourceFetcher* fetcher = m_document->fetcher();
     for (size_t i = 0; i < fontsToBeginLoading.size(); ++i) {
-        fontsToBeginLoading[i]->beginLoadIfNeeded(cachedResourceLoader);
+        fontsToBeginLoading[i]->beginLoadIfNeeded(fetcher);
         // Balances incrementRequestCount() in beginLoadingFontSoon().
-        cachedResourceLoader->decrementRequestCount(fontsToBeginLoading[i].get());
+        fetcher->decrementRequestCount(fontsToBeginLoading[i].get());
     }
     // Ensure that if the request count reaches zero, the frame loader will know about it.
-    cachedResourceLoader->didLoadResource(0);
+    fetcher->didLoadResource(0);
     // New font loads may be triggered by layout after the document load is complete but before we have dispatched
     // didFinishLoading for the frame. Make sure the delegate is always dispatched by checking explicitly.
     if (m_document && m_document->frame())
diff --git a/Source/core/css/CSSGradientValue.h b/Source/core/css/CSSGradientValue.h
index eaefe65..5c3c631 100644
--- a/Source/core/css/CSSGradientValue.h
+++ b/Source/core/css/CSSGradientValue.h
@@ -89,7 +89,7 @@
     bool isPending() const { return false; }
     bool knownToBeOpaque(const RenderObject*) const;
 
-    void loadSubimages(CachedResourceLoader*) { }
+    void loadSubimages(ResourceFetcher*) { }
     PassRefPtr<CSSGradientValue> gradientWithStylesResolved(const TextLinkColors&);
 
 protected:
diff --git a/Source/core/css/CSSImageGeneratorValue.cpp b/Source/core/css/CSSImageGeneratorValue.cpp
index a372595..472c6ee 100644
--- a/Source/core/css/CSSImageGeneratorValue.cpp
+++ b/Source/core/css/CSSImageGeneratorValue.cpp
@@ -191,20 +191,20 @@
     return false;
 }
 
-void CSSImageGeneratorValue::loadSubimages(CachedResourceLoader* cachedResourceLoader)
+void CSSImageGeneratorValue::loadSubimages(ResourceFetcher* fetcher)
 {
     switch (classType()) {
     case CrossfadeClass:
-        static_cast<CSSCrossfadeValue*>(this)->loadSubimages(cachedResourceLoader);
+        static_cast<CSSCrossfadeValue*>(this)->loadSubimages(fetcher);
         break;
     case CanvasClass:
-        static_cast<CSSCanvasValue*>(this)->loadSubimages(cachedResourceLoader);
+        static_cast<CSSCanvasValue*>(this)->loadSubimages(fetcher);
         break;
     case LinearGradientClass:
-        static_cast<CSSLinearGradientValue*>(this)->loadSubimages(cachedResourceLoader);
+        static_cast<CSSLinearGradientValue*>(this)->loadSubimages(fetcher);
         break;
     case RadialGradientClass:
-        static_cast<CSSRadialGradientValue*>(this)->loadSubimages(cachedResourceLoader);
+        static_cast<CSSRadialGradientValue*>(this)->loadSubimages(fetcher);
         break;
     default:
         ASSERT_NOT_REACHED();
diff --git a/Source/core/css/CSSImageGeneratorValue.h b/Source/core/css/CSSImageGeneratorValue.h
index 13676cd..8a16024 100644
--- a/Source/core/css/CSSImageGeneratorValue.h
+++ b/Source/core/css/CSSImageGeneratorValue.h
@@ -33,7 +33,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 class Image;
 class RenderObject;
 class StyleResolver;
@@ -65,7 +65,7 @@
     bool isPending() const;
     bool knownToBeOpaque(const RenderObject*) const;
 
-    void loadSubimages(CachedResourceLoader*);
+    void loadSubimages(ResourceFetcher*);
 
 protected:
     CSSImageGeneratorValue(ClassType);
diff --git a/Source/core/css/CSSImageSetValue.cpp b/Source/core/css/CSSImageSetValue.cpp
index f3f035a..c539e30 100644
--- a/Source/core/css/CSSImageSetValue.cpp
+++ b/Source/core/css/CSSImageSetValue.cpp
@@ -31,8 +31,8 @@
 #include "core/css/CSSPrimitiveValue.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/rendering/style/StyleCachedImageSet.h"
 #include "core/rendering/style/StylePendingImage.h"
 #include "wtf/text/StringBuilder.h"
@@ -88,7 +88,7 @@
     return image;
 }
 
-StyleCachedImageSet* CSSImageSetValue::cachedImageSet(CachedResourceLoader* loader, float deviceScaleFactor)
+StyleCachedImageSet* CSSImageSetValue::cachedImageSet(ResourceFetcher* loader, float deviceScaleFactor)
 {
     ASSERT(loader);
 
@@ -103,7 +103,7 @@
         // and any CSS transforms. https://bugs.webkit.org/show_bug.cgi?id=81698
         ImageWithScale image = bestImageForScaleFactor();
         if (Document* document = loader->document()) {
-            CachedResourceRequest request(ResourceRequest(document->completeURL(image.imageURL)), CachedResourceInitiatorTypeNames::css);
+            FetchRequest request(ResourceRequest(document->completeURL(image.imageURL)), CachedResourceInitiatorTypeNames::css);
             if (CachedResourceHandle<CachedImage> cachedImage = loader->requestImage(request)) {
                 m_imageSet = StyleCachedImageSet::create(cachedImage.get(), image.scaleFactor, this);
                 m_accessedBestFitImage = true;
diff --git a/Source/core/css/CSSImageSetValue.h b/Source/core/css/CSSImageSetValue.h
index 45b96b9..db030aa 100644
--- a/Source/core/css/CSSImageSetValue.h
+++ b/Source/core/css/CSSImageSetValue.h
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 class StyleCachedImageSet;
 class StyleImage;
 
@@ -43,7 +43,7 @@
     }
     ~CSSImageSetValue();
 
-    StyleCachedImageSet* cachedImageSet(CachedResourceLoader*, float deviceScaleFactor);
+    StyleCachedImageSet* cachedImageSet(ResourceFetcher*, float deviceScaleFactor);
 
     // Returns a StyleCachedImageSet if the best fit image has been cached already, otherwise a StylePendingImage.
     StyleImage* cachedOrPendingImageSet(float);
diff --git a/Source/core/css/CSSImageValue.cpp b/Source/core/css/CSSImageValue.cpp
index 00ed6f5..15e8320 100644
--- a/Source/core/css/CSSImageValue.cpp
+++ b/Source/core/css/CSSImageValue.cpp
@@ -25,8 +25,8 @@
 #include "core/css/CSSParser.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/rendering/style/StyleCachedImage.h"
 #include "core/rendering/style/StylePendingImage.h"
 
@@ -59,14 +59,14 @@
     return m_image.get();
 }
 
-StyleCachedImage* CSSImageValue::cachedImage(CachedResourceLoader* loader, const ResourceLoaderOptions& options)
+StyleCachedImage* CSSImageValue::cachedImage(ResourceFetcher* loader, const ResourceLoaderOptions& options)
 {
     ASSERT(loader);
 
     if (!m_accessedImage) {
         m_accessedImage = true;
 
-        CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(m_url)), m_initiatorName.isEmpty() ? CachedResourceInitiatorTypeNames::css : m_initiatorName, options);
+        FetchRequest request(ResourceRequest(loader->document()->completeURL(m_url)), m_initiatorName.isEmpty() ? CachedResourceInitiatorTypeNames::css : m_initiatorName, options);
         if (CachedResourceHandle<CachedImage> cachedImage = loader->requestImage(request))
             m_image = StyleCachedImage::create(cachedImage.get());
     }
diff --git a/Source/core/css/CSSImageValue.h b/Source/core/css/CSSImageValue.h
index a9a995a..cefba13 100644
--- a/Source/core/css/CSSImageValue.h
+++ b/Source/core/css/CSSImageValue.h
@@ -22,7 +22,7 @@
 #define CSSImageValue_h
 
 #include "core/css/CSSValue.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "wtf/RefPtr.h"
 
 namespace WebCore {
@@ -38,8 +38,8 @@
     static PassRefPtr<CSSImageValue> create(const String& url, StyleImage* image) { return adoptRef(new CSSImageValue(url, image)); }
     ~CSSImageValue();
 
-    StyleCachedImage* cachedImage(CachedResourceLoader*, const ResourceLoaderOptions&);
-    StyleCachedImage* cachedImage(CachedResourceLoader* loader) { return cachedImage(loader, CachedResourceLoader::defaultCachedResourceOptions()); }
+    StyleCachedImage* cachedImage(ResourceFetcher*, const ResourceLoaderOptions&);
+    StyleCachedImage* cachedImage(ResourceFetcher* loader) { return cachedImage(loader, ResourceFetcher::defaultCachedResourceOptions()); }
     // Returns a StyleCachedImage if the image is cached already, otherwise a StylePendingImage.
     StyleImage* cachedOrPendingImage();
 
diff --git a/Source/core/css/CSSPrimitiveValue.cpp b/Source/core/css/CSSPrimitiveValue.cpp
index 602430b..d7945af 100644
--- a/Source/core/css/CSSPrimitiveValue.cpp
+++ b/Source/core/css/CSSPrimitiveValue.cpp
@@ -1025,21 +1025,21 @@
                 Color::parseHexColor(m_value.string, rgbColor);
             Color color(rgbColor);
 
-            StringBuilder result;
-            result.reserveCapacity(32);
+            Vector<LChar> result;
+            result.reserveInitialCapacity(32);
             bool colorHasAlpha = color.hasAlpha();
             if (colorHasAlpha)
                 result.append("rgba(", 5);
             else
                 result.append("rgb(", 4);
 
-            result.appendNumber(static_cast<unsigned char>(color.red()));
+            appendNumber(result, static_cast<unsigned char>(color.red()));
             result.append(", ", 2);
 
-            result.appendNumber(static_cast<unsigned char>(color.green()));
+            appendNumber(result, static_cast<unsigned char>(color.green()));
             result.append(", ", 2);
 
-            result.appendNumber(static_cast<unsigned char>(color.blue()));
+            appendNumber(result, static_cast<unsigned char>(color.blue()));
             if (colorHasAlpha) {
                 result.append(", ", 2);
 
@@ -1049,7 +1049,7 @@
             }
 
             result.append(')');
-            text = result.toString();
+            text = String::adopt(result);
             break;
         }
         case CSS_PAIR:
diff --git a/Source/core/css/CSSSVGDocumentValue.cpp b/Source/core/css/CSSSVGDocumentValue.cpp
index 09143c1..17c37c2 100644
--- a/Source/core/css/CSSSVGDocumentValue.cpp
+++ b/Source/core/css/CSSSVGDocumentValue.cpp
@@ -30,8 +30,8 @@
 #include "core/css/CSSParser.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedDocument.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 
 namespace WebCore {
 
@@ -46,14 +46,14 @@
 {
 }
 
-CachedDocument* CSSSVGDocumentValue::load(CachedResourceLoader* loader)
+CachedDocument* CSSSVGDocumentValue::load(ResourceFetcher* loader)
 {
     ASSERT(loader);
 
     if (!m_loadRequested) {
         m_loadRequested = true;
 
-        CachedResourceRequest request(ResourceRequest(loader->document()->completeURL(m_url)), CachedResourceInitiatorTypeNames::css);
+        FetchRequest request(ResourceRequest(loader->document()->completeURL(m_url)), CachedResourceInitiatorTypeNames::css);
         m_document = loader->requestSVGDocument(request);
     }
 
diff --git a/Source/core/css/CSSSVGDocumentValue.h b/Source/core/css/CSSSVGDocumentValue.h
index 479c2ce..f82d952 100644
--- a/Source/core/css/CSSSVGDocumentValue.h
+++ b/Source/core/css/CSSSVGDocumentValue.h
@@ -31,7 +31,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 
 class CSSSVGDocumentValue : public CSSValue {
 public:
@@ -39,7 +39,7 @@
     ~CSSSVGDocumentValue();
 
     CachedDocument* cachedSVGDocument() const { return m_document.get(); }
-    CachedDocument* load(CachedResourceLoader*);
+    CachedDocument* load(ResourceFetcher*);
 
     String customCssText() const;
     const String& url() const { return m_url; }
diff --git a/Source/core/css/CSSShaderValue.cpp b/Source/core/css/CSSShaderValue.cpp
index bea49b6..6d02ec0 100644
--- a/Source/core/css/CSSShaderValue.cpp
+++ b/Source/core/css/CSSShaderValue.cpp
@@ -34,8 +34,8 @@
 #include "CachedResourceInitiatorTypeNames.h"
 #include "core/css/CSSParser.h"
 #include "core/dom/Document.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/rendering/style/StyleCachedShader.h"
 #include "core/rendering/style/StylePendingShader.h"
 #include "wtf/text/StringBuilder.h"
@@ -53,19 +53,19 @@
 {
 }
 
-KURL CSSShaderValue::completeURL(CachedResourceLoader* loader) const
+KURL CSSShaderValue::completeURL(ResourceFetcher* loader) const
 {
     return loader->document()->completeURL(m_url);
 }
 
-StyleCachedShader* CSSShaderValue::cachedShader(CachedResourceLoader* loader)
+StyleCachedShader* CSSShaderValue::cachedShader(ResourceFetcher* loader)
 {
     ASSERT(loader);
 
     if (!m_accessedShader) {
         m_accessedShader = true;
 
-        CachedResourceRequest request(ResourceRequest(completeURL(loader)), CachedResourceInitiatorTypeNames::css);
+        FetchRequest request(ResourceRequest(completeURL(loader)), CachedResourceInitiatorTypeNames::css);
         if (CachedResourceHandle<CachedShader> cachedShader = loader->requestShader(request))
             m_shader = StyleCachedShader::create(cachedShader.get());
     }
diff --git a/Source/core/css/CSSShaderValue.h b/Source/core/css/CSSShaderValue.h
index 5586447..ac4e088 100644
--- a/Source/core/css/CSSShaderValue.h
+++ b/Source/core/css/CSSShaderValue.h
@@ -34,7 +34,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 class KURL;
 class StyleCachedShader;
 class StyleShader;
@@ -47,8 +47,8 @@
     const String& format() const { return m_format; }
     void setFormat(const String& format) { m_format = format; }
 
-    KURL completeURL(CachedResourceLoader*) const;
-    StyleCachedShader* cachedShader(CachedResourceLoader*);
+    KURL completeURL(ResourceFetcher*) const;
+    StyleCachedShader* cachedShader(ResourceFetcher*);
     StyleShader* cachedOrPendingShader();
 
     String customCssText() const;
diff --git a/Source/core/css/StyleRuleImport.cpp b/Source/core/css/StyleRuleImport.cpp
index c0b111d..2e2c7b5 100644
--- a/Source/core/css/StyleRuleImport.cpp
+++ b/Source/core/css/StyleRuleImport.cpp
@@ -26,8 +26,8 @@
 #include "core/css/StyleSheetContents.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedCSSStyleSheet.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 
 namespace WebCore {
 
@@ -93,8 +93,8 @@
     if (!document)
         return;
 
-    CachedResourceLoader* cachedResourceLoader = document->cachedResourceLoader();
-    if (!cachedResourceLoader)
+    ResourceFetcher* fetcher = document->fetcher();
+    if (!fetcher)
         return;
 
     KURL absURL;
@@ -114,11 +114,11 @@
         rootSheet = sheet;
     }
 
-    CachedResourceRequest request(ResourceRequest(absURL), CachedResourceInitiatorTypeNames::css, m_parentStyleSheet->charset());
+    FetchRequest request(ResourceRequest(absURL), CachedResourceInitiatorTypeNames::css, m_parentStyleSheet->charset());
     if (m_parentStyleSheet->isUserStyleSheet())
-        m_cachedSheet = cachedResourceLoader->requestUserCSSStyleSheet(request);
+        m_cachedSheet = fetcher->requestUserCSSStyleSheet(request);
     else
-        m_cachedSheet = cachedResourceLoader->requestCSSStyleSheet(request);
+        m_cachedSheet = fetcher->requestCSSStyleSheet(request);
     if (m_cachedSheet) {
         // if the import rule is issued dynamically, the sheet may be
         // removed from the pending sheet count, so let the doc know
diff --git a/Source/core/css/resolver/FilterOperationResolver.cpp b/Source/core/css/resolver/FilterOperationResolver.cpp
index 5a80c3e..c75886a 100644
--- a/Source/core/css/resolver/FilterOperationResolver.cpp
+++ b/Source/core/css/resolver/FilterOperationResolver.cpp
@@ -234,9 +234,9 @@
     CustomFilterProgramType programType, const CustomFilterProgramMixSettings& mixSettings, CustomFilterMeshType meshType,
     StyleCustomFilterProgramCache* customFilterProgramCache, StyleResolverState& state)
 {
-    CachedResourceLoader* cachedResourceLoader = state.document()->cachedResourceLoader();
-    KURL vertexShaderURL = vertexShader ? vertexShader->completeURL(cachedResourceLoader) : KURL();
-    KURL fragmentShaderURL = fragmentShader ? fragmentShader->completeURL(cachedResourceLoader) : KURL();
+    ResourceFetcher* fetcher = state.document()->fetcher();
+    KURL vertexShaderURL = vertexShader ? vertexShader->completeURL(fetcher) : KURL();
+    KURL fragmentShaderURL = fragmentShader ? fragmentShader->completeURL(fetcher) : KURL();
     RefPtr<StyleCustomFilterProgram> program;
     if (customFilterProgramCache)
         program = customFilterProgramCache->lookup(CustomFilterProgramInfo(vertexShaderURL.string(), fragmentShaderURL.string(), programType, mixSettings, meshType));
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
index d72f3c0..3379f5a 100644
--- a/Source/core/css/resolver/StyleResolver.cpp
+++ b/Source/core/css/resolver/StyleResolver.cpp
@@ -106,7 +106,7 @@
     , m_matchAuthorAndUserStyles(matchAuthorAndUserStyles)
     , m_fontSelector(CSSFontSelector::create(document))
     , m_viewportStyleResolver(ViewportStyleResolver::create(document))
-    , m_styleResourceLoader(document->cachedResourceLoader())
+    , m_styleResourceLoader(document->fetcher())
 {
     Element* root = document->documentElement();
 
@@ -908,10 +908,11 @@
 {
     ASSERT(textNode);
 
-    NodeRenderingContext context(textNode);
-    Node* parentNode = context.parentNodeForRenderingAndStyle();
-    return context.resetStyleInheritance() || !parentNode || !parentNode->renderStyle() ?
-        defaultStyleForElement() : parentNode->renderStyle();
+    NodeRenderingTraversal::ParentDetails parentDetails;
+    Node* parentNode = NodeRenderingTraversal::parent(textNode, &parentDetails);
+    if (!parentNode || !parentNode->renderStyle() || parentDetails.resetStyleInheritance())
+        return defaultStyleForElement();
+    return parentNode->renderStyle();
 }
 
 bool StyleResolver::checkRegionStyle(Element* regionElement)
diff --git a/Source/core/css/resolver/StyleResolverState.cpp b/Source/core/css/resolver/StyleResolverState.cpp
index 19f3029..1fc3b72 100644
--- a/Source/core/css/resolver/StyleResolverState.cpp
+++ b/Source/core/css/resolver/StyleResolverState.cpp
@@ -25,7 +25,7 @@
 #include "core/dom/Element.h"
 #include "core/dom/Node.h"
 #include "core/dom/NodeRenderStyle.h"
-#include "core/dom/NodeRenderingContext.h"
+#include "core/dom/NodeRenderingTraversal.h"
 #include "core/dom/VisitedLinkState.h"
 #include "core/page/Page.h"
 
@@ -37,10 +37,10 @@
     , m_distributedToInsertionPoint(false)
     , m_resetStyleInheritance(false)
 {
-    NodeRenderingContext context(element);
-    m_parentNode = context.parentNodeForRenderingAndStyle();
-    m_distributedToInsertionPoint = context.insertionPoint();
-    m_resetStyleInheritance = context.resetStyleInheritance();
+    NodeRenderingTraversal::ParentDetails parentDetails;
+    m_parentNode = NodeRenderingTraversal::parent(element, &parentDetails);
+    m_distributedToInsertionPoint = parentDetails.insertionPoint();
+    m_resetStyleInheritance = parentDetails.resetStyleInheritance();
 
     Node* documentElement = document()->documentElement();
     RenderStyle* documentStyle = document()->renderStyle();
diff --git a/Source/core/css/resolver/StyleResourceLoader.cpp b/Source/core/css/resolver/StyleResourceLoader.cpp
index dabbbbc..64e279b 100644
--- a/Source/core/css/resolver/StyleResourceLoader.cpp
+++ b/Source/core/css/resolver/StyleResourceLoader.cpp
@@ -29,7 +29,7 @@
 #include "core/css/CSSSVGDocumentValue.h"
 #include "core/css/CSSShaderValue.h"
 #include "core/css/resolver/ElementStyleResources.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/graphics/filters/custom/CustomFilterOperation.h"
 #include "core/rendering/style/ContentData.h"
 #include "core/rendering/style/CursorList.h"
@@ -46,8 +46,8 @@
 
 namespace WebCore {
 
-StyleResourceLoader::StyleResourceLoader(CachedResourceLoader* cachedResourceLoader)
-    : m_cachedResourceLoader(cachedResourceLoader)
+StyleResourceLoader::StyleResourceLoader(ResourceFetcher* fetcher)
+    : m_fetcher(fetcher)
     , m_customFilterProgramCache(StyleCustomFilterProgramCache::create())
 {
 }
@@ -66,7 +66,7 @@
             CSSSVGDocumentValue* value = elementStyleResources.pendingSVGDocuments().get(referenceFilter);
             if (!value)
                 continue;
-            CachedDocument* cachedDocument = value->load(m_cachedResourceLoader);
+            CachedDocument* cachedDocument = value->load(m_fetcher);
             if (!cachedDocument)
                 continue;
 
@@ -80,23 +80,23 @@
 {
     if (pendingImage->cssImageValue()) {
         CSSImageValue* imageValue = pendingImage->cssImageValue();
-        return imageValue->cachedImage(m_cachedResourceLoader);
+        return imageValue->cachedImage(m_fetcher);
     }
 
     if (pendingImage->cssImageGeneratorValue()) {
         CSSImageGeneratorValue* imageGeneratorValue = pendingImage->cssImageGeneratorValue();
-        imageGeneratorValue->loadSubimages(m_cachedResourceLoader);
+        imageGeneratorValue->loadSubimages(m_fetcher);
         return StyleGeneratedImage::create(imageGeneratorValue);
     }
 
     if (pendingImage->cssCursorImageValue()) {
         CSSCursorImageValue* cursorImageValue = pendingImage->cssCursorImageValue();
-        return cursorImageValue->cachedImage(m_cachedResourceLoader, deviceScaleFactor);
+        return cursorImageValue->cachedImage(m_fetcher, deviceScaleFactor);
     }
 
     if (pendingImage->cssImageSetValue()) {
         CSSImageSetValue* imageSetValue = pendingImage->cssImageSetValue();
-        return imageSetValue->cachedImageSet(m_cachedResourceLoader, deviceScaleFactor);
+        return imageSetValue->cachedImageSet(m_fetcher, deviceScaleFactor);
     }
 
     return 0;
@@ -114,10 +114,10 @@
     StylePendingImage* pendingImage = static_cast<StylePendingImage*>(image);
     CSSImageValue* cssImageValue =  pendingImage->cssImageValue();
 
-    ResourceLoaderOptions options = CachedResourceLoader::defaultCachedResourceOptions();
+    ResourceLoaderOptions options = ResourceFetcher::defaultCachedResourceOptions();
     options.requestOriginPolicy = RestrictToSameOrigin;
 
-    shapeValue->setImage(cssImageValue->cachedImage(m_cachedResourceLoader, options));
+    shapeValue->setImage(cssImageValue->cachedImage(m_fetcher, options));
 }
 
 void StyleResourceLoader::loadPendingImages(RenderStyle* style, const ElementStyleResources& elementStyleResources)
@@ -229,11 +229,11 @@
             } else {
                 if (program->vertexShader() && program->vertexShader()->isPendingShader()) {
                     CSSShaderValue* shaderValue = static_cast<StylePendingShader*>(program->vertexShader())->cssShaderValue();
-                    program->setVertexShader(shaderValue->cachedShader(m_cachedResourceLoader));
+                    program->setVertexShader(shaderValue->cachedShader(m_fetcher));
                 }
                 if (program->fragmentShader() && program->fragmentShader()->isPendingShader()) {
                     CSSShaderValue* shaderValue = static_cast<StylePendingShader*>(program->fragmentShader())->cssShaderValue();
-                    program->setFragmentShader(shaderValue->cachedShader(m_cachedResourceLoader));
+                    program->setFragmentShader(shaderValue->cachedShader(m_fetcher));
                 }
                 m_customFilterProgramCache->add(program);
             }
diff --git a/Source/core/css/resolver/StyleResourceLoader.h b/Source/core/css/resolver/StyleResourceLoader.h
index 0bf75d0..4b33efe 100644
--- a/Source/core/css/resolver/StyleResourceLoader.h
+++ b/Source/core/css/resolver/StyleResourceLoader.h
@@ -29,7 +29,7 @@
 namespace WebCore {
 
 class ElementStyleResources;
-class CachedResourceLoader;
+class ResourceFetcher;
 class RenderStyle;
 class ShapeValue;
 class StyleImage;
@@ -38,12 +38,12 @@
 
 // Manages loading of resources, requested by the stylesheets.
 // Expects the same lifetime as StyleResolver, because:
-// 1) it expects CachedResourceLoader to never change, and
+// 1) it expects ResourceFetcher to never change, and
 // 2) it also holds the StyleCustomFilterProgramCache.
 class StyleResourceLoader {
 WTF_MAKE_NONCOPYABLE(StyleResourceLoader);
 public:
-    explicit StyleResourceLoader(CachedResourceLoader*);
+    explicit StyleResourceLoader(ResourceFetcher*);
 
     void loadPendingResources(RenderStyle*, ElementStyleResources&);
     StyleCustomFilterProgramCache* customFilterProgramCache() const { return m_customFilterProgramCache.get(); }
@@ -57,7 +57,7 @@
     void loadPendingShapeImage(RenderStyle*, ShapeValue*);
 
     OwnPtr<StyleCustomFilterProgramCache> m_customFilterProgramCache;
-    CachedResourceLoader* m_cachedResourceLoader;
+    ResourceFetcher* m_fetcher;
 };
 
 } // namespace WebCore
diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
index 42aaace..8f69070 100644
--- a/Source/core/dom/Document.cpp
+++ b/Source/core/dom/Document.cpp
@@ -124,7 +124,7 @@
 #include "core/loader/ImageLoader.h"
 #include "core/loader/Prerenderer.h"
 #include "core/loader/TextResourceDecoder.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/ChromeClient.h"
 #include "core/page/ContentSecurityPolicy.h"
@@ -453,12 +453,12 @@
     if (m_frame) {
         provideContextFeaturesToDocumentFrom(this, m_frame->page());
 
-        m_cachedResourceLoader = m_frame->loader()->activeDocumentLoader()->cachedResourceLoader();
+        m_fetcher = m_frame->loader()->activeDocumentLoader()->fetcher();
     }
 
-    if (!m_cachedResourceLoader)
-        m_cachedResourceLoader = CachedResourceLoader::create(0);
-    m_cachedResourceLoader->setDocument(this);
+    if (!m_fetcher)
+        m_fetcher = ResourceFetcher::create(0);
+    m_fetcher->setDocument(this);
 
     // We depend on the url getting immediately set in subframes, but we
     // also depend on the url NOT getting immediately set in opened windows.
@@ -554,13 +554,13 @@
     if (m_elemSheet)
         m_elemSheet->clearOwnerNode();
 
-    clearStyleResolver(); // We need to destory CSSFontSelector before destroying m_cachedResourceLoader.
+    clearStyleResolver(); // We need to destory CSSFontSelector before destroying m_fetcher.
 
-    // It's possible for multiple Documents to end up referencing the same CachedResourceLoader (e.g., SVGImages
+    // It's possible for multiple Documents to end up referencing the same ResourceFetcher (e.g., SVGImages
     // load the initial empty document and the SVGDocument with the same DocumentLoader).
-    if (m_cachedResourceLoader->document() == this)
-        m_cachedResourceLoader->setDocument(0);
-    m_cachedResourceLoader.clear();
+    if (m_fetcher->document() == this)
+        m_fetcher->setDocument(0);
+    m_fetcher.clear();
 
     // We must call clearRareData() here since a Document class inherits TreeScope
     // as well as Node. See a comment on TreeScope.h for the reason.
@@ -3082,11 +3082,12 @@
     if (!m_hoverNode)
         return;
 
-    NodeRenderingTraversal::ParentDetails details;
-    if (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != NodeRenderingTraversal::parent(m_hoverNode.get(), &details)))
+    if (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != NodeRenderingTraversal::parent(m_hoverNode.get())))
         return;
 
-    for (m_hoverNode = NodeRenderingTraversal::parent(node, &details); m_hoverNode && !m_hoverNode->renderer(); m_hoverNode = NodeRenderingTraversal::parent(m_hoverNode.get(), &details)) { }
+    m_hoverNode = NodeRenderingTraversal::parent(node);
+    while (m_hoverNode && !m_hoverNode->renderer())
+        m_hoverNode = NodeRenderingTraversal::parent(m_hoverNode.get());
 
     // If the mouse cursor is not visible, do not clear existing
     // hover effects on the ancestors of |node| and do not invoke
@@ -3103,12 +3104,12 @@
     if (!m_activeElement)
         return;
 
-    NodeRenderingTraversal::ParentDetails details;
-    if (node != m_activeElement && (!m_activeElement->isTextNode() || node != NodeRenderingTraversal::parent(m_activeElement.get(), &details)))
+    if (node != m_activeElement && (!m_activeElement->isTextNode() || node != NodeRenderingTraversal::parent(m_activeElement.get())))
         return;
 
-    Node* activeNode = NodeRenderingTraversal::parent(node, &details);
-    for (; activeNode && activeNode->isElementNode() && !activeNode->renderer(); activeNode = NodeRenderingTraversal::parent(activeNode, &details)) { }
+    Node* activeNode = NodeRenderingTraversal::parent(node);
+    while (activeNode && activeNode->isElementNode() && !activeNode->renderer())
+        activeNode = NodeRenderingTraversal::parent(activeNode);
 
     m_activeElement = activeNode && activeNode->isElementNode() ? toElement(activeNode) : 0;
 }
@@ -4108,7 +4109,7 @@
     m_sharedObjectPoolClearTimer.startOneShot(timeToKeepSharedObjectPoolAliveAfterParsingFinishedInSeconds);
 
     // Parser should have picked up all preloads by now
-    m_cachedResourceLoader->clearPreloads();
+    m_fetcher->clearPreloads();
 }
 
 void Document::sharedObjectPoolClearTimerFired(Timer<Document>*)
@@ -4427,11 +4428,6 @@
         page->console()->addMessage(source, level, message, sourceURL, lineNumber, 0, callStack, state, requestIdentifier);
 }
 
-const SecurityOrigin* Document::topOrigin() const
-{
-    return topDocument()->securityOrigin();
-}
-
 struct PerformTaskContext {
     WTF_MAKE_NONCOPYABLE(PerformTaskContext); WTF_MAKE_FAST_ALLOCATED;
 public:
diff --git a/Source/core/dom/Document.h b/Source/core/dom/Document.h
index 3c47aa6..08627c3 100644
--- a/Source/core/dom/Document.h
+++ b/Source/core/dom/Document.h
@@ -64,7 +64,7 @@
 class CSSStyleDeclaration;
 class CSSStyleSheet;
 class CachedCSSStyleSheet;
-class CachedResourceLoader;
+class ResourceFetcher;
 class CachedScript;
 class CanvasRenderingContext;
 class CharacterData;
@@ -498,7 +498,7 @@
     // auto is specified.
     void pageSizeAndMarginsInPixels(int pageIndex, IntSize& pageSize, int& marginTop, int& marginRight, int& marginBottom, int& marginLeft);
 
-    CachedResourceLoader* cachedResourceLoader() { return m_cachedResourceLoader.get(); }
+    ResourceFetcher* fetcher() { return m_fetcher.get(); }
 
     virtual void attach(const AttachContext& = AttachContext()) OVERRIDE;
     virtual void detach(const AttachContext& = AttachContext()) OVERRIDE;
@@ -1028,8 +1028,6 @@
 
     virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, unsigned long requestIdentifier = 0);
 
-    virtual const SecurityOrigin* topOrigin() const OVERRIDE;
-
     PassRefPtr<FontLoader> fontloader();
     DocumentLifecycleNotifier* lifecycleNotifier();
 
@@ -1133,7 +1131,7 @@
     DOMWindow* m_domWindow;
     HTMLImport* m_import;
 
-    RefPtr<CachedResourceLoader> m_cachedResourceLoader;
+    RefPtr<ResourceFetcher> m_fetcher;
     RefPtr<DocumentParser> m_parser;
     unsigned m_activeParserCount;
     RefPtr<ContextFeatures> m_contextFeatures;
diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp
index 4cdd942..a8e04bd 100644
--- a/Source/core/dom/Node.cpp
+++ b/Source/core/dom/Node.cpp
@@ -55,7 +55,6 @@
 #include "core/dom/MutationEvent.h"
 #include "core/dom/NameNodeList.h"
 #include "core/dom/NodeRareData.h"
-#include "core/dom/NodeRenderingTraversal.h"
 #include "core/dom/NodeTraversal.h"
 #include "core/dom/ProcessingInstruction.h"
 #include "core/dom/SelectorQuery.h"
@@ -1705,8 +1704,10 @@
     
     // If either of start1 or start2 is null, then we are disconnected, since one of the nodes is
     // an orphaned attribute node.
-    if (!start1 || !start2)
-        return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
+    if (!start1 || !start2) {
+        unsigned short direction = (this > otherNode) ? DOCUMENT_POSITION_PRECEDING : DOCUMENT_POSITION_FOLLOWING;
+        return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
+    }
 
     Vector<const Node*, 16> chain1;
     Vector<const Node*, 16> chain2;
@@ -1740,10 +1741,10 @@
     // If one node is in the document and the other is not, we must be disconnected.
     // If the nodes have different owning documents, they must be disconnected.  Note that we avoid
     // comparing Attr nodes here, since they return false from inDocument() all the time (which seems like a bug).
-    if (start1->inDocument() != start2->inDocument())
-        return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
-    if (treatment == TreatShadowTreesAsDisconnected && start1->treeScope() != start2->treeScope())
-        return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
+    if (start1->inDocument() != start2->inDocument() || (treatment == TreatShadowTreesAsDisconnected && start1->treeScope() != start2->treeScope())) {
+        unsigned short direction = (this > otherNode) ? DOCUMENT_POSITION_PRECEDING : DOCUMENT_POSITION_FOLLOWING;
+        return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
+    }
 
     // We need to find a common ancestor container, and then compare the indices of the two immediate children.
     const Node* current;
@@ -1757,7 +1758,7 @@
 
     // If the two elements don't have a common root, they're not in the same tree.
     if (chain1[index1 - 1] != chain2[index2 - 1]) {
-        unsigned short direction = (start1 > start2) ? DOCUMENT_POSITION_PRECEDING : DOCUMENT_POSITION_FOLLOWING;
+        unsigned short direction = (this > otherNode) ? DOCUMENT_POSITION_PRECEDING : DOCUMENT_POSITION_FOLLOWING;
         return DOCUMENT_POSITION_DISCONNECTED | DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | direction;
     }
 
diff --git a/Source/core/dom/NodeRenderingContext.cpp b/Source/core/dom/NodeRenderingContext.cpp
index 2677c13..c469b1b 100644
--- a/Source/core/dom/NodeRenderingContext.cpp
+++ b/Source/core/dom/NodeRenderingContext.cpp
@@ -264,7 +264,7 @@
 
     RenderObject* parentRenderer = this->parentRenderer();
 
-    if (resetStyleInheritance())
+    if (m_parentDetails.resetStyleInheritance())
         m_style = textNode->document()->styleResolver()->defaultStyleForElement();
     else
         m_style = parentRenderer->style();
diff --git a/Source/core/dom/NodeRenderingContext.h b/Source/core/dom/NodeRenderingContext.h
index 9e448a8..c31bb1f 100644
--- a/Source/core/dom/NodeRenderingContext.h
+++ b/Source/core/dom/NodeRenderingContext.h
@@ -29,18 +29,14 @@
 #include "core/dom/NodeRenderingTraversal.h"
 
 #include "wtf/RefPtr.h"
-#include "wtf/text/AtomicString.h"
 
 namespace WebCore {
 
 class ContainerNode;
-class Document;
-class InsertionPoint;
 class Node;
 class RenderNamedFlowThread;
 class RenderObject;
 class RenderStyle;
-class ElementShadow;
 
 class NodeRenderingContext {
 public:
@@ -49,15 +45,12 @@
     void createRendererForTextIfNeeded();
     void createRendererForElementIfNeeded();
 
-    Node* node() const;
-    ContainerNode* parentNodeForRenderingAndStyle() const;
-    bool resetStyleInheritance() const;
+    Node* node() const { return m_node; }
     RenderObject* parentRenderer() const;
     RenderObject* nextRenderer() const;
     RenderObject* previousRenderer() const;
-    InsertionPoint* insertionPoint() const;
 
-    const RenderStyle* style() const;
+    const RenderStyle* style() const { return m_style.get(); }
 
 private:
     bool shouldCreateRenderer() const;
@@ -69,34 +62,8 @@
     NodeRenderingTraversal::ParentDetails m_parentDetails;
     RefPtr<RenderStyle> m_style;
     RenderNamedFlowThread* m_parentFlowRenderer;
-    AtomicString m_flowThread;
 };
 
-inline Node* NodeRenderingContext::node() const
-{
-    return m_node;
-}
-
-inline ContainerNode* NodeRenderingContext::parentNodeForRenderingAndStyle() const
-{
-    return m_renderingParent;
-}
-
-inline bool NodeRenderingContext::resetStyleInheritance() const
-{
-    return m_parentDetails.resetStyleInheritance();
-}
-
-inline const RenderStyle* NodeRenderingContext::style() const
-{
-    return m_style.get();
-}
-
-inline InsertionPoint* NodeRenderingContext::insertionPoint() const
-{
-    return m_parentDetails.insertionPoint();
-}
-
 } // namespace WebCore
 
 #endif
diff --git a/Source/core/dom/ProcessingInstruction.cpp b/Source/core/dom/ProcessingInstruction.cpp
index cbd329b..89b0fc1 100644
--- a/Source/core/dom/ProcessingInstruction.cpp
+++ b/Source/core/dom/ProcessingInstruction.cpp
@@ -28,9 +28,9 @@
 #include "core/dom/Document.h"
 #include "core/dom/DocumentStyleSheetCollection.h"
 #include "core/loader/cache/CachedCSSStyleSheet.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
 #include "core/loader/cache/CachedXSLStyleSheet.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/xml/XSLStyleSheet.h"
 #include "core/xml/parser/XMLDocumentParser.h" // for parseAttributes()
 
@@ -154,9 +154,9 @@
             m_loading = true;
             document()->styleSheetCollection()->addPendingSheet();
             
-            CachedResourceRequest request(ResourceRequest(document()->completeURL(href)), CachedResourceInitiatorTypeNames::processinginstruction);
+            FetchRequest request(ResourceRequest(document()->completeURL(href)), CachedResourceInitiatorTypeNames::processinginstruction);
             if (m_isXSL)
-                m_cachedSheet = document()->cachedResourceLoader()->requestXSLStyleSheet(request);
+                m_cachedSheet = document()->fetcher()->requestXSLStyleSheet(request);
             else
             {
                 String charset = attrs.get("charset");
@@ -164,7 +164,7 @@
                     charset = document()->charset();
                 request.setCharset(charset);
 
-                m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request);
+                m_cachedSheet = document()->fetcher()->requestCSSStyleSheet(request);
             }
             if (m_cachedSheet)
                 m_cachedSheet->addClient(this);
diff --git a/Source/core/dom/ScriptExecutionContext.h b/Source/core/dom/ScriptExecutionContext.h
index 48be118..3ac45c6 100644
--- a/Source/core/dom/ScriptExecutionContext.h
+++ b/Source/core/dom/ScriptExecutionContext.h
@@ -75,8 +75,6 @@
     void addConsoleMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL, unsigned lineNumber, ScriptState* = 0, unsigned long requestIdentifier = 0);
     virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, unsigned long requestIdentifier = 0) = 0;
 
-    virtual const SecurityOrigin* topOrigin() const = 0;
-
     PublicURLManager& publicURLManager();
 
     // Active objects are not garbage collected even if inaccessible, e.g. because their activity may result in callbacks being invoked.
diff --git a/Source/core/dom/ScriptLoader.cpp b/Source/core/dom/ScriptLoader.cpp
index e42b6c3..c71bd21 100644
--- a/Source/core/dom/ScriptLoader.cpp
+++ b/Source/core/dom/ScriptLoader.cpp
@@ -37,9 +37,9 @@
 #include "core/dom/Text.h"
 #include "core/html/HTMLScriptElement.h"
 #include "core/html/parser/HTMLParserIdioms.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
 #include "core/loader/cache/CachedScript.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/ContentSecurityPolicy.h"
 #include "core/page/Frame.h"
 #include "core/platform/MIMETypeRegistry.h"
@@ -263,7 +263,7 @@
 
     ASSERT(!m_cachedScript);
     if (!stripLeadingAndTrailingHTMLSpaces(sourceUrl).isEmpty()) {
-        CachedResourceRequest request(ResourceRequest(m_element->document()->completeURL(sourceUrl)), m_element->localName());
+        FetchRequest request(ResourceRequest(m_element->document()->completeURL(sourceUrl)), m_element->localName());
 
         String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossoriginAttr);
         if (!crossOriginMode.isNull()) {
@@ -276,7 +276,7 @@
         if (isValidScriptNonce)
             request.setContentSecurityCheck(DoNotCheckContentSecurityPolicy);
 
-        m_cachedScript = m_element->document()->cachedResourceLoader()->requestScript(request);
+        m_cachedScript = m_element->document()->fetcher()->requestScript(request);
         m_isExternalScript = true;
     }
 
@@ -369,7 +369,7 @@
     ASSERT_UNUSED(resource, resource == m_cachedScript);
     if (!m_cachedScript)
         return;
-    if (!m_element->document()->cachedResourceLoader()->canAccess(m_cachedScript.get())) {
+    if (!m_element->document()->fetcher()->canAccess(m_cachedScript.get())) {
         dispatchErrorEvent();
         return;
     }
diff --git a/Source/core/editing/Editor.cpp b/Source/core/editing/Editor.cpp
index 5f42c16..b287f81 100644
--- a/Source/core/editing/Editor.cpp
+++ b/Source/core/editing/Editor.cpp
@@ -63,7 +63,7 @@
 #include "core/editing/markup.h"
 #include "core/html/HTMLImageElement.h"
 #include "core/html/HTMLTextAreaElement.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/EditorClient.h"
 #include "core/page/EventHandler.h"
 #include "core/page/FocusController.h"
@@ -931,7 +931,7 @@
     if (!canPaste())
         return;
     updateMarkersForWordsAffectedByEditing(false);
-    CachedResourceLoader* loader = m_frame->document()->cachedResourceLoader();
+    ResourceFetcher* loader = m_frame->document()->fetcher();
     ResourceCacheValidationSuppressor validationSuppressor(loader);
     if (m_frame->selection()->isContentRichlyEditable())
         pasteWithPasteboard(Pasteboard::generalPasteboard(), true);
diff --git a/Source/core/html/HTMLImportsController.cpp b/Source/core/html/HTMLImportsController.cpp
index 68d4b6b..91c9320 100644
--- a/Source/core/html/HTMLImportsController.cpp
+++ b/Source/core/html/HTMLImportsController.cpp
@@ -36,8 +36,8 @@
 #include "core/html/HTMLLinkElement.h"
 #include "core/loader/CrossOriginAccessControl.h"
 #include "core/loader/DocumentWriter.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/CachedScript.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "weborigin/SecurityOrigin.h"
 
 namespace WebCore {
@@ -88,9 +88,9 @@
         return;
     }
 
-    CachedResourceRequest request = builder.build(true);
+    FetchRequest request = builder.build(true);
     request.setPotentiallyCrossOriginEnabled(controller->securityOrigin(), DoNotAllowStoredCredentials);
-    CachedResourceHandle<CachedRawResource> resource = controller->cachedResourceLoader()->requestRawResource(request);
+    CachedResourceHandle<CachedRawResource> resource = controller->fetcher()->requestRawResource(request);
     if (!resource)
         return;
 
@@ -176,7 +176,7 @@
 HTMLImportLoader::State HTMLImportLoader::startParsing(const ResourceResponse& response)
 {
     // Current canAccess() implementation isn't sufficient for catching cross-domain redirects: http://crbug.com/256976
-    if (!controller()->cachedResourceLoader()->canAccess(m_resource.get()))
+    if (!controller()->fetcher()->canAccess(m_resource.get()))
         return StateError;
 
     m_importedDocument = HTMLDocument::create(DocumentInit(response.url(), 0, this));
@@ -293,9 +293,9 @@
     return m_master->securityOrigin();
 }
 
-CachedResourceLoader* HTMLImportsController::cachedResourceLoader() const
+ResourceFetcher* HTMLImportsController::fetcher() const
 {
-    return m_master->cachedResourceLoader();
+    return m_master->fetcher();
 }
 
 bool HTMLImportsController::haveChildrenLoaded(HTMLImport* parent) const
diff --git a/Source/core/html/HTMLImportsController.h b/Source/core/html/HTMLImportsController.h
index 28765f1..92b2a23 100644
--- a/Source/core/html/HTMLImportsController.h
+++ b/Source/core/html/HTMLImportsController.h
@@ -43,7 +43,7 @@
 namespace WebCore {
 
 class ScriptExecutionContext;
-class CachedResourceLoader;
+class ResourceFetcher;
 class HTMLImportLoader;
 class HTMLImportsController;
 class DocumentWriter;
@@ -133,7 +133,7 @@
     void showSecurityErrorMessage(const String&);
     PassRefPtr<HTMLImportLoader> findLinkFor(const KURL&) const;
     SecurityOrigin* securityOrigin() const;
-    CachedResourceLoader* cachedResourceLoader() const;
+    ResourceFetcher* fetcher() const;
     bool haveChildrenLoaded(HTMLImport* parent) const;
     void didLoad(HTMLImportLoader*);
 
diff --git a/Source/core/html/HTMLLinkElement.cpp b/Source/core/html/HTMLLinkElement.cpp
index 6231f2d..a899316 100644
--- a/Source/core/html/HTMLLinkElement.cpp
+++ b/Source/core/html/HTMLLinkElement.cpp
@@ -40,8 +40,8 @@
 #include "core/html/HTMLImportsController.h"
 #include "core/loader/FrameLoader.h"
 #include "core/loader/cache/CachedCSSStyleSheet.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/FrameView.h"
 #include "wtf/StdLibExtras.h"
@@ -598,8 +598,8 @@
         addPendingSheet(blocking ? Blocking : NonBlocking);
 
         // Load stylesheets that are not needed for the rendering immediately with low priority.
-        CachedResourceRequest request = builder.build(blocking);
-        m_cachedSheet = document()->cachedResourceLoader()->requestCSSStyleSheet(request);
+        FetchRequest request = builder.build(blocking);
+        m_cachedSheet = document()->fetcher()->requestCSSStyleSheet(request);
 
         if (m_cachedSheet)
             m_cachedSheet->addClient(this);
diff --git a/Source/core/html/LinkResource.cpp b/Source/core/html/LinkResource.cpp
index c81063f..5c7cd47 100644
--- a/Source/core/html/LinkResource.cpp
+++ b/Source/core/html/LinkResource.cpp
@@ -56,10 +56,10 @@
         m_charset = m_owner->document()->charset();
 }
 
-CachedResourceRequest LinkRequestBuilder::build(bool blocking) const
+FetchRequest LinkRequestBuilder::build(bool blocking) const
 {
     ResourceLoadPriority priority = blocking ? ResourceLoadPriorityUnresolved : ResourceLoadPriorityVeryLow;
-    return CachedResourceRequest(ResourceRequest(m_owner->document()->completeURL(m_url)), m_owner->localName(), m_charset, priority);
+    return FetchRequest(ResourceRequest(m_owner->document()->completeURL(m_url)), m_owner->localName(), m_charset, priority);
 }
 
 } // namespace WebCore
diff --git a/Source/core/html/LinkResource.h b/Source/core/html/LinkResource.h
index 3cac604..0a8b2a8 100644
--- a/Source/core/html/LinkResource.h
+++ b/Source/core/html/LinkResource.h
@@ -31,7 +31,7 @@
 #ifndef LinkResource_h
 #define LinkResource_h
 
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
 #include "weborigin/KURL.h"
 #include "wtf/RefCounted.h"
 #include "wtf/text/WTFString.h"
@@ -65,7 +65,7 @@
     bool isValid() const { return !m_url.isEmpty() && m_url.isValid(); }
     const KURL& url() const { return m_url; }
     const String& charset() const { return m_charset; }
-    CachedResourceRequest build(bool blocking) const;
+    FetchRequest build(bool blocking) const;
 
 private:
     HTMLLinkElement* m_owner;
diff --git a/Source/core/html/canvas/CanvasRenderingContext2D.cpp b/Source/core/html/canvas/CanvasRenderingContext2D.cpp
index ebea8be..1624836 100644
--- a/Source/core/html/canvas/CanvasRenderingContext2D.cpp
+++ b/Source/core/html/canvas/CanvasRenderingContext2D.cpp
@@ -2052,9 +2052,6 @@
 
 void CanvasRenderingContext2D::setFont(const String& newFont)
 {
-    if (newFont == state().m_unparsedFont && state().m_realizedFont)
-        return;
-
     MutableStylePropertyMap::iterator i = m_cachedFonts.find(newFont);
     RefPtr<MutableStylePropertySet> parsedStyle = i != m_cachedFonts.end() ? i->value : 0;
 
diff --git a/Source/core/html/parser/HTMLResourcePreloader.cpp b/Source/core/html/parser/HTMLResourcePreloader.cpp
index 0c1a17a..40964d7 100644
--- a/Source/core/html/parser/HTMLResourcePreloader.cpp
+++ b/Source/core/html/parser/HTMLResourcePreloader.cpp
@@ -28,7 +28,7 @@
 
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedResourceInitiatorInfo.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 
 #include "core/css/MediaList.h"
 #include "core/css/MediaQueryEvaluator.h"
@@ -50,13 +50,13 @@
     return document->completeURL(m_resourceURL, m_baseURL.isEmpty() ? document->url() : m_baseURL);
 }
 
-CachedResourceRequest PreloadRequest::resourceRequest(Document* document)
+FetchRequest PreloadRequest::resourceRequest(Document* document)
 {
     ASSERT(isMainThread());
     CachedResourceInitiatorInfo initiatorInfo;
     initiatorInfo.name = m_initiatorName;
     initiatorInfo.position = m_initiatorPosition;
-    CachedResourceRequest request(ResourceRequest(completeURL(document)), initiatorInfo);
+    FetchRequest request(ResourceRequest(completeURL(document)), initiatorInfo);
 
     // FIXME: It's possible CORS should work for other request types?
     if (m_resourceType == CachedResource::Script)
@@ -88,8 +88,8 @@
     if (!preload->media().isEmpty() && !mediaAttributeMatches(m_document->frame(), m_document->renderer()->style(), preload->media()))
         return;
 
-    CachedResourceRequest request = preload->resourceRequest(m_document);
-    m_document->cachedResourceLoader()->preload(preload->resourceType(), request, preload->charset());
+    FetchRequest request = preload->resourceRequest(m_document);
+    m_document->fetcher()->preload(preload->resourceType(), request, preload->charset());
 }
 
 
diff --git a/Source/core/html/parser/HTMLResourcePreloader.h b/Source/core/html/parser/HTMLResourcePreloader.h
index 21a6754..e4f037c 100644
--- a/Source/core/html/parser/HTMLResourcePreloader.h
+++ b/Source/core/html/parser/HTMLResourcePreloader.h
@@ -27,7 +27,7 @@
 #define HTMLResourcePreloader_h
 
 #include "core/loader/cache/CachedResource.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
 #include "wtf/text/TextPosition.h"
 
 namespace WebCore {
@@ -46,7 +46,7 @@
 
     bool isSafeToSendToAnotherThread() const;
 
-    CachedResourceRequest resourceRequest(Document*);
+    FetchRequest resourceRequest(Document*);
 
     const String& charset() const { return m_charset; }
     const String& media() const { return m_mediaAttribute; }
diff --git a/Source/core/inspector/InspectorPageAgent.cpp b/Source/core/inspector/InspectorPageAgent.cpp
index cab38da..328b1bb 100644
--- a/Source/core/inspector/InspectorPageAgent.cpp
+++ b/Source/core/inspector/InspectorPageAgent.cpp
@@ -58,9 +58,9 @@
 #include "core/loader/cache/CachedFont.h"
 #include "core/loader/cache/CachedImage.h"
 #include "core/loader/cache/CachedResource.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/CachedScript.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/FrameView.h"
 #include "core/page/Page.h"
@@ -257,7 +257,7 @@
 
 CachedResource* InspectorPageAgent::cachedResource(Frame* frame, const KURL& url)
 {
-    CachedResource* cachedResource = frame->document()->cachedResourceLoader()->cachedResource(url);
+    CachedResource* cachedResource = frame->document()->fetcher()->cachedResource(url);
     if (!cachedResource)
         cachedResource = memoryCache()->resourceForURL(url);
     return cachedResource;
@@ -490,9 +490,9 @@
 {
     Vector<CachedResource*> result;
 
-    const CachedResourceLoader::DocumentResourceMap& allResources = frame->document()->cachedResourceLoader()->allCachedResources();
-    CachedResourceLoader::DocumentResourceMap::const_iterator end = allResources.end();
-    for (CachedResourceLoader::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {
+    const ResourceFetcher::DocumentResourceMap& allResources = frame->document()->fetcher()->allCachedResources();
+    ResourceFetcher::DocumentResourceMap::const_iterator end = allResources.end();
+    for (ResourceFetcher::DocumentResourceMap::const_iterator it = allResources.begin(); it != end; ++it) {
         CachedResource* cachedResource = it->value.get();
 
         switch (cachedResource->type()) {
diff --git a/Source/core/loader/DocumentLoader.cpp b/Source/core/loader/DocumentLoader.cpp
index f167804..9eb4674 100644
--- a/Source/core/loader/DocumentLoader.cpp
+++ b/Source/core/loader/DocumentLoader.cpp
@@ -47,8 +47,8 @@
 #include "core/loader/appcache/ApplicationCacheHost.h"
 #include "core/loader/archive/ArchiveResourceCollection.h"
 #include "core/loader/archive/MHTMLArchive.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/DOMWindow.h"
 #include "core/page/Frame.h"
 #include "core/page/FrameTree.h"
@@ -91,7 +91,7 @@
 DocumentLoader::DocumentLoader(const ResourceRequest& req, const SubstituteData& substituteData)
     : m_deferMainResourceDataLoad(true)
     , m_frame(0)
-    , m_cachedResourceLoader(CachedResourceLoader::create(this))
+    , m_fetcher(ResourceFetcher::create(this))
     , m_originalRequest(req)
     , m_substituteData(substituteData)
     , m_originalRequestCopy(req)
@@ -124,7 +124,7 @@
 DocumentLoader::~DocumentLoader()
 {
     ASSERT(!m_frame || frameLoader()->activeDocumentLoader() != this || !isLoading());
-    m_cachedResourceLoader->clearDocumentLoader();
+    m_fetcher->clearDocumentLoader();
     clearMainResourceHandle();
 }
 
@@ -746,7 +746,7 @@
         Document* doc = m_frame->document();
         if ((isLoadingMainResource() || !m_frame->document()->loadEventFinished()) && isLoading())
             return true;
-        if (m_cachedResourceLoader->requestCount())
+        if (m_fetcher->requestCount())
             return true;
         if (doc->processingLoadEvent())
             return true;
@@ -879,7 +879,7 @@
     // Multiple frames may be loading the same main resource simultaneously. If deferral state changes,
     // each frame's DocumentLoader will try to send a setDefersLoading() to the same underlying ResourceLoader. Ensure only
     // the "owning" DocumentLoader does so, as setDefersLoading() is not resilient to setting the same value repeatedly.
-    if (mainResourceLoader() && mainResourceLoader()->isLoadedBy(m_cachedResourceLoader.get()))
+    if (mainResourceLoader() && mainResourceLoader()->isLoadedBy(m_fetcher.get()))
         mainResourceLoader()->setDefersLoading(defers);
 
     setAllDefersLoading(m_resourceLoaders, defers);
@@ -960,8 +960,8 @@
     ResourceRequest request(m_request);
     DEFINE_STATIC_LOCAL(ResourceLoaderOptions, mainResourceLoadOptions,
         (SendCallbacks, SniffContent, DoNotBufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCredentials, SkipSecurityCheck, CheckContentSecurityPolicy, UseDefaultOriginRestrictionsForType, DocumentContext));
-    CachedResourceRequest cachedResourceRequest(request, CachedResourceInitiatorTypeNames::document, mainResourceLoadOptions);
-    m_mainResource = m_cachedResourceLoader->requestMainResource(cachedResourceRequest);
+    FetchRequest cachedResourceRequest(request, CachedResourceInitiatorTypeNames::document, mainResourceLoadOptions);
+    m_mainResource = m_fetcher->requestMainResource(cachedResourceRequest);
     if (!m_mainResource) {
         setRequest(ResourceRequest());
         // If the load was aborted by clearing m_request, it's possible the ApplicationCacheHost
diff --git a/Source/core/loader/DocumentLoader.h b/Source/core/loader/DocumentLoader.h
index 91a2b5f..3a39ff3 100644
--- a/Source/core/loader/DocumentLoader.h
+++ b/Source/core/loader/DocumentLoader.h
@@ -53,7 +53,7 @@
     class ApplicationCacheHost;
     class ArchiveResource;
     class ArchiveResourceCollection;
-    class CachedResourceLoader;
+    class ResourceFetcher;
     class ContentFilter;
     class FormState;
     class Frame;
@@ -95,7 +95,7 @@
         const ResourceRequest& request() const;
         ResourceRequest& request();
 
-        CachedResourceLoader* cachedResourceLoader() const { return m_cachedResourceLoader.get(); }
+        ResourceFetcher* fetcher() const { return m_fetcher.get(); }
 
         const SubstituteData& substituteData() const { return m_substituteData; }
 
@@ -221,7 +221,7 @@
         void startDataLoadTimer();
                 
         Frame* m_frame;
-        RefPtr<CachedResourceLoader> m_cachedResourceLoader;
+        RefPtr<ResourceFetcher> m_fetcher;
 
         CachedResourceHandle<CachedRawResource> m_mainResource;
         ResourceLoaderSet m_resourceLoaders;
diff --git a/Source/core/loader/DocumentThreadableLoader.cpp b/Source/core/loader/DocumentThreadableLoader.cpp
index dc04c2d..fc96e43 100644
--- a/Source/core/loader/DocumentThreadableLoader.cpp
+++ b/Source/core/loader/DocumentThreadableLoader.cpp
@@ -40,8 +40,8 @@
 #include "core/loader/FrameLoader.h"
 #include "core/loader/ThreadableLoaderClient.h"
 #include "core/loader/cache/CachedRawResource.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/ContentSecurityPolicy.h"
 #include "core/page/Frame.h"
 #include "core/platform/network/ResourceError.h"
@@ -414,9 +414,9 @@
         if (m_options.timeoutMilliseconds > 0)
             m_timeoutTimer.startOneShot(m_options.timeoutMilliseconds / 1000.0);
 
-        CachedResourceRequest newRequest(request, m_options.initiator, options);
+        FetchRequest newRequest(request, m_options.initiator, options);
         ASSERT(!m_resource);
-        m_resource = m_document->cachedResourceLoader()->requestRawResource(newRequest);
+        m_resource = m_document->fetcher()->requestRawResource(newRequest);
         if (m_resource) {
             if (m_resource->loader()) {
                 unsigned long identifier = m_resource->identifier();
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
index f9b23bb..df5e87d 100644
--- a/Source/core/loader/FrameLoader.cpp
+++ b/Source/core/loader/FrameLoader.cpp
@@ -66,7 +66,7 @@
 #include "core/loader/ResourceLoader.h"
 #include "core/loader/UniqueIdentifier.h"
 #include "core/loader/appcache/ApplicationCacheHost.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/ChromeClient.h"
 #include "core/page/ContentSecurityPolicy.h"
@@ -536,8 +536,8 @@
 
     Settings* settings = m_frame->document()->settings();
     if (settings) {
-        m_frame->document()->cachedResourceLoader()->setImagesEnabled(settings->areImagesEnabled());
-        m_frame->document()->cachedResourceLoader()->setAutoLoadImages(settings->loadsImagesAutomatically());
+        m_frame->document()->fetcher()->setImagesEnabled(settings->areImagesEnabled());
+        m_frame->document()->fetcher()->setAutoLoadImages(settings->loadsImagesAutomatically());
     }
 
     if (m_documentLoader) {
@@ -637,7 +637,7 @@
         return;
 
     // Still waiting for images/scripts?
-    if (m_frame->document()->cachedResourceLoader()->requestCount())
+    if (m_frame->document()->fetcher()->requestCount())
         return;
 
     // Still waiting for elements that don't go through a FrameLoader?
@@ -1569,11 +1569,11 @@
 int FrameLoader::numPendingOrLoadingRequests(bool recurse) const
 {
     if (!recurse)
-        return m_frame->document()->cachedResourceLoader()->requestCount();
+        return m_frame->document()->fetcher()->requestCount();
 
     int count = 0;
     for (Frame* frame = m_frame; frame; frame = frame->tree()->traverseNext(m_frame))
-        count += frame->document()->cachedResourceLoader()->requestCount();
+        count += frame->document()->fetcher()->requestCount();
     return count;
 }
 
diff --git a/Source/core/loader/FrameLoaderClient.h b/Source/core/loader/FrameLoaderClient.h
index 0708411..fb84644 100644
--- a/Source/core/loader/FrameLoaderClient.h
+++ b/Source/core/loader/FrameLoaderClient.h
@@ -51,12 +51,12 @@
 
 namespace WebCore {
 
-    class CachedResourceRequest;
     class Color;
     class DOMWindowExtension;
     class DOMWrapperWorld;
     class DocumentLoader;
     class Element;
+class FetchRequest;
     class FormState;
     class Frame;
     class FrameLoader;
@@ -118,7 +118,7 @@
 
         virtual NavigationPolicy decidePolicyForNavigation(const ResourceRequest&, NavigationType, NavigationPolicy, bool isRedirect) = 0;
 
-        virtual void dispatchWillRequestResource(CachedResourceRequest*) { }
+        virtual void dispatchWillRequestResource(FetchRequest*) { }
 
         virtual void dispatchWillSendSubmitEvent(PassRefPtr<FormState>) = 0;
         virtual void dispatchWillSubmitForm(PassRefPtr<FormState>) = 0;
diff --git a/Source/core/loader/ImageLoader.cpp b/Source/core/loader/ImageLoader.cpp
index 6ad2aca..9fbabee 100644
--- a/Source/core/loader/ImageLoader.cpp
+++ b/Source/core/loader/ImageLoader.cpp
@@ -31,8 +31,8 @@
 #include "core/html/parser/HTMLParserIdioms.h"
 #include "core/loader/CrossOriginAccessControl.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/rendering/RenderImage.h"
 #include "core/rendering/RenderVideo.h"
@@ -156,7 +156,7 @@
     // an empty string.
     CachedResourceHandle<CachedImage> newImage = 0;
     if (!attr.isNull() && !stripLeadingAndTrailingHTMLSpaces(attr).isEmpty()) {
-        CachedResourceRequest request(ResourceRequest(document->completeURL(sourceURI(attr))), element()->localName());
+        FetchRequest request(ResourceRequest(document->completeURL(sourceURI(attr))), element()->localName());
 
         String crossOriginMode = m_element->fastGetAttribute(HTMLNames::crossoriginAttr);
         if (!crossOriginMode.isNull()) {
@@ -165,14 +165,15 @@
         }
 
         if (m_loadManually) {
-            bool autoLoadOtherImages = document->cachedResourceLoader()->autoLoadImages();
-            document->cachedResourceLoader()->setAutoLoadImages(false);
+            bool autoLoadOtherImages = document->fetcher()->autoLoadImages();
+            document->fetcher()->setAutoLoadImages(false);
             newImage = new CachedImage(request.resourceRequest());
             newImage->setLoading(true);
-            document->cachedResourceLoader()->m_documentResources.set(newImage->url(), newImage.get());
-            document->cachedResourceLoader()->setAutoLoadImages(autoLoadOtherImages);
-        } else
-            newImage = document->cachedResourceLoader()->requestImage(request);
+            document->fetcher()->m_documentResources.set(newImage->url(), newImage.get());
+            document->fetcher()->setAutoLoadImages(autoLoadOtherImages);
+        } else {
+            newImage = document->fetcher()->requestImage(request);
+        }
 
         // If we do not have an image here, it means that a cross-site
         // violation occurred, or that the image was blocked via Content
diff --git a/Source/core/loader/LinkLoader.cpp b/Source/core/loader/LinkLoader.cpp
index 79315bc..78be722 100644
--- a/Source/core/loader/LinkLoader.cpp
+++ b/Source/core/loader/LinkLoader.cpp
@@ -36,8 +36,8 @@
 #include "core/dom/Document.h"
 #include "core/html/LinkRelAttribute.h"
 #include "core/loader/Prerenderer.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Settings.h"
 #include "core/platform/PrerenderHandle.h"
 #include "core/platform/network/DNS.h"
@@ -118,12 +118,12 @@
         if (!m_client->shouldLoadLink())
             return false;
         CachedResource::Type type = relAttribute.isLinkSubresource() ?  CachedResource::LinkSubresource : CachedResource::LinkPrefetch;
-        CachedResourceRequest linkRequest(ResourceRequest(document->completeURL(href)), CachedResourceInitiatorTypeNames::link);
+        FetchRequest linkRequest(ResourceRequest(document->completeURL(href)), CachedResourceInitiatorTypeNames::link);
         if (m_cachedLinkResource) {
             m_cachedLinkResource->removeClient(this);
             m_cachedLinkResource = 0;
         }
-        m_cachedLinkResource = document->cachedResourceLoader()->requestLinkResource(type, linkRequest);
+        m_cachedLinkResource = document->fetcher()->requestLinkResource(type, linkRequest);
         if (m_cachedLinkResource)
             m_cachedLinkResource->addClient(this);
     }
diff --git a/Source/core/loader/ResourceLoader.cpp b/Source/core/loader/ResourceLoader.cpp
index 6a4172b..bf34c3c 100644
--- a/Source/core/loader/ResourceLoader.cpp
+++ b/Source/core/loader/ResourceLoader.cpp
@@ -296,7 +296,7 @@
     m_host->didReceiveResponse(m_resource, response.toResourceResponse(), m_options);
 
     if (response.toResourceResponse().isMultipart()) {
-        // We don't count multiParts in a CachedResourceLoader's request count
+        // We don't count multiParts in a ResourceFetcher's request count
         m_requestCountTracker.clear();
         if (!m_resource->isImage()) {
             cancel();
diff --git a/Source/core/loader/ResourceLoaderHost.h b/Source/core/loader/ResourceLoaderHost.h
index c7af3d2..e893de1 100644
--- a/Source/core/loader/ResourceLoaderHost.h
+++ b/Source/core/loader/ResourceLoaderHost.h
@@ -37,7 +37,7 @@
 namespace WebCore {
 
 class CachedResource;
-class CachedResourceLoader;
+class ResourceFetcher;
 class Frame;
 class ResourceLoader;
 class ResourceRequest;
diff --git a/Source/core/loader/TextTrackLoader.cpp b/Source/core/loader/TextTrackLoader.cpp
index d5342ea..09851df 100644
--- a/Source/core/loader/TextTrackLoader.cpp
+++ b/Source/core/loader/TextTrackLoader.cpp
@@ -31,9 +31,9 @@
 #include "core/dom/Document.h"
 #include "core/html/track/WebVTTParser.h"
 #include "core/loader/CrossOriginAccessControl.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
 #include "core/loader/cache/CachedTextTrack.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/Logging.h"
 #include "core/platform/SharedBuffer.h"
 #include "weborigin/SecurityOrigin.h"
@@ -152,7 +152,7 @@
 
     ASSERT(m_scriptExecutionContext->isDocument());
     Document* document = toDocument(m_scriptExecutionContext);
-    CachedResourceRequest cueRequest(ResourceRequest(document->completeURL(url)), CachedResourceInitiatorTypeNames::texttrack);
+    FetchRequest cueRequest(ResourceRequest(document->completeURL(url)), CachedResourceInitiatorTypeNames::texttrack);
 
     if (!crossOriginMode.isNull()) {
         m_crossOriginMode = crossOriginMode;
@@ -166,8 +166,8 @@
         }
     }
 
-    CachedResourceLoader* cachedResourceLoader = document->cachedResourceLoader();
-    m_cachedCueData = cachedResourceLoader->requestTextTrack(cueRequest);
+    ResourceFetcher* fetcher = document->fetcher();
+    m_cachedCueData = fetcher->requestTextTrack(cueRequest);
     if (m_cachedCueData)
         m_cachedCueData->addClient(this);
     
diff --git a/Source/core/loader/cache/CachedFont.cpp b/Source/core/loader/cache/CachedFont.cpp
index 83f34de..b74fada 100644
--- a/Source/core/loader/cache/CachedFont.cpp
+++ b/Source/core/loader/cache/CachedFont.cpp
@@ -55,7 +55,7 @@
     delete m_fontData;
 }
 
-void CachedFont::load(CachedResourceLoader*, const ResourceLoaderOptions& options)
+void CachedFont::load(ResourceFetcher*, const ResourceLoaderOptions& options)
 {
     // Don't load the file yet.  Wait for an access before triggering the load.
     setLoading(true);
@@ -69,7 +69,7 @@
         static_cast<CachedFontClient*>(c)->fontLoaded(this);
 }
 
-void CachedFont::beginLoadIfNeeded(CachedResourceLoader* dl)
+void CachedFont::beginLoadIfNeeded(ResourceFetcher* dl)
 {
     if (!m_loadInitiated) {
         m_loadInitiated = true;
diff --git a/Source/core/loader/cache/CachedFont.h b/Source/core/loader/cache/CachedFont.h
index 91cdcbb..6ea5211 100644
--- a/Source/core/loader/cache/CachedFont.h
+++ b/Source/core/loader/cache/CachedFont.h
@@ -33,7 +33,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 class FontPlatformData;
 class SVGDocument;
 class SVGFontElement;
@@ -44,12 +44,12 @@
     CachedFont(const ResourceRequest&);
     virtual ~CachedFont();
     
-    virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
+    virtual void load(ResourceFetcher*, const ResourceLoaderOptions&);
 
     virtual void didAddClient(CachedResourceClient*);
 
     virtual void allClientsRemoved();
-    void beginLoadIfNeeded(CachedResourceLoader* dl);
+    void beginLoadIfNeeded(ResourceFetcher* dl);
     bool stillNeedsLoad() const { return !m_loadInitiated; }
 
     bool ensureCustomFontData();
diff --git a/Source/core/loader/cache/CachedImage.cpp b/Source/core/loader/cache/CachedImage.cpp
index 3681cbe..58bcc51 100644
--- a/Source/core/loader/cache/CachedImage.cpp
+++ b/Source/core/loader/cache/CachedImage.cpp
@@ -27,8 +27,8 @@
 #include "core/loader/cache/CachedImageClient.h"
 #include "core/loader/cache/CachedResourceClient.h"
 #include "core/loader/cache/CachedResourceClientWalker.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/FrameView.h"
 #include "core/platform/SharedBuffer.h"
 #include "core/platform/graphics/BitmapImage.h"
@@ -65,10 +65,10 @@
     clearImage();
 }
 
-void CachedImage::load(CachedResourceLoader* cachedResourceLoader, const ResourceLoaderOptions& options)
+void CachedImage::load(ResourceFetcher* fetcher, const ResourceLoaderOptions& options)
 {
-    if (!cachedResourceLoader || cachedResourceLoader->autoLoadImages())
-        CachedResource::load(cachedResourceLoader, options);
+    if (!fetcher || fetcher->autoLoadImages())
+        CachedResource::load(fetcher, options);
     else
         setLoading(false);
 }
diff --git a/Source/core/loader/cache/CachedImage.h b/Source/core/loader/cache/CachedImage.h
index b42b921..9215f89 100644
--- a/Source/core/loader/cache/CachedImage.h
+++ b/Source/core/loader/cache/CachedImage.h
@@ -34,7 +34,7 @@
 namespace WebCore {
 
 class CachedImageClient;
-class CachedResourceLoader;
+class ResourceFetcher;
 class FloatSize;
 class MemoryCache;
 class RenderObject;
@@ -48,7 +48,7 @@
     CachedImage(Image*);
     virtual ~CachedImage();
     
-    virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
+    virtual void load(ResourceFetcher*, const ResourceLoaderOptions&);
 
     Image* image(); // Returns the nullImage() if the image is not available yet.
     Image* imageForRenderer(const RenderObject*); // Returns the nullImage() if the image is not available yet.
diff --git a/Source/core/loader/cache/CachedImageTest.cpp b/Source/core/loader/cache/CachedImageTest.cpp
index ad9b63e..f8e46ca 100644
--- a/Source/core/loader/cache/CachedImageTest.cpp
+++ b/Source/core/loader/cache/CachedImageTest.cpp
@@ -35,8 +35,8 @@
 #include "core/loader/EmptyClients.h"
 #include "core/loader/cache/CachedImageClient.h"
 #include "core/loader/cache/CachedResourceHandle.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/FrameView.h"
 #include "core/page/Page.h"
@@ -163,7 +163,7 @@
 
     // Emulate starting a real load.
     CachedResourceHandle<CachedImage> cachedImage = new CachedImage(ResourceRequest(testURL));
-    cachedImage->load(documentLoader->cachedResourceLoader(), ResourceLoaderOptions());
+    cachedImage->load(documentLoader->fetcher(), ResourceLoaderOptions());
     memoryCache()->add(cachedImage.get());
 
     MockCachedImageClient client;
diff --git a/Source/core/loader/cache/CachedRawResource.cpp b/Source/core/loader/cache/CachedRawResource.cpp
index 9633dcd..1340f28 100644
--- a/Source/core/loader/cache/CachedRawResource.cpp
+++ b/Source/core/loader/cache/CachedRawResource.cpp
@@ -29,7 +29,7 @@
 #include "core/loader/ResourceLoader.h"
 #include "core/loader/cache/CachedResourceClient.h"
 #include "core/loader/cache/CachedResourceClientWalker.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/SharedBuffer.h"
 
 namespace WebCore {
diff --git a/Source/core/loader/cache/CachedResource.cpp b/Source/core/loader/cache/CachedResource.cpp
index 24d14ee..80c261f 100644
--- a/Source/core/loader/cache/CachedResource.cpp
+++ b/Source/core/loader/cache/CachedResource.cpp
@@ -31,8 +31,8 @@
 #include "core/loader/cache/CachedResourceClient.h"
 #include "core/loader/cache/CachedResourceClientWalker.h"
 #include "core/loader/cache/CachedResourceHandle.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/Logging.h"
 #include "core/platform/PurgeableBuffer.h"
 #include "core/platform/SharedBuffer.h"
@@ -158,9 +158,9 @@
     error(CachedResource::LoadError);
 }
 
-void CachedResource::load(CachedResourceLoader* cachedResourceLoader, const ResourceLoaderOptions& options)
+void CachedResource::load(ResourceFetcher* fetcher, const ResourceLoaderOptions& options)
 {
-    if (!cachedResourceLoader->frame()) {
+    if (!fetcher->frame()) {
         failBeforeStarting();
         return;
     }
@@ -181,7 +181,7 @@
         m_fragmentIdentifierForRequest = String();
     }
 
-    m_loader = ResourceLoader::create(cachedResourceLoader, this, request, options);
+    m_loader = ResourceLoader::create(fetcher, this, request, options);
     if (!m_loader) {
         failBeforeStarting();
         return;
diff --git a/Source/core/loader/cache/CachedResource.h b/Source/core/loader/cache/CachedResource.h
index a1c69af..b9c6f77 100644
--- a/Source/core/loader/cache/CachedResource.h
+++ b/Source/core/loader/cache/CachedResource.h
@@ -41,7 +41,7 @@
 class CachedMetadata;
 class CachedResourceClient;
 class CachedResourceHandleBase;
-class CachedResourceLoader;
+class ResourceFetcher;
 class InspectorResource;
 class PurgeableBuffer;
 class ResourceLoader;
@@ -83,7 +83,7 @@
     CachedResource(const ResourceRequest&, Type);
     virtual ~CachedResource();
 
-    virtual void load(CachedResourceLoader*, const ResourceLoaderOptions&);
+    virtual void load(ResourceFetcher*, const ResourceLoaderOptions&);
 
     virtual void setEncoding(const String&) { }
     virtual String encoding() const { return String(); }
diff --git a/Source/core/loader/cache/CachedScript.h b/Source/core/loader/cache/CachedScript.h
index 5a23a6a..46ea0d4 100644
--- a/Source/core/loader/cache/CachedScript.h
+++ b/Source/core/loader/cache/CachedScript.h
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-    class CachedResourceLoader;
+class ResourceFetcher;
     class TextResourceDecoder;
 
     class CachedScript : public CachedResource {
diff --git a/Source/core/loader/cache/CachedXSLStyleSheet.h b/Source/core/loader/cache/CachedXSLStyleSheet.h
index 74480c6..f5a1f45 100644
--- a/Source/core/loader/cache/CachedXSLStyleSheet.h
+++ b/Source/core/loader/cache/CachedXSLStyleSheet.h
@@ -30,7 +30,7 @@
 
 namespace WebCore {
 
-    class CachedResourceLoader;
+class ResourceFetcher;
     class TextResourceDecoder;
 
     class CachedXSLStyleSheet : public CachedResource {
diff --git a/Source/core/loader/cache/CachedResourceRequest.cpp b/Source/core/loader/cache/FetchRequest.cpp
similarity index 73%
rename from Source/core/loader/cache/CachedResourceRequest.cpp
rename to Source/core/loader/cache/FetchRequest.cpp
index 9162ff5..154d544 100644
--- a/Source/core/loader/cache/CachedResourceRequest.cpp
+++ b/Source/core/loader/cache/FetchRequest.cpp
@@ -24,19 +24,19 @@
  */
 
 #include "config.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
 
 #include "core/dom/Element.h"
 #include "core/loader/CrossOriginAccessControl.h"
 #include "core/loader/cache/CachedResourceInitiatorInfo.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 
 namespace WebCore {
 
-CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, const AtomicString& initiator, const String& charset, ResourceLoadPriority priority)
+FetchRequest::FetchRequest(const ResourceRequest& resourceRequest, const AtomicString& initiator, const String& charset, ResourceLoadPriority priority)
     : m_resourceRequest(resourceRequest)
     , m_charset(charset)
-    , m_options(CachedResourceLoader::defaultCachedResourceOptions())
+    , m_options(ResourceFetcher::defaultCachedResourceOptions())
     , m_priority(priority)
     , m_forPreload(false)
     , m_defer(NoDefer)
@@ -44,7 +44,7 @@
     m_options.initiatorInfo.name = initiator;
 }
 
-CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, const AtomicString& initiator, const ResourceLoaderOptions& options)
+FetchRequest::FetchRequest(const ResourceRequest& resourceRequest, const AtomicString& initiator, const ResourceLoaderOptions& options)
     : m_resourceRequest(resourceRequest)
     , m_options(options)
     , m_priority(ResourceLoadPriorityUnresolved)
@@ -54,9 +54,9 @@
     m_options.initiatorInfo.name = initiator;
 }
 
-CachedResourceRequest::CachedResourceRequest(const ResourceRequest& resourceRequest, const CachedResourceInitiatorInfo& initiator)
+FetchRequest::FetchRequest(const ResourceRequest& resourceRequest, const CachedResourceInitiatorInfo& initiator)
     : m_resourceRequest(resourceRequest)
-    , m_options(CachedResourceLoader::defaultCachedResourceOptions())
+    , m_options(ResourceFetcher::defaultCachedResourceOptions())
     , m_priority(ResourceLoadPriorityUnresolved)
     , m_forPreload(false)
     , m_defer(NoDefer)
@@ -64,11 +64,11 @@
     m_options.initiatorInfo = initiator;
 }
 
-CachedResourceRequest::~CachedResourceRequest()
+FetchRequest::~FetchRequest()
 {
 }
 
-void CachedResourceRequest::setPotentiallyCrossOriginEnabled(SecurityOrigin* origin, StoredCredentials allowCredentials)
+void FetchRequest::setPotentiallyCrossOriginEnabled(SecurityOrigin* origin, StoredCredentials allowCredentials)
 {
     updateRequestForAccessControl(m_resourceRequest, origin, allowCredentials);
     ASSERT(m_options.requestOriginPolicy == UseDefaultOriginRestrictionsForType); // Allows only tightening from the default value.
diff --git a/Source/core/loader/cache/CachedResourceRequest.h b/Source/core/loader/cache/FetchRequest.h
similarity index 85%
rename from Source/core/loader/cache/CachedResourceRequest.h
rename to Source/core/loader/cache/FetchRequest.h
index fbfcf04..600b854 100644
--- a/Source/core/loader/cache/CachedResourceRequest.h
+++ b/Source/core/loader/cache/FetchRequest.h
@@ -23,8 +23,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef CachedResourceRequest_h
-#define CachedResourceRequest_h
+#ifndef FetchRequest_h
+#define FetchRequest_h
 
 #include "core/dom/Element.h"
 #include "core/loader/ResourceLoaderOptions.h"
@@ -36,14 +36,14 @@
 namespace WebCore {
 class SecurityOrigin;
 
-class CachedResourceRequest {
+class FetchRequest {
 public:
     enum DeferOption { NoDefer, DeferredByClient };
 
-    explicit CachedResourceRequest(const ResourceRequest&, const AtomicString& initiator, const String& charset = String(), ResourceLoadPriority = ResourceLoadPriorityUnresolved);
-    CachedResourceRequest(const ResourceRequest&, const AtomicString& initiator, const ResourceLoaderOptions&);
-    CachedResourceRequest(const ResourceRequest&, const CachedResourceInitiatorInfo&);
-    ~CachedResourceRequest();
+    explicit FetchRequest(const ResourceRequest&, const AtomicString& initiator, const String& charset = String(), ResourceLoadPriority = ResourceLoadPriorityUnresolved);
+    FetchRequest(const ResourceRequest&, const AtomicString& initiator, const ResourceLoaderOptions&);
+    FetchRequest(const ResourceRequest&, const CachedResourceInitiatorInfo&);
+    ~FetchRequest();
 
     ResourceRequest& mutableResourceRequest() { return m_resourceRequest; }
     const ResourceRequest& resourceRequest() const { return m_resourceRequest; }
diff --git a/Source/core/loader/cache/MemoryCache.h b/Source/core/loader/cache/MemoryCache.h
index 3f45682..8da416c 100644
--- a/Source/core/loader/cache/MemoryCache.h
+++ b/Source/core/loader/cache/MemoryCache.h
@@ -35,7 +35,7 @@
 
 class CachedCSSStyleSheet;
 class CachedResource;
-class CachedResourceLoader;
+class ResourceFetcher;
 class KURL;
 class ScriptExecutionContext;
 class SecurityOrigin;
diff --git a/Source/core/loader/cache/CachedResourceLoader.cpp b/Source/core/loader/cache/ResourceFetcher.cpp
similarity index 82%
rename from Source/core/loader/cache/CachedResourceLoader.cpp
rename to Source/core/loader/cache/ResourceFetcher.cpp
index d06f008..fb388be 100644
--- a/Source/core/loader/cache/CachedResourceLoader.cpp
+++ b/Source/core/loader/cache/ResourceFetcher.cpp
@@ -25,7 +25,7 @@
 */
 
 #include "config.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 
 #include "bindings/v8/ScriptController.h"
 #include "core/dom/Document.h"
@@ -43,11 +43,11 @@
 #include "core/loader/cache/CachedFont.h"
 #include "core/loader/cache/CachedImage.h"
 #include "core/loader/cache/CachedRawResource.h"
-#include "core/loader/cache/CachedResourceRequest.h"
 #include "core/loader/cache/CachedScript.h"
 #include "core/loader/cache/CachedShader.h"
 #include "core/loader/cache/CachedTextTrack.h"
 #include "core/loader/cache/CachedXSLStyleSheet.h"
+#include "core/loader/cache/FetchRequest.h"
 #include "core/loader/cache/MemoryCache.h"
 #include "core/page/ContentSecurityPolicy.h"
 #include "core/page/DOMWindow.h"
@@ -98,7 +98,7 @@
     return 0;
 }
 
-static ResourceLoadPriority loadPriority(CachedResource::Type type, const CachedResourceRequest& request)
+static ResourceLoadPriority loadPriority(CachedResource::Type type, const FetchRequest& request)
 {
     if (request.priority() != ResourceLoadPriorityUnresolved)
         return request.priority();
@@ -152,46 +152,46 @@
     return resource;
 }
 
-CachedResourceLoader::CachedResourceLoader(DocumentLoader* documentLoader)
+ResourceFetcher::ResourceFetcher(DocumentLoader* documentLoader)
     : m_document(0)
     , m_documentLoader(documentLoader)
     , m_requestCount(0)
-    , m_garbageCollectDocumentResourcesTimer(this, &CachedResourceLoader::garbageCollectDocumentResourcesTimerFired)
+    , m_garbageCollectDocumentResourcesTimer(this, &ResourceFetcher::garbageCollectDocumentResourcesTimerFired)
     , m_autoLoadImages(true)
     , m_imagesEnabled(true)
     , m_allowStaleResources(false)
 {
 }
 
-CachedResourceLoader::~CachedResourceLoader()
+ResourceFetcher::~ResourceFetcher()
 {
     m_documentLoader = 0;
     m_document = 0;
 
     clearPreloads();
 
-    // Make sure no requests still point to this CachedResourceLoader
-    ASSERT(m_requestCount == 0);
+    // Make sure no requests still point to this ResourceFetcher
+    ASSERT(!m_requestCount);
 }
 
-CachedResource* CachedResourceLoader::cachedResource(const String& resourceURL) const 
+CachedResource* ResourceFetcher::cachedResource(const String& resourceURL) const
 {
     KURL url = m_document->completeURL(resourceURL);
-    return cachedResource(url); 
+    return cachedResource(url);
 }
 
-CachedResource* CachedResourceLoader::cachedResource(const KURL& resourceURL) const
+CachedResource* ResourceFetcher::cachedResource(const KURL& resourceURL) const
 {
     KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(resourceURL);
-    return m_documentResources.get(url).get(); 
+    return m_documentResources.get(url).get();
 }
 
-Frame* CachedResourceLoader::frame() const
+Frame* ResourceFetcher::frame() const
 {
     return m_documentLoader ? m_documentLoader->frame() : 0;
 }
 
-CachedResourceHandle<CachedImage> CachedResourceLoader::requestImage(CachedResourceRequest& request)
+CachedResourceHandle<CachedImage> ResourceFetcher::requestImage(FetchRequest& request)
 {
     if (Frame* f = frame()) {
         if (f->loader()->pageDismissalEventBeingDispatched() != FrameLoader::NoDismissal) {
@@ -205,11 +205,11 @@
     if (request.resourceRequest().url().protocolIsData())
         preCacheDataURIImage(request);
 
-    request.setDefer(clientDefersImage(request.resourceRequest().url()) ? CachedResourceRequest::DeferredByClient : CachedResourceRequest::NoDefer);
+    request.setDefer(clientDefersImage(request.resourceRequest().url()) ? FetchRequest::DeferredByClient : FetchRequest::NoDefer);
     return static_cast<CachedImage*>(requestResource(CachedResource::ImageResource, request).get());
 }
 
-void CachedResourceLoader::preCacheDataURIImage(const CachedResourceRequest& request)
+void ResourceFetcher::preCacheDataURIImage(const FetchRequest& request)
 {
     const KURL& url = request.resourceRequest().url();
     ASSERT(url.protocolIsData());
@@ -221,27 +221,27 @@
         memoryCache()->add(resource);
 }
 
-CachedResourceHandle<CachedFont> CachedResourceLoader::requestFont(CachedResourceRequest& request)
+CachedResourceHandle<CachedFont> ResourceFetcher::requestFont(FetchRequest& request)
 {
     return static_cast<CachedFont*>(requestResource(CachedResource::FontResource, request).get());
 }
 
-CachedResourceHandle<CachedTextTrack> CachedResourceLoader::requestTextTrack(CachedResourceRequest& request)
+CachedResourceHandle<CachedTextTrack> ResourceFetcher::requestTextTrack(FetchRequest& request)
 {
     return static_cast<CachedTextTrack*>(requestResource(CachedResource::TextTrackResource, request).get());
 }
 
-CachedResourceHandle<CachedShader> CachedResourceLoader::requestShader(CachedResourceRequest& request)
+CachedResourceHandle<CachedShader> ResourceFetcher::requestShader(FetchRequest& request)
 {
     return static_cast<CachedShader*>(requestResource(CachedResource::ShaderResource, request).get());
 }
 
-CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestCSSStyleSheet(CachedResourceRequest& request)
+CachedResourceHandle<CachedCSSStyleSheet> ResourceFetcher::requestCSSStyleSheet(FetchRequest& request)
 {
     return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request).get());
 }
 
-CachedResourceHandle<CachedCSSStyleSheet> CachedResourceLoader::requestUserCSSStyleSheet(CachedResourceRequest& request)
+CachedResourceHandle<CachedCSSStyleSheet> ResourceFetcher::requestUserCSSStyleSheet(FetchRequest& request)
 {
     KURL url = MemoryCache::removeFragmentIdentifierIfNeeded(request.resourceRequest().url());
 
@@ -255,39 +255,39 @@
     return static_cast<CachedCSSStyleSheet*>(requestResource(CachedResource::CSSStyleSheet, request).get());
 }
 
-CachedResourceHandle<CachedScript> CachedResourceLoader::requestScript(CachedResourceRequest& request)
+CachedResourceHandle<CachedScript> ResourceFetcher::requestScript(FetchRequest& request)
 {
     return static_cast<CachedScript*>(requestResource(CachedResource::Script, request).get());
 }
 
-CachedResourceHandle<CachedXSLStyleSheet> CachedResourceLoader::requestXSLStyleSheet(CachedResourceRequest& request)
+CachedResourceHandle<CachedXSLStyleSheet> ResourceFetcher::requestXSLStyleSheet(FetchRequest& request)
 {
     return static_cast<CachedXSLStyleSheet*>(requestResource(CachedResource::XSLStyleSheet, request).get());
 }
 
-CachedResourceHandle<CachedDocument> CachedResourceLoader::requestSVGDocument(CachedResourceRequest& request)
+CachedResourceHandle<CachedDocument> ResourceFetcher::requestSVGDocument(FetchRequest& request)
 {
     return static_cast<CachedDocument*>(requestResource(CachedResource::SVGDocumentResource, request).get());
 }
 
-CachedResourceHandle<CachedResource> CachedResourceLoader::requestLinkResource(CachedResource::Type type, CachedResourceRequest& request)
+CachedResourceHandle<CachedResource> ResourceFetcher::requestLinkResource(CachedResource::Type type, FetchRequest& request)
 {
     ASSERT(frame());
     ASSERT(type == CachedResource::LinkPrefetch || type == CachedResource::LinkSubresource);
     return requestResource(type, request);
 }
 
-CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestRawResource(CachedResourceRequest& request)
+CachedResourceHandle<CachedRawResource> ResourceFetcher::requestRawResource(FetchRequest& request)
 {
     return static_cast<CachedRawResource*>(requestResource(CachedResource::RawResource, request).get());
 }
 
-CachedResourceHandle<CachedRawResource> CachedResourceLoader::requestMainResource(CachedResourceRequest& request)
+CachedResourceHandle<CachedRawResource> ResourceFetcher::requestMainResource(FetchRequest& request)
 {
     return static_cast<CachedRawResource*>(requestResource(CachedResource::MainResource, request).get());
 }
 
-bool CachedResourceLoader::checkInsecureContent(CachedResource::Type type, const KURL& url) const
+bool ResourceFetcher::checkInsecureContent(CachedResource::Type type, const KURL& url) const
 {
     switch (type) {
     case CachedResource::Script:
@@ -296,9 +296,11 @@
     case CachedResource::CSSStyleSheet:
         // These resource can inject script into the current document (Script,
         // XSL) or exfiltrate the content of the current document (CSS).
-        if (Frame* f = frame())
+        if (Frame* f = frame()) {
             if (!f->loader()->mixedContentChecker()->canRunInsecureContent(m_document->securityOrigin(), url))
                 return false;
+        }
+
         break;
     case CachedResource::TextTrackResource:
     case CachedResource::ShaderResource:
@@ -322,19 +324,19 @@
     return true;
 }
 
-bool CachedResourceLoader::canRequest(CachedResource::Type type, const KURL& url, const ResourceLoaderOptions& options, bool forPreload)
+bool ResourceFetcher::canRequest(CachedResource::Type type, const KURL& url, const ResourceLoaderOptions& options, bool forPreload)
 {
     if (document() && !document()->securityOrigin()->canDisplay(url)) {
         if (!forPreload)
             FrameLoader::reportLocalLoadFailed(frame(), url.elidedString());
-        LOG(ResourceLoading, "CachedResourceLoader::requestResource URL was not allowed by SecurityOrigin::canDisplay");
+        LOG(ResourceLoading, "ResourceFetcher::requestResource URL was not allowed by SecurityOrigin::canDisplay");
         return 0;
     }
 
     // FIXME: Convert this to check the isolated world's Content Security Policy once webkit.org/b/104520 is solved.
     bool shouldBypassMainWorldContentSecurityPolicy = (frame() && frame()->script()->shouldBypassMainWorldContentSecurityPolicy()) || (options.contentSecurityPolicyOption == DoNotCheckContentSecurityPolicy);
 
-    // Some types of resources can be loaded only from the same origin.  Other
+    // Some types of resources can be loaded only from the same origin. Other
     // types of resources, like Images, Scripts, and CSS, can be loaded from
     // any URL.
     switch (type) {
@@ -421,7 +423,7 @@
     return true;
 }
 
-bool CachedResourceLoader::canAccess(CachedResource* resource)
+bool ResourceFetcher::canAccess(CachedResource* resource)
 {
     // Redirects can change the response URL different from one of request.
     if (!canRequest(resource->type(), resource->response().url(), resource->options(), false))
@@ -447,12 +449,12 @@
     return true;
 }
 
-CachedResourceHandle<CachedResource> CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest& request)
+CachedResourceHandle<CachedResource> ResourceFetcher::requestResource(CachedResource::Type type, FetchRequest& request)
 {
     KURL url = request.resourceRequest().url();
-    
-    LOG(ResourceLoading, "CachedResourceLoader::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.elidedString().latin1().data(), request.charset().latin1().data(), request.priority(), request.forPreload());
-    
+
+    LOG(ResourceLoading, "ResourceFetcher::requestResource '%s', charset '%s', priority=%d, forPreload=%u", url.elidedString().latin1().data(), request.charset().latin1().data(), request.priority(), request.forPreload());
+
     // If only the fragment identifiers differ, it is the same resource.
     url = MemoryCache::removeFragmentIdentifierIfNeeded(url);
 
@@ -499,7 +501,7 @@
         }
     }
 
-    if ((policy != Use || resource->stillNeedsLoad()) && CachedResourceRequest::NoDefer == request.defer()) {
+    if ((policy != Use || resource->stillNeedsLoad()) && FetchRequest::NoDefer == request.defer()) {
         if (!frame())
             return 0;
 
@@ -541,9 +543,9 @@
     return resource;
 }
 
-void CachedResourceLoader::determineTargetType(ResourceRequest& request, CachedResource::Type type)
+void ResourceFetcher::determineTargetType(ResourceRequest& request, CachedResource::Type type)
 {
-   ResourceRequest::TargetType targetType;
+    ResourceRequest::TargetType targetType;
 
     switch (type) {
     case CachedResource::MainResource:
@@ -589,7 +591,7 @@
     request.setTargetType(targetType);
 }
 
-ResourceRequestCachePolicy CachedResourceLoader::resourceRequestCachePolicy(const ResourceRequest& request, CachedResource::Type type)
+ResourceRequestCachePolicy ResourceFetcher::resourceRequestCachePolicy(const ResourceRequest& request, CachedResource::Type type)
 {
     if (type == CachedResource::MainResource) {
         FrameLoadType frameLoadType = frame()->loader()->loadType();
@@ -617,7 +619,7 @@
     return UseProtocolCachePolicy;
 }
 
-void CachedResourceLoader::addAdditionalRequestHeaders(ResourceRequest& request, CachedResource::Type type)
+void ResourceFetcher::addAdditionalRequestHeaders(ResourceRequest& request, CachedResource::Type type)
 {
     if (!frame())
         return;
@@ -655,7 +657,7 @@
     frameLoader->addExtraFieldsToRequest(request);
 }
 
-CachedResourceHandle<CachedResource> CachedResourceLoader::revalidateResource(const CachedResourceRequest& request, CachedResource* resource)
+CachedResourceHandle<CachedResource> ResourceFetcher::revalidateResource(const FetchRequest& request, CachedResource* resource)
 {
     ASSERT(resource);
     ASSERT(resource->inCache());
@@ -679,17 +681,17 @@
     }
 
     CachedResourceHandle<CachedResource> newResource = createResource(resource->type(), revalidatingRequest, resource->encoding());
-    
+
     LOG(ResourceLoading, "Resource %p created to revalidate %p", newResource.get(), resource);
     newResource->setResourceToRevalidate(resource);
-    
+
     memoryCache()->remove(resource);
     memoryCache()->add(newResource.get());
     storeResourceTimingInitiatorInformation(newResource, request);
     return newResource;
 }
 
-CachedResourceHandle<CachedResource> CachedResourceLoader::loadResource(CachedResource::Type type, CachedResourceRequest& request, const String& charset)
+CachedResourceHandle<CachedResource> ResourceFetcher::loadResource(CachedResource::Type type, FetchRequest& request, const String& charset)
 {
     ASSERT(!memoryCache()->resourceForURL(request.resourceRequest().url()));
 
@@ -703,7 +705,7 @@
     return resource;
 }
 
-void CachedResourceLoader::storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>& resource, const CachedResourceRequest& request)
+void ResourceFetcher::storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>& resource, const FetchRequest& request)
 {
     if (request.options().requestInitiatorContext != DocumentContext)
         return;
@@ -722,7 +724,7 @@
     }
 }
 
-CachedResourceLoader::RevalidationPolicy CachedResourceLoader::determineRevalidationPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption defer) const
+ResourceFetcher::RevalidationPolicy ResourceFetcher::determineRevalidationPolicy(CachedResource::Type type, ResourceRequest& request, bool forPreload, CachedResource* existingResource, FetchRequest::DeferOption defer) const
 {
     if (!existingResource)
         return Load;
@@ -733,13 +735,13 @@
 
     // If the same URL has been loaded as a different type, we need to reload.
     if (existingResource->type() != type) {
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to type mismatch.");
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicy reloading due to type mismatch.");
         return Reload;
     }
 
     // Do not load from cache if images are not enabled. The load for this image will be blocked
     // in CachedImage::load.
-    if (CachedResourceRequest::DeferredByClient == defer)
+    if (FetchRequest::DeferredByClient == defer)
         return Reload;
 
     // Always use data uris.
@@ -759,18 +761,18 @@
     // Don't reload resources while pasting.
     if (m_allowStaleResources)
         return Use;
-    
+
     // Alwaus use preloads.
     if (existingResource->isPreloaded())
         return Use;
-    
+
     // CachePolicyHistoryBuffer uses the cache no matter what.
     if (cachePolicy(type) == CachePolicyHistoryBuffer)
         return Use;
 
     // Don't reuse resources with Cache-control: no-store.
     if (existingResource->response().cacheControlContainsNoStore()) {
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to Cache-control: no-store.");
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicy reloading due to Cache-control: no-store.");
         return Reload;
     }
 
@@ -781,7 +783,7 @@
     // "Access-Control-Allow-Origin: *" all the time, but some of the
     // client's requests are made without CORS and some with.
     if (existingResource->resourceRequest().allowCookies() != request.allowCookies()) {
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to difference in credentials settings.");
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicy reloading due to difference in credentials settings.");
         return Reload;
     }
 
@@ -791,16 +793,16 @@
 
     // CachePolicyReload always reloads
     if (cachePolicy(type) == CachePolicyReload) {
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to CachePolicyReload.");
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicy reloading due to CachePolicyReload.");
         return Reload;
     }
-    
+
     // We'll try to reload the resource if it failed last time.
     if (existingResource->errorOccurred()) {
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicye reloading due to resource being in the error state");
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicye reloading due to resource being in the error state");
         return Reload;
     }
-    
+
     // For resources that are not yet loaded we ignore the cache policy.
     if (existingResource->isLoading())
         return Use;
@@ -810,16 +812,16 @@
         // See if the resource has usable ETag or Last-modified headers.
         if (existingResource->canUseCacheValidator())
             return Revalidate;
-        
+
         // No, must reload.
-        LOG(ResourceLoading, "CachedResourceLoader::determineRevalidationPolicy reloading due to missing cache validators.");            
+        LOG(ResourceLoading, "ResourceFetcher::determineRevalidationPolicy reloading due to missing cache validators.");
         return Reload;
     }
 
     return Use;
 }
 
-void CachedResourceLoader::printAccessDeniedMessage(const KURL& url) const
+void ResourceFetcher::printAccessDeniedMessage(const KURL& url) const
 {
     if (url.isNull())
         return;
@@ -836,7 +838,7 @@
     frame()->document()->addConsoleMessage(SecurityMessageSource, ErrorMessageLevel, message);
 }
 
-void CachedResourceLoader::setAutoLoadImages(bool enable)
+void ResourceFetcher::setAutoLoadImages(bool enable)
 {
     if (enable == m_autoLoadImages)
         return;
@@ -849,7 +851,7 @@
     reloadImagesIfNotDeferred();
 }
 
-void CachedResourceLoader::setImagesEnabled(bool enable)
+void ResourceFetcher::setImagesEnabled(bool enable)
 {
     if (enable == m_imagesEnabled)
         return;
@@ -862,17 +864,17 @@
     reloadImagesIfNotDeferred();
 }
 
-bool CachedResourceLoader::clientDefersImage(const KURL& url) const
+bool ResourceFetcher::clientDefersImage(const KURL& url) const
 {
     return frame() && !frame()->loader()->client()->allowImage(m_imagesEnabled, url);
 }
 
-bool CachedResourceLoader::shouldDeferImageLoad(const KURL& url) const
+bool ResourceFetcher::shouldDeferImageLoad(const KURL& url) const
 {
     return clientDefersImage(url) || !m_autoLoadImages;
 }
 
-void CachedResourceLoader::reloadImagesIfNotDeferred()
+void ResourceFetcher::reloadImagesIfNotDeferred()
 {
     DocumentResourceMap::iterator end = m_documentResources.end();
     for (DocumentResourceMap::iterator it = m_documentResources.begin(); it != end; ++it) {
@@ -882,27 +884,27 @@
     }
 }
 
-CachePolicy CachedResourceLoader::cachePolicy(CachedResource::Type type) const
+CachePolicy ResourceFetcher::cachePolicy(CachedResource::Type type) const
 {
     if (!frame())
         return CachePolicyVerify;
 
     if (type != CachedResource::MainResource)
         return frame()->loader()->subresourceCachePolicy();
-    
+
     if (frame()->loader()->loadType() == FrameLoadTypeReloadFromOrigin || frame()->loader()->loadType() == FrameLoadTypeReload)
         return CachePolicyReload;
     return CachePolicyVerify;
 }
 
-void CachedResourceLoader::redirectReceived(CachedResource* resource, const ResourceResponse& redirectResponse)
+void ResourceFetcher::redirectReceived(CachedResource* resource, const ResourceResponse& redirectResponse)
 {
     ResourceTimingInfoMap::iterator it = m_resourceTimingInfoMap.find(resource);
     if (it != m_resourceTimingInfoMap.end())
         it->value->addRedirect(redirectResponse);
 }
 
-void CachedResourceLoader::didLoadResource(CachedResource* resource)
+void ResourceFetcher::didLoadResource(CachedResource* resource)
 {
     RefPtr<DocumentLoader> protectDocumentLoader(m_documentLoader);
     RefPtr<Document> protectDocument(m_document);
@@ -938,13 +940,13 @@
 // bookkeeping on CachedResources, so instead pseudo-GC them -- when the
 // reference count reaches 1, m_documentResources is the only reference, so
 // remove it from the map.
-void CachedResourceLoader::garbageCollectDocumentResourcesTimerFired(Timer<CachedResourceLoader>* timer)
+void ResourceFetcher::garbageCollectDocumentResourcesTimerFired(Timer<ResourceFetcher>* timer)
 {
     ASSERT_UNUSED(timer, timer == &m_garbageCollectDocumentResourcesTimer);
     garbageCollectDocumentResources();
 }
 
-void CachedResourceLoader::garbageCollectDocumentResources()
+void ResourceFetcher::garbageCollectDocumentResources()
 {
     typedef Vector<String, 10> StringVector;
     StringVector resourcesToDelete;
@@ -958,12 +960,12 @@
         m_documentResources.remove(*it);
 }
 
-void CachedResourceLoader::performPostLoadActions()
+void ResourceFetcher::performPostLoadActions()
 {
     checkForPendingPreloads();
 }
 
-void CachedResourceLoader::notifyLoadedFromMemoryCache(CachedResource* resource)
+void ResourceFetcher::notifyLoadedFromMemoryCache(CachedResource* resource)
 {
     if (!frame() || resource->status() != CachedResource::Cached || m_validatedURLs.contains(resource->url()))
         return;
@@ -972,7 +974,7 @@
     frame()->loader()->loadedResourceFromMemoryCache(resource);
 }
 
-void CachedResourceLoader::incrementRequestCount(const CachedResource* res)
+void ResourceFetcher::incrementRequestCount(const CachedResource* res)
 {
     if (res->ignoreForRequestCount())
         return;
@@ -980,7 +982,7 @@
     ++m_requestCount;
 }
 
-void CachedResourceLoader::decrementRequestCount(const CachedResource* res)
+void ResourceFetcher::decrementRequestCount(const CachedResource* res)
 {
     if (res->ignoreForRequestCount())
         return;
@@ -989,7 +991,7 @@
     ASSERT(m_requestCount > -1);
 }
 
-void CachedResourceLoader::preload(CachedResource::Type type, CachedResourceRequest& request, const String& charset)
+void ResourceFetcher::preload(CachedResource::Type type, FetchRequest& request, const String& charset)
 {
     bool delaySubresourceLoad = true;
     delaySubresourceLoad = false;
@@ -1007,7 +1009,7 @@
     requestPreload(type, request, charset);
 }
 
-void CachedResourceLoader::checkForPendingPreloads() 
+void ResourceFetcher::checkForPendingPreloads()
 {
     if (m_pendingPreloads.isEmpty() || !m_document->body() || !m_document->body()->renderer())
         return;
@@ -1020,7 +1022,7 @@
     m_pendingPreloads.clear();
 }
 
-void CachedResourceLoader::requestPreload(CachedResource::Type type, CachedResourceRequest& request, const String& charset)
+void ResourceFetcher::requestPreload(CachedResource::Type type, FetchRequest& request, const String& charset)
 {
     String encoding;
     if (type == CachedResource::Script || type == CachedResource::CSSStyleSheet)
@@ -1043,7 +1045,7 @@
 #endif
 }
 
-bool CachedResourceLoader::isPreloaded(const String& urlString) const
+bool ResourceFetcher::isPreloaded(const String& urlString) const
 {
     const KURL& url = m_document->completeURL(urlString);
 
@@ -1065,7 +1067,7 @@
     return false;
 }
 
-void CachedResourceLoader::clearPreloads()
+void ResourceFetcher::clearPreloads()
 {
 #if PRELOAD_DEBUG
     printPreloadStats();
@@ -1084,17 +1086,17 @@
     m_preloads.clear();
 }
 
-void CachedResourceLoader::clearPendingPreloads()
+void ResourceFetcher::clearPendingPreloads()
 {
     m_pendingPreloads.clear();
 }
 
-inline FrameLoader* CachedResourceLoader::frameLoader()
+inline FrameLoader* ResourceFetcher::frameLoader()
 {
     return frame() ? frame()->loader() : 0;
 }
 
-void CachedResourceLoader::didFinishLoading(const CachedResource* resource, double finishTime, const ResourceLoaderOptions& options)
+void ResourceFetcher::didFinishLoading(const CachedResource* resource, double finishTime, const ResourceLoaderOptions& options)
 {
     if (options.sendLoadCallbacks != SendCallbacks)
         return;
@@ -1102,13 +1104,13 @@
         loader->notifier()->dispatchDidFinishLoading(m_documentLoader, resource->identifier(), finishTime);
 }
 
-void CachedResourceLoader::didChangeLoadingPriority(const CachedResource* resource, ResourceLoadPriority loadPriority)
+void ResourceFetcher::didChangeLoadingPriority(const CachedResource* resource, ResourceLoadPriority loadPriority)
 {
     if (FrameLoader* loader = frameLoader())
         loader->client()->dispatchDidChangeResourcePriority(resource->identifier(), loadPriority);
 }
 
-void CachedResourceLoader::didFailLoading(const CachedResource* resource, const ResourceError& error, const ResourceLoaderOptions& options)
+void ResourceFetcher::didFailLoading(const CachedResource* resource, const ResourceError& error, const ResourceLoaderOptions& options)
 {
     if (options.sendLoadCallbacks != SendCallbacks)
         return;
@@ -1116,7 +1118,7 @@
         loader->notifier()->dispatchDidFail(m_documentLoader, resource->identifier(), error);
 }
 
-void CachedResourceLoader::willSendRequest(const CachedResource* resource, ResourceRequest& request, const ResourceResponse& redirectResponse, const ResourceLoaderOptions& options)
+void ResourceFetcher::willSendRequest(const CachedResource* resource, ResourceRequest& request, const ResourceResponse& redirectResponse, const ResourceLoaderOptions& options)
 {
     if (options.sendLoadCallbacks == SendCallbacks) {
         if (FrameLoader* loader = frameLoader())
@@ -1126,7 +1128,7 @@
     }
 }
 
-void CachedResourceLoader::didReceiveResponse(const CachedResource* resource, const ResourceResponse& response, const ResourceLoaderOptions& options)
+void ResourceFetcher::didReceiveResponse(const CachedResource* resource, const ResourceResponse& response, const ResourceLoaderOptions& options)
 {
     if (options.sendLoadCallbacks != SendCallbacks)
         return;
@@ -1134,7 +1136,7 @@
         loader->notifier()->dispatchDidReceiveResponse(m_documentLoader, resource->identifier(), response);
 }
 
-void CachedResourceLoader::didReceiveData(const CachedResource* resource, const char* data, int dataLength, int encodedDataLength, const ResourceLoaderOptions& options)
+void ResourceFetcher::didReceiveData(const CachedResource* resource, const char* data, int dataLength, int encodedDataLength, const ResourceLoaderOptions& options)
 {
     if (options.sendLoadCallbacks != SendCallbacks)
         return;
@@ -1142,43 +1144,43 @@
         loader->notifier()->dispatchDidReceiveData(m_documentLoader, resource->identifier(), data, dataLength, encodedDataLength);
 }
 
-void CachedResourceLoader::subresourceLoaderFinishedLoadingOnePart(ResourceLoader* loader)
+void ResourceFetcher::subresourceLoaderFinishedLoadingOnePart(ResourceLoader* loader)
 {
     if (m_documentLoader)
         m_documentLoader->subresourceLoaderFinishedLoadingOnePart(loader);
 }
 
-void CachedResourceLoader::didInitializeResourceLoader(ResourceLoader* loader)
+void ResourceFetcher::didInitializeResourceLoader(ResourceLoader* loader)
 {
     if (m_documentLoader)
         m_documentLoader->addResourceLoader(loader);
 }
 
-void CachedResourceLoader::willTerminateResourceLoader(ResourceLoader* loader)
+void ResourceFetcher::willTerminateResourceLoader(ResourceLoader* loader)
 {
     if (m_documentLoader)
         m_documentLoader->removeResourceLoader(loader);
 }
 
-void CachedResourceLoader::willStartLoadingResource(ResourceRequest& request)
+void ResourceFetcher::willStartLoadingResource(ResourceRequest& request)
 {
     if (m_documentLoader)
         m_documentLoader->applicationCacheHost()->willStartLoadingResource(request);
 }
 
-bool CachedResourceLoader::defersLoading() const
+bool ResourceFetcher::defersLoading() const
 {
     if (Frame* frame = this->frame())
         return frame->page()->defersLoading();
     return false;
 }
 
-bool CachedResourceLoader::isLoadedBy(ResourceLoaderHost* possibleOwner) const
+bool ResourceFetcher::isLoadedBy(ResourceLoaderHost* possibleOwner) const
 {
     return this == possibleOwner;
 }
 
-bool CachedResourceLoader::shouldRequest(CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
+bool ResourceFetcher::shouldRequest(CachedResource* resource, const ResourceRequest& request, const ResourceLoaderOptions& options)
 {
     if (!canRequest(resource->type(), request.url(), options))
         return false;
@@ -1187,24 +1189,24 @@
     return true;
 }
 
-Frame* CachedResourceLoader::inspectedFrame() const
+Frame* ResourceFetcher::inspectedFrame() const
 {
     // FIXME: return frame of master document for imported documents.
     return m_documentLoader ? m_documentLoader->frame() : 0;
 }
 
-void CachedResourceLoader::refResourceLoaderHost()
+void ResourceFetcher::refResourceLoaderHost()
 {
     ref();
 }
 
-void CachedResourceLoader::derefResourceLoaderHost()
+void ResourceFetcher::derefResourceLoaderHost()
 {
     deref();
 }
 
 #if PRELOAD_DEBUG
-void CachedResourceLoader::printPreloadStats()
+void ResourceFetcher::printPreloadStats()
 {
     unsigned scripts = 0;
     unsigned scriptMisses = 0;
@@ -1221,7 +1223,7 @@
             printf("HIT COMPLETE PRELOAD %s\n", res->url().latin1().data());
         else if (res->preloadResult() == CachedResource::PreloadReferencedWhileLoading)
             printf("HIT LOADING PRELOAD %s\n", res->url().latin1().data());
-        
+
         if (res->type() == CachedResource::Script) {
             scripts++;
             if (res->preloadResult() < CachedResource::PreloadReferencedWhileLoading)
@@ -1235,14 +1237,14 @@
             if (res->preloadResult() < CachedResource::PreloadReferencedWhileLoading)
                 imageMisses++;
         }
-        
+
         if (res->errorOccurred())
             memoryCache()->remove(res);
-        
+
         res->decreasePreloadCount();
     }
     m_preloads.clear();
-    
+
     if (scripts)
         printf("SCRIPTS: %d (%d hits, hit rate %d%%)\n", scripts, scripts - scriptMisses, (scripts - scriptMisses) * 100 / scripts);
     if (stylesheets)
@@ -1252,7 +1254,7 @@
 }
 #endif
 
-const ResourceLoaderOptions& CachedResourceLoader::defaultCachedResourceOptions()
+const ResourceLoaderOptions& ResourceFetcher::defaultCachedResourceOptions()
 {
     DEFINE_STATIC_LOCAL(ResourceLoaderOptions, options, (SendCallbacks, SniffContent, BufferData, AllowStoredCredentials, ClientRequestedCredentials, AskClientForCrossOriginCredentials, DoSecurityCheck, CheckContentSecurityPolicy, UseDefaultOriginRestrictionsForType, DocumentContext));
     return options;
diff --git a/Source/core/loader/cache/CachedResourceLoader.h b/Source/core/loader/cache/ResourceFetcher.h
similarity index 75%
rename from Source/core/loader/cache/CachedResourceLoader.h
rename to Source/core/loader/cache/ResourceFetcher.h
index 2682e9e..ba0cbe0 100644
--- a/Source/core/loader/cache/CachedResourceLoader.h
+++ b/Source/core/loader/cache/ResourceFetcher.h
@@ -23,15 +23,15 @@
     pages from the web. It has a memory cache for these objects.
 */
 
-#ifndef CachedResourceLoader_h
-#define CachedResourceLoader_h
+#ifndef ResourceFetcher_h
+#define ResourceFetcher_h
 
 #include "core/loader/ResourceLoaderHost.h"
 #include "core/loader/cache/CachePolicy.h"
 #include "core/loader/cache/CachedResource.h"
 #include "core/loader/cache/CachedResourceHandle.h"
 #include "core/loader/cache/CachedResourceInitiatorInfo.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
 #include "core/platform/Timer.h"
 #include "wtf/Deque.h"
 #include "wtf/HashMap.h"
@@ -58,45 +58,45 @@
 class KURL;
 class ResourceTimingInfo;
 
-// The CachedResourceLoader provides a per-context interface to the MemoryCache
+// The ResourceFetcher provides a per-context interface to the MemoryCache
 // and enforces a bunch of security checks and rules for resource revalidation.
 // Its lifetime is roughly per-DocumentLoader, in that it is generally created
 // in the DocumentLoader constructor and loses its ability to generate network
-// requests when the DocumentLoader is destroyed. Documents also hold a 
-// RefPtr<CachedResourceLoader> for their lifetime (and will create one if they
-// are initialized without a Frame), so a Document can keep a CachedResourceLoader
+// requests when the DocumentLoader is destroyed. Documents also hold a
+// RefPtr<ResourceFetcher> for their lifetime (and will create one if they
+// are initialized without a Frame), so a Document can keep a ResourceFetcher
 // alive past detach if scripts still reference the Document.
-class CachedResourceLoader : public RefCounted<CachedResourceLoader>, public ResourceLoaderHost {
-    WTF_MAKE_NONCOPYABLE(CachedResourceLoader); WTF_MAKE_FAST_ALLOCATED;
+class ResourceFetcher : public RefCounted<ResourceFetcher>, public ResourceLoaderHost {
+    WTF_MAKE_NONCOPYABLE(ResourceFetcher); WTF_MAKE_FAST_ALLOCATED;
 friend class ImageLoader;
 friend class ResourceCacheValidationSuppressor;
 
 public:
-    static PassRefPtr<CachedResourceLoader> create(DocumentLoader* documentLoader) { return adoptRef(new CachedResourceLoader(documentLoader)); }
-    virtual ~CachedResourceLoader();
+    static PassRefPtr<ResourceFetcher> create(DocumentLoader* documentLoader) { return adoptRef(new ResourceFetcher(documentLoader)); }
+    virtual ~ResourceFetcher();
 
-    using RefCounted<CachedResourceLoader>::ref;
-    using RefCounted<CachedResourceLoader>::deref;
+    using RefCounted<ResourceFetcher>::ref;
+    using RefCounted<ResourceFetcher>::deref;
 
-    CachedResourceHandle<CachedImage> requestImage(CachedResourceRequest&);
-    CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(CachedResourceRequest&);
-    CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(CachedResourceRequest&);
-    CachedResourceHandle<CachedScript> requestScript(CachedResourceRequest&);
-    CachedResourceHandle<CachedFont> requestFont(CachedResourceRequest&);
-    CachedResourceHandle<CachedRawResource> requestRawResource(CachedResourceRequest&);
-    CachedResourceHandle<CachedRawResource> requestMainResource(CachedResourceRequest&);
-    CachedResourceHandle<CachedDocument> requestSVGDocument(CachedResourceRequest&);
-    CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(CachedResourceRequest&);
-    CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, CachedResourceRequest&);
-    CachedResourceHandle<CachedTextTrack> requestTextTrack(CachedResourceRequest&);
-    CachedResourceHandle<CachedShader> requestShader(CachedResourceRequest&);
+    CachedResourceHandle<CachedImage> requestImage(FetchRequest&);
+    CachedResourceHandle<CachedCSSStyleSheet> requestCSSStyleSheet(FetchRequest&);
+    CachedResourceHandle<CachedCSSStyleSheet> requestUserCSSStyleSheet(FetchRequest&);
+    CachedResourceHandle<CachedScript> requestScript(FetchRequest&);
+    CachedResourceHandle<CachedFont> requestFont(FetchRequest&);
+    CachedResourceHandle<CachedRawResource> requestRawResource(FetchRequest&);
+    CachedResourceHandle<CachedRawResource> requestMainResource(FetchRequest&);
+    CachedResourceHandle<CachedDocument> requestSVGDocument(FetchRequest&);
+    CachedResourceHandle<CachedXSLStyleSheet> requestXSLStyleSheet(FetchRequest&);
+    CachedResourceHandle<CachedResource> requestLinkResource(CachedResource::Type, FetchRequest&);
+    CachedResourceHandle<CachedTextTrack> requestTextTrack(FetchRequest&);
+    CachedResourceHandle<CachedShader> requestShader(FetchRequest&);
 
     // Logs an access denied message to the console for the specified URL.
-    void printAccessDeniedMessage(const KURL& url) const;
+    void printAccessDeniedMessage(const KURL&) const;
 
     CachedResource* cachedResource(const String& url) const;
-    CachedResource* cachedResource(const KURL& url) const;
-    
+    CachedResource* cachedResource(const KURL&) const;
+
     typedef HashMap<String, CachedResourceHandle<CachedResource> > DocumentResourceMap;
     const DocumentResourceMap& allCachedResources() const { return m_documentResources; }
 
@@ -106,9 +106,9 @@
     void setImagesEnabled(bool);
 
     bool shouldDeferImageLoad(const KURL&) const;
-    
+
     CachePolicy cachePolicy(CachedResource::Type) const;
-    
+
     Frame* frame() const; // Can be null
     Document* document() const { return m_document; } // Can be null
     void setDocument(Document* document) { m_document = document; }
@@ -117,13 +117,13 @@
     void clearDocumentLoader() { m_documentLoader = 0; }
 
     void garbageCollectDocumentResources();
-    
+
     int requestCount() const { return m_requestCount; }
 
     bool isPreloaded(const String& urlString) const;
     void clearPreloads();
     void clearPendingPreloads();
-    void preload(CachedResource::Type, CachedResourceRequest&, const String& charset);
+    void preload(CachedResource::Type, FetchRequest&, const String& charset);
     void checkForPendingPreloads();
     void printPreloadStats();
     bool canRequest(CachedResource::Type, const KURL&, const ResourceLoaderOptions&, bool forPreload = false);
@@ -154,19 +154,19 @@
     static const ResourceLoaderOptions& defaultCachedResourceOptions();
 private:
 
-    explicit CachedResourceLoader(DocumentLoader*);
+    explicit ResourceFetcher(DocumentLoader*);
 
     FrameLoader* frameLoader();
 
-    CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, CachedResourceRequest&);
-    CachedResourceHandle<CachedResource> revalidateResource(const CachedResourceRequest&, CachedResource*);
-    CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, CachedResourceRequest&, const String& charset);
-    void preCacheDataURIImage(const CachedResourceRequest&);
-    void storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>&, const CachedResourceRequest&);
-    void requestPreload(CachedResource::Type, CachedResourceRequest&, const String& charset);
+    CachedResourceHandle<CachedResource> requestResource(CachedResource::Type, FetchRequest&);
+    CachedResourceHandle<CachedResource> revalidateResource(const FetchRequest&, CachedResource*);
+    CachedResourceHandle<CachedResource> loadResource(CachedResource::Type, FetchRequest&, const String& charset);
+    void preCacheDataURIImage(const FetchRequest&);
+    void storeResourceTimingInitiatorInformation(const CachedResourceHandle<CachedResource>&, const FetchRequest&);
+    void requestPreload(CachedResource::Type, FetchRequest&, const String& charset);
 
     enum RevalidationPolicy { Use, Revalidate, Reload, Load };
-    RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, ResourceRequest&, bool forPreload, CachedResource* existingResource, CachedResourceRequest::DeferOption) const;
+    RevalidationPolicy determineRevalidationPolicy(CachedResource::Type, ResourceRequest&, bool forPreload, CachedResource* existingResource, FetchRequest::DeferOption) const;
 
     void determineTargetType(ResourceRequest&, CachedResource::Type);
     ResourceRequestCachePolicy resourceRequestCachePolicy(const ResourceRequest&, CachedResource::Type);
@@ -175,28 +175,28 @@
     void notifyLoadedFromMemoryCache(CachedResource*);
     bool checkInsecureContent(CachedResource::Type, const KURL&) const;
 
-    void garbageCollectDocumentResourcesTimerFired(Timer<CachedResourceLoader>*);
+    void garbageCollectDocumentResourcesTimerFired(Timer<ResourceFetcher>*);
     void performPostLoadActions();
 
     bool clientDefersImage(const KURL&) const;
     void reloadImagesIfNotDeferred();
-    
+
     HashSet<String> m_validatedURLs;
     mutable DocumentResourceMap m_documentResources;
     Document* m_document;
     DocumentLoader* m_documentLoader;
-    
+
     int m_requestCount;
-    
+
     OwnPtr<ListHashSet<CachedResource*> > m_preloads;
     struct PendingPreload {
         CachedResource::Type m_type;
-        CachedResourceRequest m_request;
+        FetchRequest m_request;
         String m_charset;
     };
     Deque<PendingPreload> m_pendingPreloads;
 
-    Timer<CachedResourceLoader> m_garbageCollectDocumentResourcesTimer;
+    Timer<ResourceFetcher> m_garbageCollectDocumentResourcesTimer;
 
     typedef HashMap<CachedResource*, RefPtr<ResourceTimingInfo> > ResourceTimingInfoMap;
     ResourceTimingInfoMap m_resourceTimingInfoMap;
@@ -211,7 +211,7 @@
     WTF_MAKE_NONCOPYABLE(ResourceCacheValidationSuppressor);
     WTF_MAKE_FAST_ALLOCATED;
 public:
-    ResourceCacheValidationSuppressor(CachedResourceLoader* loader)
+    ResourceCacheValidationSuppressor(ResourceFetcher* loader)
         : m_loader(loader)
         , m_previousState(false)
     {
@@ -226,7 +226,7 @@
             m_loader->m_allowStaleResources = m_previousState;
     }
 private:
-    CachedResourceLoader* m_loader;
+    ResourceFetcher* m_loader;
     bool m_previousState;
 };
 
diff --git a/Source/core/page/DragController.cpp b/Source/core/page/DragController.cpp
index 56f3adb..9da39e9 100644
--- a/Source/core/page/DragController.cpp
+++ b/Source/core/page/DragController.cpp
@@ -51,7 +51,7 @@
 #include "core/loader/FrameLoadRequest.h"
 #include "core/loader/FrameLoader.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/DragActions.h"
 #include "core/page/DragClient.h"
 #include "core/page/DragSession.h"
@@ -493,8 +493,8 @@
     // manually controlling drag behaviour
     if (!range)
         return false;
-    CachedResourceLoader* cachedResourceLoader = range->ownerDocument()->cachedResourceLoader();
-    ResourceCacheValidationSuppressor validationSuppressor(cachedResourceLoader);
+    ResourceFetcher* fetcher = range->ownerDocument()->fetcher();
+    ResourceCacheValidationSuppressor validationSuppressor(fetcher);
     if (dragIsMove(innerFrame->selection(), dragData) || dragCaret.isContentRichlyEditable()) {
         bool chosePlainText = false;
         RefPtr<DocumentFragment> fragment = documentFragmentFromDragData(dragData, innerFrame.get(), range, true, chosePlainText);
diff --git a/Source/core/page/Frame.cpp b/Source/core/page/Frame.cpp
index 98930c8..d1e1e44 100644
--- a/Source/core/page/Frame.cpp
+++ b/Source/core/page/Frame.cpp
@@ -41,7 +41,7 @@
 #include "core/html/HTMLFrameElementBase.h"
 #include "core/loader/FrameLoader.h"
 #include "core/loader/FrameLoaderClient.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/ChromeClient.h"
 #include "core/page/DOMWindow.h"
@@ -223,7 +223,7 @@
 {
     // In setting printing, we should not validate resources already cached for the document.
     // See https://bugs.webkit.org/show_bug.cgi?id=43704
-    ResourceCacheValidationSuppressor validationSuppressor(document()->cachedResourceLoader());
+    ResourceCacheValidationSuppressor validationSuppressor(document()->fetcher());
 
     document()->setPrinting(printing);
     view()->adjustMediaTypeForPrinting(printing);
diff --git a/Source/core/page/FrameView.cpp b/Source/core/page/FrameView.cpp
index 69aa73e..8ff98d3 100644
--- a/Source/core/page/FrameView.cpp
+++ b/Source/core/page/FrameView.cpp
@@ -43,7 +43,7 @@
 #include "core/loader/FrameLoader.h"
 #include "core/loader/FrameLoaderClient.h"
 #include "core/loader/TextResourceDecoder.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/ChromeClient.h"
 #include "core/page/EventHandler.h"
@@ -1817,7 +1817,7 @@
         return false;
     if (document->parsing())
         return true;
-    if (document->cachedResourceLoader()->requestCount())
+    if (document->fetcher()->requestCount())
         return true;
     return false;
 }
diff --git a/Source/core/page/Settings.cpp b/Source/core/page/Settings.cpp
index 97f4fbe..b77b828 100644
--- a/Source/core/page/Settings.cpp
+++ b/Source/core/page/Settings.cpp
@@ -29,7 +29,7 @@
 #include <limits>
 #include "core/dom/Document.h"
 #include "core/inspector/InspectorInstrumentation.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/Frame.h"
 #include "core/page/FrameTree.h"
@@ -44,8 +44,8 @@
 static void setImageLoadingSettings(Page* page)
 {
     for (Frame* frame = page->mainFrame(); frame; frame = frame->tree()->traverseNext()) {
-        frame->document()->cachedResourceLoader()->setImagesEnabled(page->settings()->areImagesEnabled());
-        frame->document()->cachedResourceLoader()->setAutoLoadImages(page->settings()->loadsImagesAutomatically());
+        frame->document()->fetcher()->setImagesEnabled(page->settings()->areImagesEnabled());
+        frame->document()->fetcher()->setAutoLoadImages(page->settings()->loadsImagesAutomatically());
     }
 }
 
diff --git a/Source/core/platform/graphics/Color.cpp b/Source/core/platform/graphics/Color.cpp
index f3bfb8c..96aa93c 100644
--- a/Source/core/platform/graphics/Color.cpp
+++ b/Source/core/platform/graphics/Color.cpp
@@ -191,17 +191,17 @@
         return builder.toString();
     }
 
-    StringBuilder result;
-    result.reserveCapacity(28);
+    Vector<LChar> result;
+    result.reserveInitialCapacity(28);
     const char commaSpace[] = ", ";
     const char rgbaParen[] = "rgba(";
 
     result.append(rgbaParen, 5);
-    result.appendNumber(red());
+    appendNumber(result, red());
     result.append(commaSpace, 2);
-    result.appendNumber(green());
+    appendNumber(result, green());
     result.append(commaSpace, 2);
-    result.appendNumber(blue());
+    appendNumber(result, blue());
     result.append(commaSpace, 2);
 
     if (!alpha())
@@ -213,7 +213,7 @@
     }
 
     result.append(')');
-    return result.toString();
+    return String::adopt(result);
 }
 
 String Color::nameForRenderTreeAsText() const
diff --git a/Source/core/platform/graphics/Font.cpp b/Source/core/platform/graphics/Font.cpp
index 6ad8d47..b6074ec 100644
--- a/Source/core/platform/graphics/Font.cpp
+++ b/Source/core/platform/graphics/Font.cpp
@@ -30,8 +30,9 @@
 #include "core/platform/text/transcoder/FontTranscoder.h"
 #include "wtf/MainThread.h"
 #include "wtf/MathExtras.h"
-#include "wtf/text/StringBuilder.h"
+#include "wtf/StdLibExtras.h"
 #include "wtf/UnusedParam.h"
+#include "wtf/text/StringBuilder.h"
 
 using namespace WTF;
 using namespace Unicode;
@@ -353,122 +354,84 @@
     return characterRangeCodePath(run.characters16(), run.length());
 }
 
+static inline UChar keyExtractorUChar(const UChar* value)
+{
+    return *value;
+}
+
+static inline UChar32 keyExtractorUChar32(const UChar32* value)
+{
+    return *value;
+}
+
 Font::CodePath Font::characterRangeCodePath(const UChar* characters, unsigned len)
 {
-    // FIXME: Should use a UnicodeSet in ports where ICU is used. Note that we 
-    // can't simply use UnicodeCharacter Property/class because some characters
-    // are not 'combining', but still need to go to the complex path.
-    // Alternatively, we may as well consider binary search over a sorted
-    // list of ranges.
+    static UChar complexCodePathRanges[] = {
+        // U+02E5 through U+02E9 (Modifier Letters : Tone letters)
+        0x2E5, 0x2E9,
+        // U+0300 through U+036F Combining diacritical marks
+        0x300, 0x36F,
+        // U+0591 through U+05CF excluding U+05BE Hebrew combining marks, ...
+        0x0591, 0x05BD,
+        // ... Hebrew punctuation Paseq, Sof Pasuq and Nun Hafukha
+        0x05BF, 0x05CF,
+        // U+0600 through U+109F Arabic, Syriac, Thaana, NKo, Samaritan, Mandaic,
+        // Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada,
+        // Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar
+        0x0600, 0x109F,
+        // U+1100 through U+11FF Hangul Jamo (only Ancient Korean should be left
+        // here if you precompose; Modern Korean will be precomposed as a result of step A)
+        0x1100, 0x11FF,
+        // U+135D through U+135F Ethiopic combining marks
+        0x135D, 0x135F,
+        // U+1780 through U+18AF Tagalog, Hanunoo, Buhid, Taghanwa,Khmer, Mongolian
+        0x1700, 0x18AF,
+        // U+1900 through U+194F Limbu (Unicode 4.0)
+        0x1900, 0x194F,
+        // U+1980 through U+19DF New Tai Lue
+        0x1980, 0x19DF,
+        // U+1A00 through U+1CFF Buginese, Tai Tham, Balinese, Batak, Lepcha, Vedic
+        0x1A00, 0x1CFF,
+        // U+1DC0 through U+1DFF Comining diacritical mark supplement
+        0x1DC0, 0x1DFF,
+        // U+20D0 through U+20FF Combining marks for symbols
+        0x20D0, 0x20FF,
+        // U+2CEF through U+2CF1 Combining marks for Coptic
+        0x2CEF, 0x2CF1,
+        // U+302A through U+302F Ideographic and Hangul Tone marks
+        0x302A, 0x302F,
+        // U+A67C through U+A67D Combining marks for old Cyrillic
+        0xA67C, 0xA67D,
+        // U+A6F0 through U+A6F1 Combining mark for Bamum
+        0xA6F0, 0xA6F1,
+        // U+A800 through U+ABFF Nagri, Phags-pa, Saurashtra, Devanagari Extended,
+        // Hangul Jamo Ext. A, Javanese, Myanmar Extended A, Tai Viet, Meetei Mayek
+        0xA800, 0xABFF,
+        // U+D7B0 through U+D7FF Hangul Jamo Ext. B
+        0xD7B0, 0xD7FF,
+        // U+FE00 through U+FE0F Unicode variation selectors
+        0xFE00, 0xFE0F,
+        // U+FE20 through U+FE2F Combining half marks
+        0xFE20, 0xFE2F
+    };
+    static size_t complexCodePathRangesCount = WTF_ARRAY_LENGTH(complexCodePathRanges);
+
     CodePath result = Simple;
     for (unsigned i = 0; i < len; i++) {
         const UChar c = characters[i];
-        if (c < 0x2E5) // U+02E5 through U+02E9 (Modifier Letters : Tone letters)  
-            continue;
-        if (c <= 0x2E9) 
-            return Complex;
 
-        if (c < 0x300) // U+0300 through U+036F Combining diacritical marks
+        // Shortcut for common case
+        if (c < 0x2E5)
             continue;
-        if (c <= 0x36F)
-            return Complex;
-
-        if (c < 0x0591 || c == 0x05BE) // U+0591 through U+05CF excluding U+05BE Hebrew combining marks, Hebrew punctuation Paseq, Sof Pasuq and Nun Hafukha
-            continue;
-        if (c <= 0x05CF)
-            return Complex;
-
-        // U+0600 through U+109F Arabic, Syriac, Thaana, NKo, Samaritan, Mandaic,
-        // Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, 
-        // Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar
-        if (c < 0x0600) 
-            continue;
-        if (c <= 0x109F)
-            return Complex;
-
-        // U+1100 through U+11FF Hangul Jamo (only Ancient Korean should be left here if you precompose;
-        // Modern Korean will be precomposed as a result of step A)
-        if (c < 0x1100)
-            continue;
-        if (c <= 0x11FF)
-            return Complex;
-
-        if (c < 0x135D) // U+135D through U+135F Ethiopic combining marks
-            continue;
-        if (c <= 0x135F)
-            return Complex;
-
-        if (c < 0x1700) // U+1780 through U+18AF Tagalog, Hanunoo, Buhid, Taghanwa,Khmer, Mongolian
-            continue;
-        if (c <= 0x18AF)
-            return Complex;
-
-        if (c < 0x1900) // U+1900 through U+194F Limbu (Unicode 4.0)
-            continue;
-        if (c <= 0x194F)
-            return Complex;
-
-        if (c < 0x1980) // U+1980 through U+19DF New Tai Lue
-            continue;
-        if (c <= 0x19DF)
-            return Complex;
-
-        if (c < 0x1A00) // U+1A00 through U+1CFF Buginese, Tai Tham, Balinese, Batak, Lepcha, Vedic
-            continue;
-        if (c <= 0x1CFF)
-            return Complex;
-
-        if (c < 0x1DC0) // U+1DC0 through U+1DFF Comining diacritical mark supplement
-            continue;
-        if (c <= 0x1DFF)
-            return Complex;
 
         // U+1E00 through U+2000 characters with diacritics and stacked diacritics
-        if (c <= 0x2000) {
+        if (c >= 0x1E00 && c <= 0x2000) {
             result = SimpleWithGlyphOverflow;
             continue;
         }
 
-        if (c < 0x20D0) // U+20D0 through U+20FF Combining marks for symbols
-            continue;
-        if (c <= 0x20FF)
-            return Complex;
-
-        if (c < 0x2CEF) // U+2CEF through U+2CF1 Combining marks for Coptic
-            continue;
-        if (c <= 0x2CF1)
-            return Complex;
-
-        if (c < 0x302A) // U+302A through U+302F Ideographic and Hangul Tone marks
-            continue;
-        if (c <= 0x302F)
-            return Complex;
-
-        if (c < 0xA67C) // U+A67C through U+A67D Combining marks for old Cyrillic
-            continue;
-        if (c <= 0xA67D)
-            return Complex;
-
-        if (c < 0xA6F0) // U+A6F0 through U+A6F1 Combining mark for Bamum
-            continue;
-        if (c <= 0xA6F1)
-            return Complex;
-
-       // U+A800 through U+ABFF Nagri, Phags-pa, Saurashtra, Devanagari Extended,
-       // Hangul Jamo Ext. A, Javanese, Myanmar Extended A, Tai Viet, Meetei Mayek,
-        if (c < 0xA800) 
-            continue;
-        if (c <= 0xABFF)
-            return Complex;
-
-        if (c < 0xD7B0) // U+D7B0 through U+D7FF Hangul Jamo Ext. B
-            continue;
-        if (c <= 0xD7FF)
-            return Complex;
-
-        if (c <= 0xDBFF) {
-            // High surrogate
-
+        // Surrogate pairs
+        if (c > 0xD7FF && c <= 0xDBFF) {
             if (i == len - 1)
                 continue;
 
@@ -494,219 +457,214 @@
             continue;
         }
 
-        if (c < 0xFE00) // U+FE00 through U+FE0F Unicode variation selectors
-            continue;
-        if (c <= 0xFE0F)
+        // Search for other Complex cases
+        UChar* boundingCharacter = approximateBinarySearch<UChar, UChar>(
+            (UChar*)complexCodePathRanges, complexCodePathRangesCount, c, keyExtractorUChar);
+        // Exact matches are complex
+        if (*boundingCharacter == c)
             return Complex;
-
-        if (c < 0xFE20) // U+FE20 through U+FE2F Combining half marks
+        bool isEndOfRange = ((boundingCharacter - complexCodePathRanges) % 2);
+        if (*boundingCharacter < c) {
+            // Determine if we are in a range or out
+            if (!isEndOfRange)
+                return Complex;
             continue;
-        if (c <= 0xFE2F)
+        }
+        ASSERT(*boundingCharacter > c);
+        // Determine if we are in a range or out - opposite condition to above
+        if (isEndOfRange)
             return Complex;
     }
+
     return result;
 }
 
 bool Font::isCJKIdeograph(UChar32 c)
 {
-    // The basic CJK Unified Ideographs block.
-    if (c >= 0x4E00 && c <= 0x9FFF)
-        return true;
-    
-    // CJK Unified Ideographs Extension A.
-    if (c >= 0x3400 && c <= 0x4DBF)
-        return true;
-    
-    // CJK Radicals Supplement.
-    if (c >= 0x2E80 && c <= 0x2EFF)
-        return true;
-    
-    // Kangxi Radicals.
-    if (c >= 0x2F00 && c <= 0x2FDF)
-        return true;
-    
-    // CJK Strokes.
-    if (c >= 0x31C0 && c <= 0x31EF)
-        return true;
-    
-    // CJK Compatibility Ideographs.
-    if (c >= 0xF900 && c <= 0xFAFF)
-        return true;
-    
-    // CJK Unified Ideographs Extension B.
-    if (c >= 0x20000 && c <= 0x2A6DF)
-        return true;
-        
-    // CJK Unified Ideographs Extension C.
-    if (c >= 0x2A700 && c <= 0x2B73F)
-        return true;
-    
-    // CJK Unified Ideographs Extension D.
-    if (c >= 0x2B740 && c <= 0x2B81F)
-        return true;
-    
-    // CJK Compatibility Ideographs Supplement.
-    if (c >= 0x2F800 && c <= 0x2FA1F)
-        return true;
+    static UChar32 cjkIdeographRanges[] = {
+        // CJK Radicals Supplement and Kangxi Radicals.
+        0x2E80, 0x2FDF,
+        // CJK Strokes.
+        0x31C0, 0x31EF,
+        // CJK Unified Ideographs Extension A.
+        0x3400, 0x4DBF,
+        // The basic CJK Unified Ideographs block.
+        0x4E00, 0x9FFF,
+        // CJK Compatibility Ideographs.
+        0xF900, 0xFAFF,
+        // CJK Unified Ideographs Extension B.
+        0x20000, 0x2A6DF,
+        // CJK Unified Ideographs Extension C.
+        // CJK Unified Ideographs Extension D.
+        0x2A700, 0x2B81F,
+        // CJK Compatibility Ideographs Supplement.
+        0x2F800, 0x2FA1F
+    };
+    static size_t cjkIdeographRangesCount = WTF_ARRAY_LENGTH(cjkIdeographRanges);
 
-    return false;
+    // Early out
+    if (c < cjkIdeographRanges[0] || c > cjkIdeographRanges[cjkIdeographRangesCount - 1])
+        return false;
+
+    UChar32* boundingCharacter = approximateBinarySearch<UChar32, UChar32>(
+        (UChar32*)cjkIdeographRanges, cjkIdeographRangesCount, c, keyExtractorUChar32);
+    // Exact matches are CJK
+    if (*boundingCharacter == c)
+        return true;
+    bool isEndOfRange = ((boundingCharacter - cjkIdeographRanges) % 2);
+    if (*boundingCharacter < c)
+        return !isEndOfRange;
+    return isEndOfRange;
 }
 
 bool Font::isCJKIdeographOrSymbol(UChar32 c)
 {
-    // 0x2C7 Caron, Mandarin Chinese 3rd Tone
-    // 0x2CA Modifier Letter Acute Accent, Mandarin Chinese 2nd Tone
-    // 0x2CB Modifier Letter Grave Access, Mandarin Chinese 4th Tone 
-    // 0x2D9 Dot Above, Mandarin Chinese 5th Tone 
-    if ((c == 0x2C7) || (c == 0x2CA) || (c == 0x2CB) || (c == 0x2D9))
-        return true;
-
-    if ((c == 0x2020) || (c == 0x2021) || (c == 0x2030) || (c == 0x203B) || (c == 0x203C)
-        || (c == 0x2042) || (c == 0x2047) || (c == 0x2048) || (c == 0x2049) || (c == 0x2051)
-        || (c == 0x20DD) || (c == 0x20DE) || (c == 0x2100) || (c == 0x2103) || (c == 0x2105)
-        || (c == 0x2109) || (c == 0x210A) || (c == 0x2113) || (c == 0x2116) || (c == 0x2121)
-        || (c == 0x212B) || (c == 0x213B) || (c == 0x2150) || (c == 0x2151) || (c == 0x2152))
-        return true;
-
-    if (c >= 0x2156 && c <= 0x215A)
-        return true;
-
-    if (c >= 0x2160 && c <= 0x216B)
-        return true;
-
-    if (c >= 0x2170 && c <= 0x217B)
-        return true;
-
-    if ((c == 0x217F) || (c == 0x2189) || (c == 0x2307) || (c == 0x2312) || (c == 0x23BE) || (c == 0x23BF))
-        return true;
-
-    if (c >= 0x23C0 && c <= 0x23CC)
-        return true;
-
-    if ((c == 0x23CE) || (c == 0x2423))
-        return true;
-
-    if (c >= 0x2460 && c <= 0x2492)
-        return true;
-
-    if (c >= 0x249C && c <= 0x24FF)
-        return true;
-
-    if ((c == 0x25A0) || (c == 0x25A1) || (c == 0x25A2) || (c == 0x25AA) || (c == 0x25AB))
-        return true;
-
-    if ((c == 0x25B1) || (c == 0x25B2) || (c == 0x25B3) || (c == 0x25B6) || (c == 0x25B7) || (c == 0x25BC) || (c == 0x25BD))
-        return true;
-    
-    if ((c == 0x25C0) || (c == 0x25C1) || (c == 0x25C6) || (c == 0x25C7) || (c == 0x25C9) || (c == 0x25CB) || (c == 0x25CC))
-        return true;
-
-    if (c >= 0x25CE && c <= 0x25D3)
-        return true;
-
-    if (c >= 0x25E2 && c <= 0x25E6)
-        return true;
-
-    if (c == 0x25EF)
-        return true;
-
-    if (c >= 0x2600 && c <= 0x2603)
-        return true;
-
-    if ((c == 0x2605) || (c == 0x2606) || (c == 0x260E) || (c == 0x2616) || (c == 0x2617) || (c == 0x2640) || (c == 0x2642))
-        return true;
-
-    if (c >= 0x2660 && c <= 0x266F)
-        return true;
-
-    if (c >= 0x2672 && c <= 0x267D)
-        return true;
-
-    if ((c == 0x26A0) || (c == 0x26BD) || (c == 0x26BE) || (c == 0x2713) || (c == 0x271A) || (c == 0x273F) || (c == 0x2740) || (c == 0x2756))
-        return true;
-
-    if (c >= 0x2776 && c <= 0x277F)
-        return true;
-
-    if (c == 0x2B1A)
-        return true;
-
-    // Ideographic Description Characters.
-    if (c >= 0x2FF0 && c <= 0x2FFF)
-        return true;
-    
-    // CJK Symbols and Punctuation, excluding 0x3030.
-    if (c >= 0x3000 && c < 0x3030)
-        return true;
-
-    if (c > 0x3030 && c <= 0x303F)
-        return true;
-
-    // Hiragana
-    if (c >= 0x3040 && c <= 0x309F)
-        return true;
-
-    // Katakana 
-    if (c >= 0x30A0 && c <= 0x30FF)
-        return true;
-
-    // Bopomofo
-    if (c >= 0x3100 && c <= 0x312F)
-        return true;
-
-    if (c >= 0x3190 && c <= 0x319F)
-        return true;
-
-    // Bopomofo Extended
-    if (c >= 0x31A0 && c <= 0x31BF)
-        return true;
- 
-    // Enclosed CJK Letters and Months.
-    if (c >= 0x3200 && c <= 0x32FF)
-        return true;
-    
-    // CJK Compatibility.
-    if (c >= 0x3300 && c <= 0x33FF)
-        return true;
-
-    if (c >= 0xF860 && c <= 0xF862)
-        return true;
-
-    // CJK Compatibility Forms.
-    if (c >= 0xFE30 && c <= 0xFE4F)
-        return true;
-
-    if ((c == 0xFE10) || (c == 0xFE11) || (c == 0xFE12) || (c == 0xFE19))
-        return true;
-
-    if ((c == 0xFF0D) || (c == 0xFF1B) || (c == 0xFF1C) || (c == 0xFF1E))
+    // Likely common case
+    if (c < 0x2C7)
         return false;
 
-    // Halfwidth and Fullwidth Forms
-    // Usually only used in CJK
-    if (c >= 0xFF00 && c <= 0xFFEF)
+    // Hash lookup for isolated symbols (those not part of a contiguous range)
+    static HashSet<UChar32>* cjkIsolatedSymbols = 0;
+    if (!cjkIsolatedSymbols) {
+        cjkIsolatedSymbols = new HashSet<UChar32>();
+        // 0x2C7 Caron, Mandarin Chinese 3rd Tone
+        cjkIsolatedSymbols->add(0x2C7);
+        // 0x2CA Modifier Letter Acute Accent, Mandarin Chinese 2nd Tone
+        cjkIsolatedSymbols->add(0x2CA);
+        // 0x2CB Modifier Letter Grave Access, Mandarin Chinese 4th Tone
+        cjkIsolatedSymbols->add(0x2CB);
+        // 0x2D9 Dot Above, Mandarin Chinese 5th Tone
+        cjkIsolatedSymbols->add(0x2D9);
+
+        cjkIsolatedSymbols->add(0x2020);
+        cjkIsolatedSymbols->add(0x2021);
+        cjkIsolatedSymbols->add(0x2030);
+        cjkIsolatedSymbols->add(0x203B);
+        cjkIsolatedSymbols->add(0x203C);
+        cjkIsolatedSymbols->add(0x2042);
+        cjkIsolatedSymbols->add(0x2047);
+        cjkIsolatedSymbols->add(0x2048);
+        cjkIsolatedSymbols->add(0x2049);
+        cjkIsolatedSymbols->add(0x2051);
+        cjkIsolatedSymbols->add(0x20DD);
+        cjkIsolatedSymbols->add(0x20DE);
+        cjkIsolatedSymbols->add(0x2100);
+        cjkIsolatedSymbols->add(0x2103);
+        cjkIsolatedSymbols->add(0x2105);
+        cjkIsolatedSymbols->add(0x2109);
+        cjkIsolatedSymbols->add(0x210A);
+        cjkIsolatedSymbols->add(0x2113);
+        cjkIsolatedSymbols->add(0x2116);
+        cjkIsolatedSymbols->add(0x2121);
+        cjkIsolatedSymbols->add(0x212B);
+        cjkIsolatedSymbols->add(0x213B);
+        cjkIsolatedSymbols->add(0x2150);
+        cjkIsolatedSymbols->add(0x2151);
+        cjkIsolatedSymbols->add(0x2152);
+        cjkIsolatedSymbols->add(0x217F);
+        cjkIsolatedSymbols->add(0x2189);
+        cjkIsolatedSymbols->add(0x2307);
+        cjkIsolatedSymbols->add(0x2312);
+        cjkIsolatedSymbols->add(0x23CE);
+        cjkIsolatedSymbols->add(0x2423);
+        cjkIsolatedSymbols->add(0x25A0);
+        cjkIsolatedSymbols->add(0x25A1);
+        cjkIsolatedSymbols->add(0x25A2);
+        cjkIsolatedSymbols->add(0x25AA);
+        cjkIsolatedSymbols->add(0x25AB);
+        cjkIsolatedSymbols->add(0x25B1);
+        cjkIsolatedSymbols->add(0x25B2);
+        cjkIsolatedSymbols->add(0x25B3);
+        cjkIsolatedSymbols->add(0x25B6);
+        cjkIsolatedSymbols->add(0x25B7);
+        cjkIsolatedSymbols->add(0x25BC);
+        cjkIsolatedSymbols->add(0x25BD);
+        cjkIsolatedSymbols->add(0x25C0);
+        cjkIsolatedSymbols->add(0x25C1);
+        cjkIsolatedSymbols->add(0x25C6);
+        cjkIsolatedSymbols->add(0x25C7);
+        cjkIsolatedSymbols->add(0x25C9);
+        cjkIsolatedSymbols->add(0x25CB);
+        cjkIsolatedSymbols->add(0x25CC);
+        cjkIsolatedSymbols->add(0x25EF);
+        cjkIsolatedSymbols->add(0x2605);
+        cjkIsolatedSymbols->add(0x2606);
+        cjkIsolatedSymbols->add(0x260E);
+        cjkIsolatedSymbols->add(0x2616);
+        cjkIsolatedSymbols->add(0x2617);
+        cjkIsolatedSymbols->add(0x2640);
+        cjkIsolatedSymbols->add(0x2642);
+        cjkIsolatedSymbols->add(0x26A0);
+        cjkIsolatedSymbols->add(0x26BD);
+        cjkIsolatedSymbols->add(0x26BE);
+        cjkIsolatedSymbols->add(0x2713);
+        cjkIsolatedSymbols->add(0x271A);
+        cjkIsolatedSymbols->add(0x273F);
+        cjkIsolatedSymbols->add(0x2740);
+        cjkIsolatedSymbols->add(0x2756);
+        cjkIsolatedSymbols->add(0x2B1A);
+        cjkIsolatedSymbols->add(0xFE10);
+        cjkIsolatedSymbols->add(0xFE11);
+        cjkIsolatedSymbols->add(0xFE12);
+        cjkIsolatedSymbols->add(0xFE19);
+        cjkIsolatedSymbols->add(0xFF1D);
+        // Emoji.
+        cjkIsolatedSymbols->add(0x1F100);
+    }
+    if (cjkIsolatedSymbols->contains(c))
         return true;
 
-    // Emoji.
-    if (c == 0x1F100)
+    if (isCJKIdeograph(c))
         return true;
 
-    if (c >= 0x1F110 && c <= 0x1F129)
-        return true;
+    static UChar32 cjkSymbolRanges[] = {
+        0x2156, 0x215A,
+        0x2160, 0x216B,
+        0x2170, 0x217B,
+        0x23BE, 0x23CC,
+        0x2460, 0x2492,
+        0x249C, 0x24FF,
+        0x25CE, 0x25D3,
+        0x25E2, 0x25E6,
+        0x2600, 0x2603,
+        0x2660, 0x266F,
+        0x2672, 0x267D,
+        0x2776, 0x277F,
+        // Ideographic Description Characters, with CJK Symbols and Punctuation, excluding 0x3030.
+        // Then Hiragana 0x3040 .. 0x309F, Katakana 0x30A0 .. 0x30FF, Bopomofo 0x3100 .. 0x312F
+        0x2FF0, 0x302F,
+        0x3031, 0x312F,
+        // More Bopomofo and Bopomofo Extended 0x31A0 .. 0x31BF
+        0x3190, 0x31BF,
+        // Enclosed CJK Letters and Months (0x3200 .. 0x32FF).
+        // CJK Compatibility (0x3300 .. 0x33FF).
+        0x3200, 0x33FF,
+        0xF860, 0xF862,
+        // CJK Compatibility Forms.
+        0xFE30, 0xFE4F,
+        // Halfwidth and Fullwidth Forms
+        // Usually only used in CJK
+        0xFF00, 0xFF0C,
+        0xFF0E, 0xFF1A,
+        0xFF1F, 0xFFEF,
+        // Emoji.
+        0x1F110, 0x1F129,
+        0x1F130, 0x1F149,
+        0x1F150, 0x1F169,
+        0x1F170, 0x1F189,
+        0x1F200, 0x1F6FF
+    };
+    static size_t cjkSymbolRangesCount = WTF_ARRAY_LENGTH(cjkSymbolRanges);
 
-    if (c >= 0x1F130 && c <= 0x1F149)
+    UChar32* boundingCharacter = approximateBinarySearch<UChar32, UChar32>(
+        (UChar32*)cjkSymbolRanges, cjkSymbolRangesCount, c, keyExtractorUChar32);
+    // Exact matches are CJK Symbols
+    if (*boundingCharacter == c)
         return true;
-
-    if (c >= 0x1F150 && c <= 0x1F169)
-        return true;
-
-    if (c >= 0x1F170 && c <= 0x1F189)
-        return true;
-
-    if (c >= 0x1F200 && c <= 0x1F6F)
-        return true;
-
-    return isCJKIdeograph(c);
+    bool isEndOfRange = ((boundingCharacter - cjkSymbolRanges) % 2);
+    if (*boundingCharacter < c)
+        return !isEndOfRange;
+    return isEndOfRange;
 }
 
 unsigned Font::expansionOpportunityCount(const LChar* characters, size_t length, TextDirection direction, bool& isAfterExpansion)
diff --git a/Source/core/platform/graphics/FontTest.cpp b/Source/core/platform/graphics/FontTest.cpp
index 8b9c784..a5ee4f4 100644
--- a/Source/core/platform/graphics/FontTest.cpp
+++ b/Source/core/platform/graphics/FontTest.cpp
@@ -33,484 +33,70 @@
 
 namespace WebCore {
 
-TEST(FontTest, TestCharacterRangeCodePath1)
+static void TestSpecificUCharRange(UChar rangeStart, UChar rangeEnd)
+{
+    UChar below[1];
+    UChar start[1];
+    UChar midway[1];
+    UChar end[1];
+    UChar above[1];
+
+    below[0] = rangeStart - 1;
+    start[0] = rangeStart;
+    midway[0] = ((int)rangeStart + (int)rangeEnd) / 2;
+    end[0] = rangeEnd;
+    above[0] = rangeEnd + 1;
+
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(below, 1));
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(start, 1));
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(midway, 1));
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(end, 1));
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(above, 1));
+}
+
+TEST(FontTest, TestCharacterRangeCodePath)
 {
     static UChar c1[] = { 0x0 };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 1));
 
-    static UChar c2[] = { 0x2E4 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Simple, codePath);
+    TestSpecificUCharRange(0x2E5, 0x2E9);
+    TestSpecificUCharRange(0x300, 0x36F);
+    TestSpecificUCharRange(0x0591, 0x05BD);
+    TestSpecificUCharRange(0x05BF, 0x05CF);
+    TestSpecificUCharRange(0x0600, 0x109F);
+    TestSpecificUCharRange(0x1100, 0x11FF);
+    TestSpecificUCharRange(0x135D, 0x135F);
+    TestSpecificUCharRange(0x1700, 0x18AF);
+    TestSpecificUCharRange(0x1900, 0x194F);
+    TestSpecificUCharRange(0x1980, 0x19DF);
+    TestSpecificUCharRange(0x1A00, 0x1CFF);
 
-    static UChar c3[] = { 0x2E5 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
+    static UChar c2[] = { 0x1DBF };
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 1));
+    static UChar c3[] = { 0x1DC0 };
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 1));
+    static UChar c4[] = { 0x1DD0 };
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 1));
+    static UChar c5[] = { 0x1DFF };
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c5, 1));
+    static UChar c6[] = { 0x1E00 };
+    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 1));
+    static UChar c7[] = { 0x2000 };
+    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c7, 1));
+    static UChar c8[] = { 0x2001 };
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c8, 1));
 
-    static UChar c4[] = { 0x2E8 };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
+    TestSpecificUCharRange(0x20D0, 0x20FF);
+    TestSpecificUCharRange(0x2CEF, 0x2CF1);
+    TestSpecificUCharRange(0x302A, 0x302F);
 
-    static UChar c5[] = { 0x2E9 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Complex, codePath);
+    TestSpecificUCharRange(0xA67C, 0xA67D);
+    TestSpecificUCharRange(0xA6F0, 0xA6F1);
+    TestSpecificUCharRange(0xA800, 0xABFF);
 
-    static UChar c6[] = { 0x2EA };
-    codePath = Font::characterRangeCodePath(c6, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath2)
-{
-    static UChar c1[] = { 0x2FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x300 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x330 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x36F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x370 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath3)
-{
-    static UChar c1[] = { 0x0590 };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x0591 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x05A0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x05BD };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x05BE };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c6[] = { 0x05BF };
-    codePath = Font::characterRangeCodePath(c6, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c7[] = { 0x05C0 };
-    codePath = Font::characterRangeCodePath(c7, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c8[] = { 0x05CF };
-    codePath = Font::characterRangeCodePath(c8, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c9[] = { 0x05D0 };
-    codePath = Font::characterRangeCodePath(c9, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath4)
-{
-    static UChar c1[] = { 0x05FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x0600 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x0700 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x109F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x10A0 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath5)
-{
-    static UChar c1[] = { 0x10FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1100 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x11A0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x11FF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x1200 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath6)
-{
-    static UChar c1[] = { 0x135C };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x135D };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x135E };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x135F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x1360 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath7)
-{
-    static UChar c1[] = { 0x16FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1700 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x1800 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x18AF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x18B0 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath8)
-{
-    static UChar c1[] = { 0x18FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1900 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x1940 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x194F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x1950 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath9)
-{
-    static UChar c1[] = { 0x197F };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1980 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x19D0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x19DF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x19E0 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath10)
-{
-    static UChar c1[] = { 0x19FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1A00 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x1C00 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x1CFF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x1D00 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath11)
-{
-    static UChar c1[] = { 0x1DBF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x1DC0 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x1DD0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x1DFF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x1E00 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::SimpleWithGlyphOverflow, codePath);
-
-    static UChar c6[] = { 0x2000 };
-    codePath = Font::characterRangeCodePath(c6, 1);
-    EXPECT_EQ(Font::SimpleWithGlyphOverflow, codePath);
-
-    static UChar c7[] = { 0x2001 };
-    codePath = Font::characterRangeCodePath(c7, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath12)
-{
-    static UChar c1[] = { 0x20CF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x20D0 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x20F0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x20FF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x2100 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath13)
-{
-    static UChar c1[] = { 0x2CED };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x2CEF };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x2CF0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x2CF1 };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x2CF2 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath14)
-{
-    static UChar c1[] = { 0x3029 };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0x302A };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0x302C };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0x302F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0x3030 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath15)
-{
-    static UChar c1[] = { 0xA67B };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xA67C };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xA67D };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xA67E };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath16)
-{
-    static UChar c1[] = { 0xA6E9 };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xA6F0 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xA6F1 };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xA6F2 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath17)
-{
-    static UChar c1[] = { 0xA7FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xA800 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0xAA00 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xABFF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xAC00 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath18)
-{
-    static UChar c1[] = { 0xD7AF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xD7B0 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0xD7F0 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xD7FF };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xD800 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath19)
-{
-    static UChar c1[] = { 0xFDFF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xFE00 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0xFE05 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xFE0F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xFE10 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-}
-
-TEST(FontTest, TestCharacterRangeCodePath20)
-{
-    static UChar c1[] = { 0xFD1F };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 1);
-    EXPECT_EQ(Font::Simple, codePath);
-
-    static UChar c2[] = { 0xFE20 };
-    codePath = Font::characterRangeCodePath(c2, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c3[] = { 0xFE28 };
-    codePath = Font::characterRangeCodePath(c3, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c4[] = { 0xFE2F };
-    codePath = Font::characterRangeCodePath(c4, 1);
-    EXPECT_EQ(Font::Complex, codePath);
-
-    static UChar c5[] = { 0xFE30 };
-    codePath = Font::characterRangeCodePath(c5, 1);
-    EXPECT_EQ(Font::Simple, codePath);
+    TestSpecificUCharRange(0xD7B0, 0xD7FF);
+    TestSpecificUCharRange(0xFE00, 0xFE0F);
+    TestSpecificUCharRange(0xFE20, 0xFE2F);
 }
 
 TEST(FontTest, TestCharacterRangeCodePathSurrogate1)
@@ -521,123 +107,259 @@
 
     /* The following 5 should all be Simple because they are not surrogate. */
     static UChar c1[] = { 0xD800, 0xDBFE };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
     static UChar c2[] = { 0xD800, 0xE000 };
-    codePath = Font::characterRangeCodePath(c2, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c2, 2));
     static UChar c3[] = { 0xDBFF, 0xDBFE };
-    codePath = Font::characterRangeCodePath(c3, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c3, 2));
     static UChar c4[] = { 0xDBFF, 0xE000 };
-    codePath = Font::characterRangeCodePath(c4, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c4, 2));
     static UChar c5[] = { 0xDC00, 0xDBFF };
-    codePath = Font::characterRangeCodePath(c5, 2);
-    EXPECT_EQ(Font::Simple, codePath);
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c5, 2));
 
     /* To be Complex, the Supplementary Character must be in either */
     /* U+1F1E6 through U+1F1FF or U+E0100 through U+E01EF. */
     /* That is, a lead of 0xD83C with trail 0xDDE6 .. 0xDDFF or */
     /* a lead of 0xDB40 with trail 0xDD00 .. 0xDDEF. */
     static UChar c6[] = { 0xD83C, 0xDDE5 };
-    codePath = Font::characterRangeCodePath(c6, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c6, 2));
     static UChar c7[] = { 0xD83C, 0xDDE6 };
-    codePath = Font::characterRangeCodePath(c7, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
     static UChar c8[] = { 0xD83C, 0xDDF0 };
-    codePath = Font::characterRangeCodePath(c8, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
     static UChar c9[] = { 0xD83C, 0xDDFF };
-    codePath = Font::characterRangeCodePath(c9, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 2));
     static UChar c10[] = { 0xD83C, 0xDE00 };
-    codePath = Font::characterRangeCodePath(c10, 2);
-    EXPECT_EQ(Font::Simple, codePath);
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c10, 2));
 
     static UChar c11[] = { 0xDB40, 0xDCFF };
-    codePath = Font::characterRangeCodePath(c11, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c11, 2));
     static UChar c12[] = { 0xDB40, 0xDD00 };
-    codePath = Font::characterRangeCodePath(c12, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c12, 2));
     static UChar c13[] = { 0xDB40, 0xDDED };
-    codePath = Font::characterRangeCodePath(c13, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c13, 2));
     static UChar c14[] = { 0xDB40, 0xDDEF };
-    codePath = Font::characterRangeCodePath(c14, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c14, 2));
     static UChar c15[] = { 0xDB40, 0xDDF0 };
-    codePath = Font::characterRangeCodePath(c15, 2);
-    EXPECT_EQ(Font::Simple, codePath);
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c15, 2));
 }
 
 TEST(FontTest, TestCharacterRangeCodePathString)
 {
     // Simple-Simple is still simple
     static UChar c1[] = { 0x2FF, 0x2FF };
-    Font::CodePath codePath = Font::characterRangeCodePath(c1, 2);
-    EXPECT_EQ(Font::Simple, codePath);
-
+    EXPECT_EQ(Font::Simple, Font::characterRangeCodePath(c1, 2));
     // Complex-Simple is Complex
     static UChar c2[] = { 0x300, 0x2FF };
-    codePath = Font::characterRangeCodePath(c2, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c2, 2));
     // Simple-Complex is Complex
     static UChar c3[] = { 0x2FF, 0x330 };
-    codePath = Font::characterRangeCodePath(c3, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c3, 2));
     // Complex-Complex is Complex
     static UChar c4[] = { 0x36F, 0x330 };
-    codePath = Font::characterRangeCodePath(c4, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c4, 2));
     // SimpleWithGlyphOverflow-Simple is SimpleWithGlyphOverflow
     static UChar c5[] = { 0x1E00, 0x2FF };
-    codePath = Font::characterRangeCodePath(c5, 2);
-    EXPECT_EQ(Font::SimpleWithGlyphOverflow, codePath);
-
+    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c5, 2));
     // Simple-SimpleWithGlyphOverflow is SimpleWithGlyphOverflow
     static UChar c6[] = { 0x2FF, 0x2000 };
-    codePath = Font::characterRangeCodePath(c6, 2);
-    EXPECT_EQ(Font::SimpleWithGlyphOverflow, codePath);
-
+    EXPECT_EQ(Font::SimpleWithGlyphOverflow, Font::characterRangeCodePath(c6, 2));
     // SimpleWithGlyphOverflow-Complex is Complex
     static UChar c7[] = { 0x1E00, 0x330 };
-    codePath = Font::characterRangeCodePath(c7, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c7, 2));
     // Complex-SimpleWithGlyphOverflow is Complex
     static UChar c8[] = { 0x330, 0x2000 };
-    codePath = Font::characterRangeCodePath(c8, 2);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c8, 2));
     // Surrogate-Complex is Complex
     static UChar c9[] = { 0xD83C, 0xDDE5, 0x330 };
-    codePath = Font::characterRangeCodePath(c9, 3);
-    EXPECT_EQ(Font::Complex, codePath);
-
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c9, 3));
     // Complex-Surrogate is Complex
     static UChar c10[] = { 0x330, 0xD83C, 0xDDE5 };
-    codePath = Font::characterRangeCodePath(c10, 3);
-    EXPECT_EQ(Font::Complex, codePath);
+    EXPECT_EQ(Font::Complex, Font::characterRangeCodePath(c10, 3));
 }
 
+static void TestSpecificUChar32RangeIdeograph(UChar32 rangeStart, UChar32 rangeEnd)
+{
+    EXPECT_FALSE(Font::isCJKIdeograph(rangeStart - 1));
+    EXPECT_TRUE(Font::isCJKIdeograph(rangeStart));
+    EXPECT_TRUE(Font::isCJKIdeograph((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
+    EXPECT_TRUE(Font::isCJKIdeograph(rangeEnd));
+    EXPECT_FALSE(Font::isCJKIdeograph(rangeEnd + 1));
+}
+
+TEST(FontTest, TestIsCJKIdeograph)
+{
+    // The basic CJK Unified Ideographs block.
+    TestSpecificUChar32RangeIdeograph(0x4E00, 0x9FFF);
+    // CJK Unified Ideographs Extension A.
+    TestSpecificUChar32RangeIdeograph(0x3400, 0x4DBF);
+    // CJK Unified Ideographs Extension A and Kangxi Radicals.
+    TestSpecificUChar32RangeIdeograph(0x2E80, 0x2FDF);
+    // CJK Strokes.
+    TestSpecificUChar32RangeIdeograph(0x31C0, 0x31EF);
+    // CJK Compatibility Ideographs.
+    TestSpecificUChar32RangeIdeograph(0xF900, 0xFAFF);
+    // CJK Unified Ideographs Extension B.
+    TestSpecificUChar32RangeIdeograph(0x20000, 0x2A6DF);
+    // CJK Unified Ideographs Extension C.
+    // CJK Unified Ideographs Extension D.
+    TestSpecificUChar32RangeIdeograph(0x2A700, 0x2B81F);
+    // CJK Compatibility Ideographs Supplement.
+    TestSpecificUChar32RangeIdeograph(0x2F800, 0x2FA1F);
+}
+
+static void TestSpecificUChar32RangeIdeographSymbol(UChar32 rangeStart, UChar32 rangeEnd)
+{
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeStart - 1));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeStart));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol((UChar32)((uint64_t)rangeStart + (uint64_t)rangeEnd) / 2));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(rangeEnd));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(rangeEnd + 1));
+}
+
+TEST(FontTest, TestIsCJKIdeographOrSymbol)
+{
+    // CJK Compatibility Ideographs Supplement.
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2C7));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CA));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2CB));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2D9));
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2020));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2021));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2030));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203B));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x203C));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2042));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2047));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2048));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2049));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2051));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DD));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x20DE));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2100));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2103));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2105));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2109));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x210A));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2113));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2116));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2121));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x212B));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x213B));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2150));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2151));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2152));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2156, 0x215A);
+    TestSpecificUChar32RangeIdeographSymbol(0x2160, 0x216B);
+    TestSpecificUChar32RangeIdeographSymbol(0x2170, 0x217B);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x217F));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2189));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2307));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2312));
+
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23BD));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23BE));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23C4));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CC));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x23CD));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x23CE));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2423));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2460, 0x2492);
+    TestSpecificUChar32RangeIdeographSymbol(0x249C, 0x24FF);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A0));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A1));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25A2));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AA));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25AB));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B1));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B2));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B3));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B6));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25B7));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BC));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25BD));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C0));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C1));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C6));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C7));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25C9));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CB));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25CC));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x25CE, 0x25D3);
+    TestSpecificUChar32RangeIdeographSymbol(0x25E2, 0x25E6);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x25EF));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2600, 0x2603);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2605));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2606));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x260E));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2616));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2617));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2640));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2642));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2660, 0x266F);
+    TestSpecificUChar32RangeIdeographSymbol(0x2672, 0x267D);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26A0));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BD));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x26BE));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2713));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x271A));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x273F));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2740));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2756));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2776, 0x277F);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x2B1A));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x2FF0, 0x302F);
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3031));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x312F));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x3130));
+
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x318F));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3190));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x319F));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x31BF));
+
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0x31FF));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3200));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x3300));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x33FF));
+
+    TestSpecificUChar32RangeIdeographSymbol(0xF860, 0xF862);
+    TestSpecificUChar32RangeIdeographSymbol(0xFE30, 0xFE4F);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE10));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE11));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE12));
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0xFE19));
+
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF0D));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1B));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1C));
+    EXPECT_FALSE(Font::isCJKIdeographOrSymbol(0xFF1E));
+
+    TestSpecificUChar32RangeIdeographSymbol(0xFF00, 0xFFEF);
+
+    EXPECT_TRUE(Font::isCJKIdeographOrSymbol(0x1F100));
+
+    TestSpecificUChar32RangeIdeographSymbol(0x1F110, 0x1F129);
+    TestSpecificUChar32RangeIdeographSymbol(0x1F130, 0x1F149);
+    TestSpecificUChar32RangeIdeographSymbol(0x1F150, 0x1F169);
+    TestSpecificUChar32RangeIdeographSymbol(0x1F170, 0x1F189);
+    TestSpecificUChar32RangeIdeographSymbol(0x1F200, 0x1F6FF);
+}
 
 } // namespace WebCore
 
diff --git a/Source/core/platform/text/LocaleICU.cpp b/Source/core/platform/text/LocaleICU.cpp
index e94fed9..a0f05dd 100644
--- a/Source/core/platform/text/LocaleICU.cpp
+++ b/Source/core/platform/text/LocaleICU.cpp
@@ -36,7 +36,6 @@
 #include <limits>
 #include "wtf/DateMath.h"
 #include "wtf/PassOwnPtr.h"
-#include "wtf/text/StringBuffer.h"
 #include "wtf/text/StringBuilder.h"
 
 using namespace icu;
@@ -84,9 +83,9 @@
     ASSERT(U_SUCCESS(status) || status == U_BUFFER_OVERFLOW_ERROR);
     if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR)
         return String();
-    StringBuffer<UChar> buffer(bufferLength);
+    Vector<UChar> buffer(bufferLength);
     status = U_ZERO_ERROR;
-    unum_getSymbol(m_numberFormat, symbol, buffer.characters(), bufferLength, &status);
+    unum_getSymbol(m_numberFormat, symbol, buffer.data(), bufferLength, &status);
     if (U_FAILURE(status))
         return String();
     return String::adopt(buffer);
@@ -99,9 +98,9 @@
     ASSERT(U_SUCCESS(status) || status == U_BUFFER_OVERFLOW_ERROR);
     if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR)
         return String();
-    StringBuffer<UChar> buffer(bufferLength);
+    Vector<UChar> buffer(bufferLength);
     status = U_ZERO_ERROR;
-    unum_getTextAttribute(m_numberFormat, tag, buffer.characters(), bufferLength, &status);
+    unum_getTextAttribute(m_numberFormat, tag, buffer.data(), bufferLength, &status);
     ASSERT(U_SUCCESS(status));
     if (U_FAILURE(status))
         return String();
@@ -160,9 +159,9 @@
     int32_t length = udat_toPattern(dateFormat, TRUE, 0, 0, &status);
     if (status != U_BUFFER_OVERFLOW_ERROR || !length)
         return emptyString();
-    StringBuffer<UChar> buffer(length);
+    Vector<UChar> buffer(length);
     status = U_ZERO_ERROR;
-    udat_toPattern(dateFormat, TRUE, buffer.characters(), length, &status);
+    udat_toPattern(dateFormat, TRUE, buffer.data(), length, &status);
     if (U_FAILURE(status))
         return emptyString();
     return String::adopt(buffer);
@@ -182,9 +181,9 @@
         int32_t length = udat_getSymbols(dateFormat, type, startIndex + i, 0, 0, &status);
         if (status != U_BUFFER_OVERFLOW_ERROR)
             return PassOwnPtr<Vector<String> >();
-        StringBuffer<UChar> buffer(length);
+        Vector<UChar> buffer(length);
         status = U_ZERO_ERROR;
-        udat_getSymbols(dateFormat, type, startIndex + i, buffer.characters(), length, &status);
+        udat_getSymbols(dateFormat, type, startIndex + i, buffer.data(), length, &status);
         if (U_FAILURE(status))
             return PassOwnPtr<Vector<String> >();
         labels->append(String::adopt(buffer));
@@ -328,9 +327,9 @@
     skeleton.appendTo(skeletonCharacters);
     int32_t length = udatpg_getBestPattern(patternGenerator, skeletonCharacters.data(), skeletonCharacters.size(), 0, 0, &status);
     if (status == U_BUFFER_OVERFLOW_ERROR && length) {
-        StringBuffer<UChar> buffer(length);
+        Vector<UChar> buffer(length);
         status = U_ZERO_ERROR;
-        udatpg_getBestPattern(patternGenerator, skeletonCharacters.data(), skeletonCharacters.size(), buffer.characters(), length, &status);
+        udatpg_getBestPattern(patternGenerator, skeletonCharacters.data(), skeletonCharacters.size(), buffer.data(), length, &status);
         if (U_SUCCESS(status))
             format = String::adopt(buffer);
     }
diff --git a/Source/core/rendering/HitTestResult.cpp b/Source/core/rendering/HitTestResult.cpp
index fd72506..ae5cf68 100644
--- a/Source/core/rendering/HitTestResult.cpp
+++ b/Source/core/rendering/HitTestResult.cpp
@@ -487,8 +487,7 @@
 
 Element* HitTestResult::innerElement() const
 {
-    NodeRenderingTraversal::ParentDetails details;
-    for (Node* node = m_innerNode.get(); node; node = NodeRenderingTraversal::parent(node, &details))
+    for (Node* node = m_innerNode.get(); node; node = NodeRenderingTraversal::parent(node))
         if (node->isElementNode())
             return toElement(node);
 
diff --git a/Source/core/svg/SVGFEImageElement.cpp b/Source/core/svg/SVGFEImageElement.cpp
index e6f28f8..37e8bc4 100644
--- a/Source/core/svg/SVGFEImageElement.cpp
+++ b/Source/core/svg/SVGFEImageElement.cpp
@@ -27,8 +27,8 @@
 #include "XLinkNames.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedImage.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/platform/graphics/Image.h"
 #include "core/rendering/svg/RenderSVGResource.h"
 #include "core/svg/SVGElementInstance.h"
@@ -79,8 +79,8 @@
 
 void SVGFEImageElement::requestImageResource()
 {
-    CachedResourceRequest request(ResourceRequest(ownerDocument()->completeURL(hrefCurrentValue())), localName());
-    m_cachedImage = document()->cachedResourceLoader()->requestImage(request);
+    FetchRequest request(ResourceRequest(ownerDocument()->completeURL(hrefCurrentValue())), localName());
+    m_cachedImage = document()->fetcher()->requestImage(request);
 
     if (m_cachedImage)
         m_cachedImage->addClient(this);
diff --git a/Source/core/svg/SVGFontFaceUriElement.cpp b/Source/core/svg/SVGFontFaceUriElement.cpp
index c353766..a260715 100644
--- a/Source/core/svg/SVGFontFaceUriElement.cpp
+++ b/Source/core/svg/SVGFontFaceUriElement.cpp
@@ -28,8 +28,8 @@
 #include "core/css/CSSFontFaceSrcValue.h"
 #include "core/dom/Document.h"
 #include "core/loader/cache/CachedFont.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/svg/SVGFontFaceElement.h"
 
 namespace WebCore {
@@ -95,12 +95,12 @@
 
     const AtomicString& href = getAttribute(XLinkNames::hrefAttr);
     if (!href.isNull()) {
-        CachedResourceLoader* cachedResourceLoader = document()->cachedResourceLoader();
-        CachedResourceRequest request(ResourceRequest(document()->completeURL(href)), localName());
-        m_cachedFont = cachedResourceLoader->requestFont(request);
+        ResourceFetcher* fetcher = document()->fetcher();
+        FetchRequest request(ResourceRequest(document()->completeURL(href)), localName());
+        m_cachedFont = fetcher->requestFont(request);
         if (m_cachedFont) {
             m_cachedFont->addClient(this);
-            m_cachedFont->beginLoadIfNeeded(cachedResourceLoader);
+            m_cachedFont->beginLoadIfNeeded(fetcher);
         }
     } else
         m_cachedFont = 0;
diff --git a/Source/core/svg/SVGUseElement.cpp b/Source/core/svg/SVGUseElement.cpp
index 87f7faf..0185538 100644
--- a/Source/core/svg/SVGUseElement.cpp
+++ b/Source/core/svg/SVGUseElement.cpp
@@ -34,8 +34,8 @@
 #include "core/dom/shadow/ElementShadow.h"
 #include "core/dom/shadow/ShadowRoot.h"
 #include "core/loader/cache/CachedDocument.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/rendering/svg/RenderSVGResource.h"
 #include "core/rendering/svg/RenderSVGTransformableContainer.h"
 #include "core/svg/SVGElementInstance.h"
@@ -233,8 +233,8 @@
         if (isExternalReference) {
             KURL url = document()->completeURL(hrefCurrentValue());
             if (url.hasFragmentIdentifier()) {
-                CachedResourceRequest request(ResourceRequest(url.string()), localName());
-                setCachedDocument(document()->cachedResourceLoader()->requestSVGDocument(request));
+                FetchRequest request(ResourceRequest(url.string()), localName());
+                setCachedDocument(document()->fetcher()->requestSVGDocument(request));
             }
         } else
             setCachedDocument(0);
diff --git a/Source/core/testing/Internals.cpp b/Source/core/testing/Internals.cpp
index 53dd5ef..b8189bf 100644
--- a/Source/core/testing/Internals.cpp
+++ b/Source/core/testing/Internals.cpp
@@ -82,8 +82,8 @@
 #include "core/inspector/InspectorOverlay.h"
 #include "core/inspector/InstrumentingAgents.h"
 #include "core/loader/FrameLoader.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/MemoryCache.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Chrome.h"
 #include "core/page/ChromeClient.h"
 #include "core/page/DOMPoint.h"
@@ -264,7 +264,7 @@
 bool Internals::isPreloaded(const String& url)
 {
     Document* document = contextDocument();
-    return document->cachedResourceLoader()->isPreloaded(url);
+    return document->fetcher()->isPreloaded(url);
 }
 
 bool Internals::isLoadingFromMemoryCache(const String& url)
@@ -667,7 +667,9 @@
         return 0;
     }
 
-    return NodeRenderingContext(node).insertionPoint();
+    NodeRenderingTraversal::ParentDetails parentDetails;
+    NodeRenderingTraversal::parent(node, &parentDetails);
+    return parentDetails.insertionPoint();
 }
 
 String Internals::shadowPseudoId(Element* element, ExceptionCode& ec)
@@ -1684,10 +1686,10 @@
         return;
     }
 
-    CachedResourceLoader* cachedResourceLoader = document->cachedResourceLoader();
-    if (!cachedResourceLoader)
+    ResourceFetcher* fetcher = document->fetcher();
+    if (!fetcher)
         return;
-    cachedResourceLoader->garbageCollectDocumentResources();
+    fetcher->garbageCollectDocumentResources();
 }
 
 void Internals::evictAllCachedResources() const
diff --git a/Source/core/webcore_derived.target.darwin-arm.mk b/Source/core/webcore_derived.target.darwin-arm.mk
index a7900f2..c72de6b 100644
--- a/Source/core/webcore_derived.target.darwin-arm.mk
+++ b/Source/core/webcore_derived.target.darwin-arm.mk
@@ -441,6 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -454,9 +457,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -610,6 +610,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -623,9 +626,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_derived.target.darwin-mips.mk b/Source/core/webcore_derived.target.darwin-mips.mk
index 4c94da6..eb29fb2 100644
--- a/Source/core/webcore_derived.target.darwin-mips.mk
+++ b/Source/core/webcore_derived.target.darwin-mips.mk
@@ -441,6 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -454,9 +457,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -610,6 +610,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -623,9 +626,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_derived.target.darwin-x86.mk b/Source/core/webcore_derived.target.darwin-x86.mk
index 996e817..e795895 100644
--- a/Source/core/webcore_derived.target.darwin-x86.mk
+++ b/Source/core/webcore_derived.target.darwin-x86.mk
@@ -443,6 +443,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -456,9 +459,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -615,6 +615,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -628,9 +631,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_derived.target.linux-arm.mk b/Source/core/webcore_derived.target.linux-arm.mk
index a7900f2..c72de6b 100644
--- a/Source/core/webcore_derived.target.linux-arm.mk
+++ b/Source/core/webcore_derived.target.linux-arm.mk
@@ -441,6 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -454,9 +457,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -610,6 +610,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -623,9 +626,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_derived.target.linux-mips.mk b/Source/core/webcore_derived.target.linux-mips.mk
index 4c94da6..eb29fb2 100644
--- a/Source/core/webcore_derived.target.linux-mips.mk
+++ b/Source/core/webcore_derived.target.linux-mips.mk
@@ -441,6 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -454,9 +457,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -610,6 +610,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -623,9 +626,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_derived.target.linux-x86.mk b/Source/core/webcore_derived.target.linux-x86.mk
index 996e817..e795895 100644
--- a/Source/core/webcore_derived.target.linux-x86.mk
+++ b/Source/core/webcore_derived.target.linux-x86.mk
@@ -443,6 +443,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -456,9 +459,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -615,6 +615,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
+	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/webkit \
 	$(gyp_shared_intermediate_dir)/webkit/bindings \
 	$(LOCAL_PATH)/third_party/WebKit \
@@ -628,9 +631,6 @@
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/inspector \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/page \
 	$(LOCAL_PATH)/third_party/WebKit/Source/core/svg \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.darwin-arm.mk b/Source/core/webcore_dom.target.darwin-arm.mk
index 7aca931..9579a1c 100644
--- a/Source/core/webcore_dom.target.darwin-arm.mk
+++ b/Source/core/webcore_dom.target.darwin-arm.mk
@@ -284,9 +284,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -442,9 +442,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.darwin-mips.mk b/Source/core/webcore_dom.target.darwin-mips.mk
index 5aae798..dd5179f 100644
--- a/Source/core/webcore_dom.target.darwin-mips.mk
+++ b/Source/core/webcore_dom.target.darwin-mips.mk
@@ -284,9 +284,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -442,9 +442,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.darwin-x86.mk b/Source/core/webcore_dom.target.darwin-x86.mk
index ca51e59..73e93d4 100644
--- a/Source/core/webcore_dom.target.darwin-x86.mk
+++ b/Source/core/webcore_dom.target.darwin-x86.mk
@@ -286,9 +286,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -447,9 +447,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.linux-arm.mk b/Source/core/webcore_dom.target.linux-arm.mk
index 7aca931..9579a1c 100644
--- a/Source/core/webcore_dom.target.linux-arm.mk
+++ b/Source/core/webcore_dom.target.linux-arm.mk
@@ -284,9 +284,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -442,9 +442,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.linux-mips.mk b/Source/core/webcore_dom.target.linux-mips.mk
index 5aae798..dd5179f 100644
--- a/Source/core/webcore_dom.target.linux-mips.mk
+++ b/Source/core/webcore_dom.target.linux-mips.mk
@@ -284,9 +284,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -442,9 +442,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_dom.target.linux-x86.mk b/Source/core/webcore_dom.target.linux-x86.mk
index ca51e59..73e93d4 100644
--- a/Source/core/webcore_dom.target.linux-x86.mk
+++ b/Source/core/webcore_dom.target.linux-x86.mk
@@ -286,9 +286,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -447,9 +447,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.darwin-arm.mk b/Source/core/webcore_html.target.darwin-arm.mk
index 86b7584..b3c41d1 100644
--- a/Source/core/webcore_html.target.darwin-arm.mk
+++ b/Source/core/webcore_html.target.darwin-arm.mk
@@ -385,9 +385,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -543,9 +543,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.darwin-mips.mk b/Source/core/webcore_html.target.darwin-mips.mk
index 325abb0..315df96 100644
--- a/Source/core/webcore_html.target.darwin-mips.mk
+++ b/Source/core/webcore_html.target.darwin-mips.mk
@@ -385,9 +385,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -543,9 +543,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.darwin-x86.mk b/Source/core/webcore_html.target.darwin-x86.mk
index f8e91ad..703b502 100644
--- a/Source/core/webcore_html.target.darwin-x86.mk
+++ b/Source/core/webcore_html.target.darwin-x86.mk
@@ -387,9 +387,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -548,9 +548,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.linux-arm.mk b/Source/core/webcore_html.target.linux-arm.mk
index 86b7584..b3c41d1 100644
--- a/Source/core/webcore_html.target.linux-arm.mk
+++ b/Source/core/webcore_html.target.linux-arm.mk
@@ -385,9 +385,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -543,9 +543,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.linux-mips.mk b/Source/core/webcore_html.target.linux-mips.mk
index 325abb0..315df96 100644
--- a/Source/core/webcore_html.target.linux-mips.mk
+++ b/Source/core/webcore_html.target.linux-mips.mk
@@ -385,9 +385,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -543,9 +543,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_html.target.linux-x86.mk b/Source/core/webcore_html.target.linux-x86.mk
index f8e91ad..703b502 100644
--- a/Source/core/webcore_html.target.linux-x86.mk
+++ b/Source/core/webcore_html.target.linux-x86.mk
@@ -387,9 +387,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -548,9 +548,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.darwin-arm.mk b/Source/core/webcore_platform.target.darwin-arm.mk
index a282faa..a8c2fdc 100644
--- a/Source/core/webcore_platform.target.darwin-arm.mk
+++ b/Source/core/webcore_platform.target.darwin-arm.mk
@@ -438,9 +438,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -597,9 +597,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.darwin-mips.mk b/Source/core/webcore_platform.target.darwin-mips.mk
index 494e6e8..7719aa0 100644
--- a/Source/core/webcore_platform.target.darwin-mips.mk
+++ b/Source/core/webcore_platform.target.darwin-mips.mk
@@ -438,9 +438,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -597,9 +597,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.darwin-x86.mk b/Source/core/webcore_platform.target.darwin-x86.mk
index a97434c..dd7be0b 100644
--- a/Source/core/webcore_platform.target.darwin-x86.mk
+++ b/Source/core/webcore_platform.target.darwin-x86.mk
@@ -440,9 +440,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -602,9 +602,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.linux-arm.mk b/Source/core/webcore_platform.target.linux-arm.mk
index a282faa..a8c2fdc 100644
--- a/Source/core/webcore_platform.target.linux-arm.mk
+++ b/Source/core/webcore_platform.target.linux-arm.mk
@@ -438,9 +438,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -597,9 +597,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.linux-mips.mk b/Source/core/webcore_platform.target.linux-mips.mk
index 494e6e8..7719aa0 100644
--- a/Source/core/webcore_platform.target.linux-mips.mk
+++ b/Source/core/webcore_platform.target.linux-mips.mk
@@ -438,9 +438,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -597,9 +597,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform.target.linux-x86.mk b/Source/core/webcore_platform.target.linux-x86.mk
index a97434c..dd7be0b 100644
--- a/Source/core/webcore_platform.target.linux-x86.mk
+++ b/Source/core/webcore_platform.target.linux-x86.mk
@@ -440,9 +440,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -602,9 +602,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.darwin-arm.mk b/Source/core/webcore_platform_geometry.target.darwin-arm.mk
index 70b2c97..2b4667f 100644
--- a/Source/core/webcore_platform_geometry.target.darwin-arm.mk
+++ b/Source/core/webcore_platform_geometry.target.darwin-arm.mk
@@ -135,9 +135,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -293,9 +293,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.darwin-mips.mk b/Source/core/webcore_platform_geometry.target.darwin-mips.mk
index 47e620f..a409d4d 100644
--- a/Source/core/webcore_platform_geometry.target.darwin-mips.mk
+++ b/Source/core/webcore_platform_geometry.target.darwin-mips.mk
@@ -135,9 +135,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -293,9 +293,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.darwin-x86.mk b/Source/core/webcore_platform_geometry.target.darwin-x86.mk
index bc09104..3bb6f75 100644
--- a/Source/core/webcore_platform_geometry.target.darwin-x86.mk
+++ b/Source/core/webcore_platform_geometry.target.darwin-x86.mk
@@ -137,9 +137,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -298,9 +298,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.linux-arm.mk b/Source/core/webcore_platform_geometry.target.linux-arm.mk
index 70b2c97..2b4667f 100644
--- a/Source/core/webcore_platform_geometry.target.linux-arm.mk
+++ b/Source/core/webcore_platform_geometry.target.linux-arm.mk
@@ -135,9 +135,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -293,9 +293,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.linux-mips.mk b/Source/core/webcore_platform_geometry.target.linux-mips.mk
index 47e620f..a409d4d 100644
--- a/Source/core/webcore_platform_geometry.target.linux-mips.mk
+++ b/Source/core/webcore_platform_geometry.target.linux-mips.mk
@@ -135,9 +135,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -293,9 +293,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_platform_geometry.target.linux-x86.mk b/Source/core/webcore_platform_geometry.target.linux-x86.mk
index bc09104..3bb6f75 100644
--- a/Source/core/webcore_platform_geometry.target.linux-x86.mk
+++ b/Source/core/webcore_platform_geometry.target.linux-x86.mk
@@ -137,9 +137,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -298,9 +298,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.darwin-arm.mk b/Source/core/webcore_remaining.target.darwin-arm.mk
index 431c4f8..e5513fa 100644
--- a/Source/core/webcore_remaining.target.darwin-arm.mk
+++ b/Source/core/webcore_remaining.target.darwin-arm.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -598,9 +598,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -758,9 +758,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.darwin-mips.mk b/Source/core/webcore_remaining.target.darwin-mips.mk
index 094350e..bee8d1e 100644
--- a/Source/core/webcore_remaining.target.darwin-mips.mk
+++ b/Source/core/webcore_remaining.target.darwin-mips.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -598,9 +598,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -758,9 +758,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.darwin-x86.mk b/Source/core/webcore_remaining.target.darwin-x86.mk
index 4c284a4..d766a59 100644
--- a/Source/core/webcore_remaining.target.darwin-x86.mk
+++ b/Source/core/webcore_remaining.target.darwin-x86.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -600,9 +600,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -763,9 +763,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.linux-arm.mk b/Source/core/webcore_remaining.target.linux-arm.mk
index 431c4f8..e5513fa 100644
--- a/Source/core/webcore_remaining.target.linux-arm.mk
+++ b/Source/core/webcore_remaining.target.linux-arm.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -598,9 +598,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -758,9 +758,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.linux-mips.mk b/Source/core/webcore_remaining.target.linux-mips.mk
index 094350e..bee8d1e 100644
--- a/Source/core/webcore_remaining.target.linux-mips.mk
+++ b/Source/core/webcore_remaining.target.linux-mips.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -598,9 +598,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -758,9 +758,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_remaining.target.linux-x86.mk b/Source/core/webcore_remaining.target.linux-x86.mk
index 4c284a4..d766a59 100644
--- a/Source/core/webcore_remaining.target.linux-x86.mk
+++ b/Source/core/webcore_remaining.target.linux-x86.mk
@@ -355,8 +355,8 @@
 	third_party/WebKit/Source/core/loader/cache/CachedRawResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResource.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedResourceHandle.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceLoader.cpp \
-	third_party/WebKit/Source/core/loader/cache/CachedResourceRequest.cpp \
+	third_party/WebKit/Source/core/loader/cache/ResourceFetcher.cpp \
+	third_party/WebKit/Source/core/loader/cache/FetchRequest.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedScript.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedShader.cpp \
 	third_party/WebKit/Source/core/loader/cache/CachedTextTrack.cpp \
@@ -600,9 +600,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -763,9 +763,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.darwin-arm.mk b/Source/core/webcore_rendering.target.darwin-arm.mk
index ac308c8..5d0e8e0 100644
--- a/Source/core/webcore_rendering.target.darwin-arm.mk
+++ b/Source/core/webcore_rendering.target.darwin-arm.mk
@@ -276,9 +276,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -434,9 +434,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.darwin-mips.mk b/Source/core/webcore_rendering.target.darwin-mips.mk
index a2fd928..9021834 100644
--- a/Source/core/webcore_rendering.target.darwin-mips.mk
+++ b/Source/core/webcore_rendering.target.darwin-mips.mk
@@ -276,9 +276,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -434,9 +434,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.darwin-x86.mk b/Source/core/webcore_rendering.target.darwin-x86.mk
index c224097..b4ede29 100644
--- a/Source/core/webcore_rendering.target.darwin-x86.mk
+++ b/Source/core/webcore_rendering.target.darwin-x86.mk
@@ -279,9 +279,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -441,9 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.linux-arm.mk b/Source/core/webcore_rendering.target.linux-arm.mk
index ac308c8..5d0e8e0 100644
--- a/Source/core/webcore_rendering.target.linux-arm.mk
+++ b/Source/core/webcore_rendering.target.linux-arm.mk
@@ -276,9 +276,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -434,9 +434,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.linux-mips.mk b/Source/core/webcore_rendering.target.linux-mips.mk
index a2fd928..9021834 100644
--- a/Source/core/webcore_rendering.target.linux-mips.mk
+++ b/Source/core/webcore_rendering.target.linux-mips.mk
@@ -276,9 +276,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -434,9 +434,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_rendering.target.linux-x86.mk b/Source/core/webcore_rendering.target.linux-x86.mk
index c224097..b4ede29 100644
--- a/Source/core/webcore_rendering.target.linux-x86.mk
+++ b/Source/core/webcore_rendering.target.linux-x86.mk
@@ -279,9 +279,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -441,9 +441,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.darwin-arm.mk b/Source/core/webcore_svg.target.darwin-arm.mk
index 085dc28..8fdd681 100644
--- a/Source/core/webcore_svg.target.darwin-arm.mk
+++ b/Source/core/webcore_svg.target.darwin-arm.mk
@@ -344,9 +344,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -502,9 +502,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.darwin-mips.mk b/Source/core/webcore_svg.target.darwin-mips.mk
index f58e142..9059234 100644
--- a/Source/core/webcore_svg.target.darwin-mips.mk
+++ b/Source/core/webcore_svg.target.darwin-mips.mk
@@ -344,9 +344,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -502,9 +502,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.darwin-x86.mk b/Source/core/webcore_svg.target.darwin-x86.mk
index 314247c..8a49989 100644
--- a/Source/core/webcore_svg.target.darwin-x86.mk
+++ b/Source/core/webcore_svg.target.darwin-x86.mk
@@ -346,9 +346,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -507,9 +507,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.linux-arm.mk b/Source/core/webcore_svg.target.linux-arm.mk
index 085dc28..8fdd681 100644
--- a/Source/core/webcore_svg.target.linux-arm.mk
+++ b/Source/core/webcore_svg.target.linux-arm.mk
@@ -344,9 +344,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -502,9 +502,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.linux-mips.mk b/Source/core/webcore_svg.target.linux-mips.mk
index f58e142..9059234 100644
--- a/Source/core/webcore_svg.target.linux-mips.mk
+++ b/Source/core/webcore_svg.target.linux-mips.mk
@@ -344,9 +344,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -502,9 +502,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/webcore_svg.target.linux-x86.mk b/Source/core/webcore_svg.target.linux-x86.mk
index 314247c..8a49989 100644
--- a/Source/core/webcore_svg.target.linux-x86.mk
+++ b/Source/core/webcore_svg.target.linux-x86.mk
@@ -346,9 +346,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -507,9 +507,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/core/workers/DedicatedWorkerGlobalScope.cpp b/Source/core/workers/DedicatedWorkerGlobalScope.cpp
index 358f8cb..5585cdf 100644
--- a/Source/core/workers/DedicatedWorkerGlobalScope.cpp
+++ b/Source/core/workers/DedicatedWorkerGlobalScope.cpp
@@ -42,13 +42,13 @@
 
 PassRefPtr<DedicatedWorkerGlobalScope> DedicatedWorkerGlobalScope::create(DedicatedWorkerThread* thread, PassOwnPtr<WorkerThreadStartupData> startupData, double timeOrigin)
 {
-    RefPtr<DedicatedWorkerGlobalScope> context = adoptRef(new DedicatedWorkerGlobalScope(startupData->m_scriptURL, startupData->m_userAgent, thread, startupData->m_topOrigin, timeOrigin, startupData->m_workerClients.release()));
+    RefPtr<DedicatedWorkerGlobalScope> context = adoptRef(new DedicatedWorkerGlobalScope(startupData->m_scriptURL, startupData->m_userAgent, thread, timeOrigin, startupData->m_workerClients.release()));
     context->applyContentSecurityPolicyFromString(startupData->m_contentSecurityPolicy, startupData->m_contentSecurityPolicyType);
     return context.release();
 }
 
-DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const KURL& url, const String& userAgent, DedicatedWorkerThread* thread, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin, PassOwnPtr<WorkerClients> workerClients)
-    : WorkerGlobalScope(url, userAgent, thread, topOrigin, timeOrigin, workerClients)
+DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope(const KURL& url, const String& userAgent, DedicatedWorkerThread* thread, double timeOrigin, PassOwnPtr<WorkerClients> workerClients)
+    : WorkerGlobalScope(url, userAgent, thread, timeOrigin, workerClients)
 {
     ScriptWrappable::init(this);
 }
diff --git a/Source/core/workers/DedicatedWorkerGlobalScope.h b/Source/core/workers/DedicatedWorkerGlobalScope.h
index 022145d..3aea000 100644
--- a/Source/core/workers/DedicatedWorkerGlobalScope.h
+++ b/Source/core/workers/DedicatedWorkerGlobalScope.h
@@ -61,7 +61,7 @@
     DedicatedWorkerThread* thread();
 
 private:
-    DedicatedWorkerGlobalScope(const KURL&, const String& userAgent, DedicatedWorkerThread*, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin, PassOwnPtr<WorkerClients>);
+    DedicatedWorkerGlobalScope(const KURL&, const String& userAgent, DedicatedWorkerThread*, double timeOrigin, PassOwnPtr<WorkerClients>);
 };
 
 } // namespace WebCore
diff --git a/Source/core/workers/SharedWorkerGlobalScope.cpp b/Source/core/workers/SharedWorkerGlobalScope.cpp
index f135fe9..fe229eb 100644
--- a/Source/core/workers/SharedWorkerGlobalScope.cpp
+++ b/Source/core/workers/SharedWorkerGlobalScope.cpp
@@ -59,7 +59,7 @@
 }
 
 SharedWorkerGlobalScope::SharedWorkerGlobalScope(const String& name, const KURL& url, const String& userAgent, SharedWorkerThread* thread, PassOwnPtr<WorkerClients> workerClients)
-    : WorkerGlobalScope(url, userAgent, thread, 0, monotonicallyIncreasingTime(), workerClients)
+    : WorkerGlobalScope(url, userAgent, thread, monotonicallyIncreasingTime(), workerClients)
     , m_name(name)
 {
     ScriptWrappable::init(this);
diff --git a/Source/core/workers/Worker.cpp b/Source/core/workers/Worker.cpp
index 50e62b1..6c412d1 100644
--- a/Source/core/workers/Worker.cpp
+++ b/Source/core/workers/Worker.cpp
@@ -35,7 +35,7 @@
 #include "core/dom/MessageEvent.h"
 #include "core/inspector/InspectorInstrumentation.h"
 #include "core/loader/FrameLoader.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/DOMWindow.h"
 #include "core/page/Frame.h"
 #include "core/page/UseCounter.h"
diff --git a/Source/core/workers/WorkerGlobalScope.cpp b/Source/core/workers/WorkerGlobalScope.cpp
index 72cc8f8..1af5495 100644
--- a/Source/core/workers/WorkerGlobalScope.cpp
+++ b/Source/core/workers/WorkerGlobalScope.cpp
@@ -82,7 +82,7 @@
     virtual bool isCleanupTask() const { return true; }
 };
 
-WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, WorkerThread* thread, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin, PassOwnPtr<WorkerClients> workerClients)
+WorkerGlobalScope::WorkerGlobalScope(const KURL& url, const String& userAgent, WorkerThread* thread, double timeOrigin, PassOwnPtr<WorkerClients> workerClients)
     : m_url(url)
     , m_userAgent(userAgent)
     , m_script(adoptPtr(new WorkerScriptController(this)))
@@ -90,7 +90,6 @@
     , m_workerInspectorController(adoptPtr(new WorkerInspectorController(this)))
     , m_closing(false)
     , m_eventQueue(WorkerEventQueue::create(this))
-    , m_topOrigin(topOrigin)
     , m_timeOrigin(timeOrigin)
     , m_workerClients(workerClients)
 {
diff --git a/Source/core/workers/WorkerGlobalScope.h b/Source/core/workers/WorkerGlobalScope.h
index 8e764d4..3a9d05d 100644
--- a/Source/core/workers/WorkerGlobalScope.h
+++ b/Source/core/workers/WorkerGlobalScope.h
@@ -127,14 +127,12 @@
 
         bool idleNotification();
 
-        virtual const SecurityOrigin* topOrigin() const OVERRIDE { return m_topOrigin.get(); }
-
         double timeOrigin() const { return m_timeOrigin; }
 
         WorkerClients* clients() { return m_workerClients.get(); }
 
     protected:
-        WorkerGlobalScope(const KURL&, const String& userAgent, WorkerThread*, PassRefPtr<SecurityOrigin> topOrigin, double timeOrigin, PassOwnPtr<WorkerClients>);
+        WorkerGlobalScope(const KURL&, const String& userAgent, WorkerThread*, double timeOrigin, PassOwnPtr<WorkerClients>);
         void applyContentSecurityPolicyFromString(const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType);
 
         virtual void logExceptionToConsole(const String& errorMessage, const String& sourceURL, int lineNumber, int columnNumber, PassRefPtr<ScriptCallStack>) OVERRIDE;
@@ -175,8 +173,6 @@
 
         OwnPtr<WorkerEventQueue> m_eventQueue;
 
-        RefPtr<SecurityOrigin> m_topOrigin;
-
         OwnPtr<WorkerClients> m_workerClients;
 
         double m_timeOrigin;
diff --git a/Source/core/workers/WorkerMessagingProxy.cpp b/Source/core/workers/WorkerMessagingProxy.cpp
index 9e51d50..d165ee2 100644
--- a/Source/core/workers/WorkerMessagingProxy.cpp
+++ b/Source/core/workers/WorkerMessagingProxy.cpp
@@ -269,7 +269,7 @@
     ASSERT(m_scriptExecutionContext->isDocument());
     Document* document = toDocument(m_scriptExecutionContext.get());
 
-    OwnPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::create(scriptURL, userAgent, sourceCode, startMode, document->contentSecurityPolicy()->deprecatedHeader(), document->contentSecurityPolicy()->deprecatedHeaderType(), document->topOrigin(), m_workerClients.release());
+    OwnPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::create(scriptURL, userAgent, sourceCode, startMode, document->contentSecurityPolicy()->deprecatedHeader(), document->contentSecurityPolicy()->deprecatedHeaderType(), m_workerClients.release());
     double originTime = document->loader() ? document->loader()->timing()->referenceMonotonicTime() : monotonicallyIncreasingTime();
 
     RefPtr<DedicatedWorkerThread> thread = DedicatedWorkerThread::create(*this, *this, originTime, startupData.release());
diff --git a/Source/core/workers/WorkerThreadStartupData.cpp b/Source/core/workers/WorkerThreadStartupData.cpp
index b8ef129..15924d9 100644
--- a/Source/core/workers/WorkerThreadStartupData.cpp
+++ b/Source/core/workers/WorkerThreadStartupData.cpp
@@ -32,18 +32,16 @@
 #include "WorkerThreadStartupData.h"
 
 #include "core/workers/WorkerClients.h"
-#include "weborigin/SecurityOrigin.h"
 
 namespace WebCore {
 
-WorkerThreadStartupData::WorkerThreadStartupData(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, const SecurityOrigin* topOrigin, PassOwnPtr<WorkerClients> workerClients)
+WorkerThreadStartupData::WorkerThreadStartupData(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassOwnPtr<WorkerClients> workerClients)
     : m_scriptURL(scriptURL.copy())
     , m_userAgent(userAgent.isolatedCopy())
     , m_sourceCode(sourceCode.isolatedCopy())
     , m_startMode(startMode)
     , m_contentSecurityPolicy(contentSecurityPolicy.isolatedCopy())
     , m_contentSecurityPolicyType(contentSecurityPolicyType)
-    , m_topOrigin(topOrigin ? topOrigin->isolatedCopy() : 0)
     , m_workerClients(workerClients)
 {
 }
diff --git a/Source/core/workers/WorkerThreadStartupData.h b/Source/core/workers/WorkerThreadStartupData.h
index ce1daa0..2ff3ff8 100644
--- a/Source/core/workers/WorkerThreadStartupData.h
+++ b/Source/core/workers/WorkerThreadStartupData.h
@@ -45,9 +45,9 @@
 struct WorkerThreadStartupData {
     WTF_MAKE_NONCOPYABLE(WorkerThreadStartupData); WTF_MAKE_FAST_ALLOCATED;
 public:
-    static PassOwnPtr<WorkerThreadStartupData> create(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, const SecurityOrigin* topOrigin, PassOwnPtr<WorkerClients> workerClients)
+    static PassOwnPtr<WorkerThreadStartupData> create(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode startMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassOwnPtr<WorkerClients> workerClients)
     {
-        return adoptPtr(new WorkerThreadStartupData(scriptURL, userAgent, sourceCode, startMode, contentSecurityPolicy, contentSecurityPolicyType, topOrigin, workerClients));
+        return adoptPtr(new WorkerThreadStartupData(scriptURL, userAgent, sourceCode, startMode, contentSecurityPolicy, contentSecurityPolicyType, workerClients));
     }
 
     ~WorkerThreadStartupData();
@@ -58,11 +58,10 @@
     WorkerThreadStartMode m_startMode;
     String m_contentSecurityPolicy;
     ContentSecurityPolicy::HeaderType m_contentSecurityPolicyType;
-    RefPtr<SecurityOrigin> m_topOrigin;
     OwnPtr<WorkerClients> m_workerClients;
 
 private:
-    WorkerThreadStartupData(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, const SecurityOrigin* topOrigin, PassOwnPtr<WorkerClients>);
+    WorkerThreadStartupData(const KURL& scriptURL, const String& userAgent, const String& sourceCode, WorkerThreadStartMode, const String& contentSecurityPolicy, ContentSecurityPolicy::HeaderType contentSecurityPolicyType, PassOwnPtr<WorkerClients>);
 };
 
 } // namespace WebCore
diff --git a/Source/core/xml/XSLImportRule.cpp b/Source/core/xml/XSLImportRule.cpp
index a14a51b..886e6d3 100644
--- a/Source/core/xml/XSLImportRule.cpp
+++ b/Source/core/xml/XSLImportRule.cpp
@@ -24,9 +24,9 @@
 
 #include "CachedResourceInitiatorTypeNames.h"
 #include "core/dom/Document.h"
-#include "core/loader/cache/CachedResourceLoader.h"
-#include "core/loader/cache/CachedResourceRequest.h"
 #include "core/loader/cache/CachedXSLStyleSheet.h"
+#include "core/loader/cache/FetchRequest.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/xml/XSLStyleSheet.h"
 
 namespace WebCore {
@@ -73,7 +73,7 @@
 
 void XSLImportRule::loadSheet()
 {
-    CachedResourceLoader* cachedResourceLoader = 0;
+    ResourceFetcher* fetcher = 0;
 
     XSLStyleSheet* rootSheet = parentStyleSheet();
 
@@ -83,7 +83,7 @@
     }
 
     if (rootSheet)
-        cachedResourceLoader = rootSheet->cachedResourceLoader();
+        fetcher = rootSheet->fetcher();
     
     String absHref = m_strHref;
     XSLStyleSheet* parentSheet = parentStyleSheet();
@@ -98,8 +98,8 @@
             return;
     }
     
-    CachedResourceRequest request(ResourceRequest(cachedResourceLoader->document()->completeURL(absHref)), CachedResourceInitiatorTypeNames::xml);
-    m_cachedSheet = cachedResourceLoader->requestXSLStyleSheet(request);
+    FetchRequest request(ResourceRequest(fetcher->document()->completeURL(absHref)), CachedResourceInitiatorTypeNames::xml);
+    m_cachedSheet = fetcher->requestXSLStyleSheet(request);
     
     if (m_cachedSheet) {
         m_cachedSheet->addClient(this);
diff --git a/Source/core/xml/XSLStyleSheet.h b/Source/core/xml/XSLStyleSheet.h
index c6b8775..080bd83 100644
--- a/Source/core/xml/XSLStyleSheet.h
+++ b/Source/core/xml/XSLStyleSheet.h
@@ -31,7 +31,7 @@
 
 namespace WebCore {
 
-class CachedResourceLoader;
+class ResourceFetcher;
 class XSLImportRule;
     
 class XSLStyleSheet : public StyleSheet {
@@ -67,7 +67,7 @@
     void loadChildSheets();
     void loadChildSheet(const String& href);
 
-    CachedResourceLoader* cachedResourceLoader();
+    ResourceFetcher* fetcher();
 
     Document* ownerDocument();
     virtual XSLStyleSheet* parentStyleSheet() const OVERRIDE { return m_parentStyleSheet; }
diff --git a/Source/core/xml/XSLStyleSheetLibxslt.cpp b/Source/core/xml/XSLStyleSheetLibxslt.cpp
index 19d6e47..35ea279 100644
--- a/Source/core/xml/XSLStyleSheetLibxslt.cpp
+++ b/Source/core/xml/XSLStyleSheetLibxslt.cpp
@@ -111,12 +111,12 @@
     }
 }
 
-CachedResourceLoader* XSLStyleSheet::cachedResourceLoader()
+ResourceFetcher* XSLStyleSheet::fetcher()
 {
     Document* document = ownerDocument();
     if (!document)
         return 0;
-    return document->cachedResourceLoader();
+    return document->fetcher();
 }
 
 bool XSLStyleSheet::parseString(const String& source)
@@ -131,7 +131,7 @@
     if (frame && frame->page())
         console = frame->page()->console();
 
-    XMLDocumentParserScope scope(cachedResourceLoader(), XSLTProcessor::genericErrorFunc, XSLTProcessor::parseErrorFunc, console);
+    XMLDocumentParserScope scope(fetcher(), XSLTProcessor::genericErrorFunc, XSLTProcessor::parseErrorFunc, console);
     XMLParserInput input(source);
 
     xmlParserCtxtPtr ctxt = xmlCreateMemoryParserCtxt(input.data(), input.size());
diff --git a/Source/core/xml/XSLTProcessorLibxslt.cpp b/Source/core/xml/XSLTProcessorLibxslt.cpp
index af658f5..6e3866c 100644
--- a/Source/core/xml/XSLTProcessorLibxslt.cpp
+++ b/Source/core/xml/XSLTProcessorLibxslt.cpp
@@ -36,7 +36,7 @@
 #include "core/dom/Document.h"
 #include "core/dom/TransformSource.h"
 #include "core/editing/markup.h"
-#include "core/loader/cache/CachedResourceLoader.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/Page.h"
 #include "core/page/PageConsole.h"
@@ -82,7 +82,7 @@
 
 // FIXME: There seems to be no way to control the ctxt pointer for loading here, thus we have globals.
 static XSLTProcessor* globalProcessor = 0;
-static CachedResourceLoader* globalCachedResourceLoader = 0;
+static ResourceFetcher* globalResourceFetcher = 0;
 static xmlDocPtr docLoaderFunc(const xmlChar* uri,
                                xmlDictPtr,
                                int options,
@@ -103,14 +103,14 @@
 
         Vector<char> data;
 
-        bool requestAllowed = globalCachedResourceLoader->frame() && globalCachedResourceLoader->document()->securityOrigin()->canRequest(url);
+        bool requestAllowed = globalResourceFetcher->frame() && globalResourceFetcher->document()->securityOrigin()->canRequest(url);
         if (requestAllowed) {
-            globalCachedResourceLoader->frame()->loader()->loadResourceSynchronously(url, AllowStoredCredentials, error, response, data);
-            requestAllowed = globalCachedResourceLoader->document()->securityOrigin()->canRequest(response.url());
+            globalResourceFetcher->frame()->loader()->loadResourceSynchronously(url, AllowStoredCredentials, error, response, data);
+            requestAllowed = globalResourceFetcher->document()->securityOrigin()->canRequest(response.url());
         }
         if (!requestAllowed) {
             data.clear();
-            globalCachedResourceLoader->printAccessDeniedMessage(url);
+            globalResourceFetcher->printAccessDeniedMessage(url);
         }
 
         PageConsole* console = 0;
@@ -138,11 +138,11 @@
     return 0;
 }
 
-static inline void setXSLTLoadCallBack(xsltDocLoaderFunc func, XSLTProcessor* processor, CachedResourceLoader* cachedResourceLoader)
+static inline void setXSLTLoadCallBack(xsltDocLoaderFunc func, XSLTProcessor* processor, ResourceFetcher* fetcher)
 {
     xsltSetLoaderFunc(func);
     globalProcessor = processor;
-    globalCachedResourceLoader = cachedResourceLoader;
+    globalResourceFetcher = fetcher;
 }
 
 static int writeToStringBuilder(void* context, const char* buffer, int len)
@@ -250,7 +250,7 @@
     if (sourceIsDocument && ownerDocument->transformSource())
         sourceDoc = (xmlDocPtr)ownerDocument->transformSource()->platformSource();
     if (!sourceDoc) {
-        sourceDoc = (xmlDocPtr)xmlDocPtrForString(ownerDocument->cachedResourceLoader(), createMarkup(sourceNode),
+        sourceDoc = (xmlDocPtr)xmlDocPtrForString(ownerDocument->fetcher(), createMarkup(sourceNode),
             sourceIsDocument ? ownerDocument->url().string() : String());
         shouldDelete = sourceDoc;
     }
@@ -280,7 +280,7 @@
 {
     RefPtr<Document> ownerDocument = sourceNode->document();
 
-    setXSLTLoadCallBack(docLoaderFunc, this, ownerDocument->cachedResourceLoader());
+    setXSLTLoadCallBack(docLoaderFunc, this, ownerDocument->fetcher());
     xsltStylesheetPtr sheet = xsltStylesheetPointer(m_stylesheet, m_stylesheetRootNode.get());
     if (!sheet) {
         setXSLTLoadCallBack(0, 0, 0);
diff --git a/Source/core/xml/parser/XMLDocumentParser.cpp b/Source/core/xml/parser/XMLDocumentParser.cpp
index fc75901..a8d06c8 100644
--- a/Source/core/xml/parser/XMLDocumentParser.cpp
+++ b/Source/core/xml/parser/XMLDocumentParser.cpp
@@ -54,8 +54,8 @@
 #include "core/loader/FrameLoader.h"
 #include "core/loader/ImageLoader.h"
 #include "core/loader/TextResourceDecoder.h"
-#include "core/loader/cache/CachedResourceLoader.h"
 #include "core/loader/cache/CachedScript.h"
+#include "core/loader/cache/ResourceFetcher.h"
 #include "core/page/Frame.h"
 #include "core/page/UseCounter.h"
 #include "core/platform/network/ResourceError.h"
@@ -508,7 +508,7 @@
 {
     // Only match loads initiated due to uses of libxml2 from within XMLDocumentParser to avoid
     // interfering with client applications that also use libxml2.  http://bugs.webkit.org/show_bug.cgi?id=17353
-    return XMLDocumentParserScope::currentCachedResourceLoader && currentThread() == libxmlLoaderThread;
+    return XMLDocumentParserScope::currentFetcher && currentThread() == libxmlLoaderThread;
 }
 
 class OffsetBuffer {
@@ -600,8 +600,8 @@
     // retrieved content.  If we had more context, we could potentially allow
     // the parser to load a DTD.  As things stand, we take the conservative
     // route and allow same-origin requests only.
-    if (!XMLDocumentParserScope::currentCachedResourceLoader->document()->securityOrigin()->canRequest(url)) {
-        XMLDocumentParserScope::currentCachedResourceLoader->printAccessDeniedMessage(url);
+    if (!XMLDocumentParserScope::currentFetcher->document()->securityOrigin()->canRequest(url)) {
+        XMLDocumentParserScope::currentFetcher->printAccessDeniedMessage(url);
         return false;
     }
 
@@ -610,7 +610,7 @@
 
 static void* openFunc(const char* uri)
 {
-    ASSERT(XMLDocumentParserScope::currentCachedResourceLoader);
+    ASSERT(XMLDocumentParserScope::currentFetcher);
     ASSERT(currentThread() == libxmlLoaderThread);
 
     KURL url(KURL(), uri);
@@ -624,12 +624,12 @@
 
 
     {
-        CachedResourceLoader* cachedResourceLoader = XMLDocumentParserScope::currentCachedResourceLoader;
+        ResourceFetcher* fetcher = XMLDocumentParserScope::currentFetcher;
         XMLDocumentParserScope scope(0);
         // FIXME: We should restore the original global error handler as well.
 
-        if (cachedResourceLoader->frame())
-            cachedResourceLoader->frame()->loader()->loadResourceSynchronously(url, AllowStoredCredentials, error, response, data);
+        if (fetcher->frame())
+            fetcher->frame()->loader()->loadResourceSynchronously(url, AllowStoredCredentials, error, response, data);
     }
 
     // We have to check the URL again after the load to catch redirects.
@@ -841,7 +841,7 @@
         // keep this alive until this function is done.
         RefPtr<XMLDocumentParser> protect(this);
 
-        XMLDocumentParserScope scope(document()->cachedResourceLoader());
+        XMLDocumentParserScope scope(document()->fetcher());
         TemporaryChange<bool> encodingScope(m_isCurrentlyParsing8BitChunk, parseString.is8Bit());
         parseChunk(context->context(), parseString);
 
@@ -1413,7 +1413,7 @@
     m_sawXSLTransform = false;
     m_sawFirstElement = false;
 
-    XMLDocumentParserScope scope(document()->cachedResourceLoader());
+    XMLDocumentParserScope scope(document()->fetcher());
     if (m_parsingFragment)
         m_context = XMLParserContext::createMemoryParser(&sax, this, chunk);
     else {
@@ -1428,7 +1428,7 @@
         if (m_context) {
             // Tell libxml we're done.
             {
-                XMLDocumentParserScope scope(document()->cachedResourceLoader());
+                XMLDocumentParserScope scope(document()->fetcher());
                 finishParsing(context());
             }
 
@@ -1441,7 +1441,7 @@
     if (xmlViewerMode) {
         xmlTreeViewer.transformDocumentToTreeView();
     } else if (m_sawXSLTransform) {
-        xmlDocPtr doc = xmlDocPtrForString(document()->cachedResourceLoader(), m_originalSourceForTransform.toString(), document()->url().string());
+        xmlDocPtr doc = xmlDocPtrForString(document()->fetcher(), m_originalSourceForTransform.toString(), document()->url().string());
         document()->setTransformSource(adoptPtr(new TransformSource(doc)));
 
         document()->setParsing(false); // Make the document think it's done, so it will apply XSL stylesheets.
@@ -1457,14 +1457,14 @@
     }
 }
 
-xmlDocPtr xmlDocPtrForString(CachedResourceLoader* cachedResourceLoader, const String& source, const String& url)
+xmlDocPtr xmlDocPtrForString(ResourceFetcher* fetcher, const String& source, const String& url)
 {
     if (source.isEmpty())
         return 0;
     // Parse in a single chunk into an xmlDocPtr
     // FIXME: Hook up error handlers so that a failure to parse the main document results in
     // good error messages.
-    XMLDocumentParserScope scope(cachedResourceLoader, errorFunc, 0);
+    XMLDocumentParserScope scope(fetcher, errorFunc, 0);
     XMLParserInput input(source);
     return xmlReadMemory(input.data(), input.size(), url.latin1().data(), input.encoding(), XSLT_PARSE_OPTIONS);
 }
diff --git a/Source/core/xml/parser/XMLDocumentParser.h b/Source/core/xml/parser/XMLDocumentParser.h
index b0be668..fdc5b20 100644
--- a/Source/core/xml/parser/XMLDocumentParser.h
+++ b/Source/core/xml/parser/XMLDocumentParser.h
@@ -41,7 +41,7 @@
 
 class ContainerNode;
 class CachedScript;
-class CachedResourceLoader;
+class ResourceFetcher;
 class DocumentFragment;
 class Document;
 class Element;
@@ -191,7 +191,7 @@
         SegmentedString m_pendingSrc;
     };
 
-xmlDocPtr xmlDocPtrForString(CachedResourceLoader*, const String& source, const String& url);
+xmlDocPtr xmlDocPtrForString(ResourceFetcher*, const String& source, const String& url);
 
 HashMap<String, String> parseAttributes(const String&, bool& attrsOK);
 
diff --git a/Source/core/xml/parser/XMLDocumentParserScope.cpp b/Source/core/xml/parser/XMLDocumentParserScope.cpp
index 0e5ae29..6975f05 100644
--- a/Source/core/xml/parser/XMLDocumentParserScope.cpp
+++ b/Source/core/xml/parser/XMLDocumentParserScope.cpp
@@ -28,24 +28,24 @@
 
 namespace WebCore {
 
-CachedResourceLoader* XMLDocumentParserScope::currentCachedResourceLoader = 0;
+ResourceFetcher* XMLDocumentParserScope::currentFetcher = 0;
 
-XMLDocumentParserScope::XMLDocumentParserScope(CachedResourceLoader* cachedResourceLoader)
-    : m_oldCachedResourceLoader(currentCachedResourceLoader)
+XMLDocumentParserScope::XMLDocumentParserScope(ResourceFetcher* fetcher)
+    : m_oldFetcher(currentFetcher)
     , m_oldGenericErrorFunc(xmlGenericError)
     , m_oldStructuredErrorFunc(xmlStructuredError)
     , m_oldErrorContext(xmlGenericErrorContext)
 {
-    currentCachedResourceLoader = cachedResourceLoader;
+    currentFetcher = fetcher;
 }
 
-XMLDocumentParserScope::XMLDocumentParserScope(CachedResourceLoader* cachedResourceLoader, xmlGenericErrorFunc genericErrorFunc, xmlStructuredErrorFunc structuredErrorFunc, void* errorContext)
-    : m_oldCachedResourceLoader(currentCachedResourceLoader)
+XMLDocumentParserScope::XMLDocumentParserScope(ResourceFetcher* fetcher, xmlGenericErrorFunc genericErrorFunc, xmlStructuredErrorFunc structuredErrorFunc, void* errorContext)
+    : m_oldFetcher(currentFetcher)
     , m_oldGenericErrorFunc(xmlGenericError)
     , m_oldStructuredErrorFunc(xmlStructuredError)
     , m_oldErrorContext(xmlGenericErrorContext)
 {
-    currentCachedResourceLoader = cachedResourceLoader;
+    currentFetcher = fetcher;
     if (genericErrorFunc)
         xmlSetGenericErrorFunc(errorContext, genericErrorFunc);
     if (structuredErrorFunc)
@@ -54,7 +54,7 @@
 
 XMLDocumentParserScope::~XMLDocumentParserScope()
 {
-    currentCachedResourceLoader = m_oldCachedResourceLoader;
+    currentFetcher = m_oldFetcher;
     xmlSetGenericErrorFunc(m_oldErrorContext, m_oldGenericErrorFunc);
     xmlSetStructuredErrorFunc(m_oldErrorContext, m_oldStructuredErrorFunc);
 }
diff --git a/Source/core/xml/parser/XMLDocumentParserScope.h b/Source/core/xml/parser/XMLDocumentParserScope.h
index 6f8d1f8..510c583 100644
--- a/Source/core/xml/parser/XMLDocumentParserScope.h
+++ b/Source/core/xml/parser/XMLDocumentParserScope.h
@@ -32,20 +32,20 @@
 
 namespace WebCore {
 
-    class CachedResourceLoader;
+class ResourceFetcher;
 
     class XMLDocumentParserScope {
         WTF_MAKE_NONCOPYABLE(XMLDocumentParserScope);
     public:
-        XMLDocumentParserScope(CachedResourceLoader* cachedResourceLoader);
+        XMLDocumentParserScope(ResourceFetcher*);
         ~XMLDocumentParserScope();
 
-        static CachedResourceLoader* currentCachedResourceLoader;
+        static ResourceFetcher* currentFetcher;
 
-        XMLDocumentParserScope(CachedResourceLoader* cachedResourceLoader, xmlGenericErrorFunc genericErrorFunc, xmlStructuredErrorFunc structuredErrorFunc = 0, void* errorContext = 0);
+        XMLDocumentParserScope(ResourceFetcher*, xmlGenericErrorFunc, xmlStructuredErrorFunc = 0, void* errorContext = 0);
 
     private:
-        CachedResourceLoader* m_oldCachedResourceLoader;
+        ResourceFetcher* m_oldFetcher;
 
         xmlGenericErrorFunc m_oldGenericErrorFunc;
         xmlStructuredErrorFunc m_oldStructuredErrorFunc;
diff --git a/Source/modules/modules.target.darwin-arm.mk b/Source/modules/modules.target.darwin-arm.mk
index 0f07650..e5e25e0 100644
--- a/Source/modules/modules.target.darwin-arm.mk
+++ b/Source/modules/modules.target.darwin-arm.mk
@@ -361,9 +361,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,9 +503,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/modules/modules.target.darwin-mips.mk b/Source/modules/modules.target.darwin-mips.mk
index a8cef5a..f24ff61 100644
--- a/Source/modules/modules.target.darwin-mips.mk
+++ b/Source/modules/modules.target.darwin-mips.mk
@@ -361,9 +361,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,9 +503,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/modules/modules.target.darwin-x86.mk b/Source/modules/modules.target.darwin-x86.mk
index 7263884..c830e56 100644
--- a/Source/modules/modules.target.darwin-x86.mk
+++ b/Source/modules/modules.target.darwin-x86.mk
@@ -363,9 +363,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -508,9 +508,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/modules/modules.target.linux-arm.mk b/Source/modules/modules.target.linux-arm.mk
index 0f07650..e5e25e0 100644
--- a/Source/modules/modules.target.linux-arm.mk
+++ b/Source/modules/modules.target.linux-arm.mk
@@ -361,9 +361,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,9 +503,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/modules/modules.target.linux-mips.mk b/Source/modules/modules.target.linux-mips.mk
index a8cef5a..f24ff61 100644
--- a/Source/modules/modules.target.linux-mips.mk
+++ b/Source/modules/modules.target.linux-mips.mk
@@ -361,9 +361,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -503,9 +503,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/modules/modules.target.linux-x86.mk b/Source/modules/modules.target.linux-x86.mk
index 7263884..c830e56 100644
--- a/Source/modules/modules.target.linux-x86.mk
+++ b/Source/modules/modules.target.linux-x86.mk
@@ -363,9 +363,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
@@ -508,9 +508,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/khronos \
 	$(LOCAL_PATH)/gpu \
 	$(LOCAL_PATH) \
diff --git a/Source/web/FrameLoaderClientImpl.cpp b/Source/web/FrameLoaderClientImpl.cpp
index 62a4bcd..38de0cd 100644
--- a/Source/web/FrameLoaderClientImpl.cpp
+++ b/Source/web/FrameLoaderClientImpl.cpp
@@ -479,7 +479,7 @@
     return static_cast<NavigationPolicy>(webPolicy);
 }
 
-void FrameLoaderClientImpl::dispatchWillRequestResource(CachedResourceRequest* request)
+void FrameLoaderClientImpl::dispatchWillRequestResource(FetchRequest* request)
 {
     if (m_webFrame->client()) {
         WebCachedURLRequest urlRequest(request);
diff --git a/Source/web/FrameLoaderClientImpl.h b/Source/web/FrameLoaderClientImpl.h
index c2c9fe2..0de50fe 100644
--- a/Source/web/FrameLoaderClientImpl.h
+++ b/Source/web/FrameLoaderClientImpl.h
@@ -95,7 +95,7 @@
     virtual void dispatchDidFinishLoad();
     virtual void dispatchDidLayout(WebCore::LayoutMilestones);
     virtual WebCore::NavigationPolicy decidePolicyForNavigation(const WebCore::ResourceRequest&, WebCore::NavigationType, WebCore::NavigationPolicy, bool isRedirect);
-    virtual void dispatchWillRequestResource(WebCore::CachedResourceRequest*);
+    virtual void dispatchWillRequestResource(WebCore::FetchRequest*);
     virtual void dispatchWillSendSubmitEvent(PassRefPtr<WebCore::FormState>);
     virtual void dispatchWillSubmitForm(PassRefPtr<WebCore::FormState>);
     virtual void postProgressStartedNotification();
diff --git a/Source/web/WebCachedURLRequest.cpp b/Source/web/WebCachedURLRequest.cpp
index db3ef25..4f5d16d 100644
--- a/Source/web/WebCachedURLRequest.cpp
+++ b/Source/web/WebCachedURLRequest.cpp
@@ -31,7 +31,7 @@
 #include "config.h"
 #include "WebCachedURLRequest.h"
 
-#include "core/loader/cache/CachedResourceRequest.h"
+#include "core/loader/cache/FetchRequest.h"
 #include "core/platform/chromium/support/WrappedResourceRequest.h"
 #include "public/platform/WebURLRequest.h"
 
@@ -69,7 +69,7 @@
     return WebString(m_private->options().initiatorInfo.name);
 }
 
-WebCachedURLRequest::WebCachedURLRequest(CachedResourceRequest* request)
+WebCachedURLRequest::WebCachedURLRequest(FetchRequest* request)
     : m_private(request)
 {
 }
diff --git a/Source/web/WebSharedWorkerImpl.cpp b/Source/web/WebSharedWorkerImpl.cpp
index 6d2dee0..59d9ef1 100644
--- a/Source/web/WebSharedWorkerImpl.cpp
+++ b/Source/web/WebSharedWorkerImpl.cpp
@@ -373,7 +373,7 @@
     WorkerThreadStartMode startMode = m_pauseWorkerContextOnStart ? PauseWorkerGlobalScopeOnStart : DontPauseWorkerGlobalScopeOnStart;
     OwnPtr<WorkerClients> workerClients = WorkerClients::create();
     provideLocalFileSystemToWorker(workerClients.get(), WorkerFileSystemClient::create());
-    OwnPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::create(url, userAgent, sourceCode, startMode, contentSecurityPolicy, static_cast<WebCore::ContentSecurityPolicy::HeaderType>(policyType), 0, workerClients.release());
+    OwnPtr<WorkerThreadStartupData> startupData = WorkerThreadStartupData::create(url, userAgent, sourceCode, startMode, contentSecurityPolicy, static_cast<WebCore::ContentSecurityPolicy::HeaderType>(policyType), workerClients.release());
     setWorkerThread(SharedWorkerThread::create(name, *this, *this, startupData.release()));
 
     workerThread()->start();
diff --git a/Source/weborigin/weborigin.target.darwin-arm.mk b/Source/weborigin/weborigin.target.darwin-arm.mk
index a75de62..d16327c 100644
--- a/Source/weborigin/weborigin.target.darwin-arm.mk
+++ b/Source/weborigin/weborigin.target.darwin-arm.mk
@@ -119,9 +119,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -231,9 +231,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/weborigin/weborigin.target.darwin-mips.mk b/Source/weborigin/weborigin.target.darwin-mips.mk
index 8b82ecb..890d0dd 100644
--- a/Source/weborigin/weborigin.target.darwin-mips.mk
+++ b/Source/weborigin/weborigin.target.darwin-mips.mk
@@ -119,9 +119,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -231,9 +231,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/weborigin/weborigin.target.darwin-x86.mk b/Source/weborigin/weborigin.target.darwin-x86.mk
index 4330fa2..4bb741c 100644
--- a/Source/weborigin/weborigin.target.darwin-x86.mk
+++ b/Source/weborigin/weborigin.target.darwin-x86.mk
@@ -121,9 +121,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -236,9 +236,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/weborigin/weborigin.target.linux-arm.mk b/Source/weborigin/weborigin.target.linux-arm.mk
index a75de62..d16327c 100644
--- a/Source/weborigin/weborigin.target.linux-arm.mk
+++ b/Source/weborigin/weborigin.target.linux-arm.mk
@@ -119,9 +119,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -231,9 +231,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/weborigin/weborigin.target.linux-mips.mk b/Source/weborigin/weborigin.target.linux-mips.mk
index 8b82ecb..890d0dd 100644
--- a/Source/weborigin/weborigin.target.linux-mips.mk
+++ b/Source/weborigin/weborigin.target.linux-mips.mk
@@ -119,9 +119,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -231,9 +231,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/weborigin/weborigin.target.linux-x86.mk b/Source/weborigin/weborigin.target.linux-x86.mk
index 4330fa2..4bb741c 100644
--- a/Source/weborigin/weborigin.target.linux-x86.mk
+++ b/Source/weborigin/weborigin.target.linux-x86.mk
@@ -121,9 +121,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
@@ -236,9 +236,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
-	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/ashmem/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(LOCAL_PATH)/third_party/WebKit \
 	$(PWD)/external/icu4c/common \
diff --git a/Source/wtf/wtf.target.darwin-arm.mk b/Source/wtf/wtf.target.darwin-arm.mk
index b40c25e..ee156d7 100644
--- a/Source/wtf/wtf.target.darwin-arm.mk
+++ b/Source/wtf/wtf.target.darwin-arm.mk
@@ -188,9 +188,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -297,9 +297,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Source/wtf/wtf.target.darwin-mips.mk b/Source/wtf/wtf.target.darwin-mips.mk
index 1fd703e..0f9654c 100644
--- a/Source/wtf/wtf.target.darwin-mips.mk
+++ b/Source/wtf/wtf.target.darwin-mips.mk
@@ -188,9 +188,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -297,9 +297,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Source/wtf/wtf.target.darwin-x86.mk b/Source/wtf/wtf.target.darwin-x86.mk
index 8569cf7..59cbf20 100644
--- a/Source/wtf/wtf.target.darwin-x86.mk
+++ b/Source/wtf/wtf.target.darwin-x86.mk
@@ -190,9 +190,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -302,9 +302,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Source/wtf/wtf.target.linux-arm.mk b/Source/wtf/wtf.target.linux-arm.mk
index b40c25e..ee156d7 100644
--- a/Source/wtf/wtf.target.linux-arm.mk
+++ b/Source/wtf/wtf.target.linux-arm.mk
@@ -188,9 +188,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -297,9 +297,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Source/wtf/wtf.target.linux-mips.mk b/Source/wtf/wtf.target.linux-mips.mk
index 1fd703e..0f9654c 100644
--- a/Source/wtf/wtf.target.linux-mips.mk
+++ b/Source/wtf/wtf.target.linux-mips.mk
@@ -188,9 +188,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -297,9 +297,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Source/wtf/wtf.target.linux-x86.mk b/Source/wtf/wtf.target.linux-x86.mk
index 8569cf7..59cbf20 100644
--- a/Source/wtf/wtf.target.linux-x86.mk
+++ b/Source/wtf/wtf.target.linux-x86.mk
@@ -190,9 +190,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Debug := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
@@ -302,9 +302,9 @@
 
 # Include paths placed before CFLAGS/CPPFLAGS
 LOCAL_C_INCLUDES_Release := \
-	$(LOCAL_PATH)/third_party/WebKit/Source \
-	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
 	$(gyp_shared_intermediate_dir)/shim_headers/icuuc/target \
+	$(gyp_shared_intermediate_dir)/shim_headers/icui18n/target \
+	$(LOCAL_PATH)/third_party/WebKit/Source \
 	$(PWD)/external/icu4c/common \
 	$(PWD)/external/icu4c/i18n \
 	$(PWD)/frameworks/wilhelm/include \
diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline.py
index 717172d..a06fb16 100644
--- a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py
+++ b/Tools/Scripts/webkitpy/tool/commands/rebaseline.py
@@ -687,6 +687,11 @@
             # takes a long time and sometimes fails, but we don't want to commit if, e.g. the
             # tree is closed.
             self._run_git_cl_command(options, ['upload', '-f'])
+
+            # Uploading can take a very long time. Do another pull to make sure TestExpectations is up to date,
+            # so the dcommit can go through.
+            tool.executive.run_command(['git', 'pull'])
+
             self._run_git_cl_command(options, ['dcommit', '-f'])
         finally:
             self._run_git_cl_command(options, ['set_close'])
diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
index be814a5..62f8228 100644
--- a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
+++ b/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
@@ -656,6 +656,7 @@
                 ['echo', 'optimize-baselines', '--suffixes', 'wav,txt,png', 'path/to/rebaseline-without-modifiers.html'],
                 ['echo', 'optimize-baselines', '--suffixes', 'wav,txt,png', 'path/to/rebaseline-without-bug-number.html'],
                 ['echo', 'optimize-baselines', '--suffixes', 'wav,txt,png', 'path/to/rebaseline-with-modifiers.html'],
+                ['git', 'pull'],
             ])
         finally:
             builders._exact_matches = old_exact_matches
diff --git a/public/web/WebCachedURLRequest.h b/public/web/WebCachedURLRequest.h
index c0bff22..0f2e55b 100644
--- a/public/web/WebCachedURLRequest.h
+++ b/public/web/WebCachedURLRequest.h
@@ -35,7 +35,7 @@
 #include "../platform/WebPrivateOwnPtr.h"
 #include "../platform/WebString.h"
 
-namespace WebCore { class CachedResourceRequest; }
+namespace WebCore { class FetchRequest; }
 
 namespace WebKit {
 
@@ -54,14 +54,14 @@
     WEBKIT_EXPORT WebString initiatorName() const;
 
 #if WEBKIT_IMPLEMENTATION
-    explicit WebCachedURLRequest(WebCore::CachedResourceRequest*);
+    explicit WebCachedURLRequest(WebCore::FetchRequest*);
 #endif
 
 private:
     WebCachedURLRequest(const WebCachedURLRequest&);
     WebCachedURLRequest& operator=(const WebCachedURLRequest&);
 
-    WebCore::CachedResourceRequest* m_private;
+    WebCore::FetchRequest* m_private;
     mutable WebPrivateOwnPtr<WrappedResourceRequest> m_resourceRequestWrapper;
 };