[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

barraclough at apple.com barraclough at apple.com
Wed Dec 22 11:51:21 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit d218c2dfe2ad19b360b2a9c2b7c08d43ba3f1a84
Author: barraclough at apple.com <barraclough at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 10 00:38:14 2010 +0000

    Bug 43594 - Add string forwards to Forward.h
    This allows us to remove forward declarations for these classes from
    WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
    
    Rubber stamped by Sam Weinig
    
    JavaScriptCore:
    
    * JavaScriptCore.xcodeproj/project.pbxproj:
    * wtf/Forward.h:
    
    WebCore:
    
    * WebCore.xcodeproj/project.pbxproj:
    * accessibility/AXObjectCache.h:
    * accessibility/AccessibilityARIAGrid.h:
    * accessibility/AccessibilityListBoxOption.h:
    * accessibility/AccessibilityObject.h:
    * accessibility/AccessibilityRenderObject.h:
    * accessibility/AccessibilityTable.h:
    * bindings/cpp/WebDOMCString.h:
    * bindings/cpp/WebDOMString.h:
    * bindings/gobject/ConvertToUTF8String.h:
    * bindings/js/DOMWrapperWorld.h:
    * bindings/js/JSDOMBinding.h:
    * bindings/js/JSDOMWindowBase.h:
    * bindings/js/JSMessagePortCustom.h:
    * bindings/js/JavaScriptCallFrame.h:
    * bindings/js/ScriptController.h:
    * bindings/js/ScriptProfile.h:
    * bindings/js/ScriptSourceProvider.h:
    * bindings/js/ScriptString.h:
    * bindings/js/WorkerScriptController.h:
    * bindings/objc/DOMImplementationFront.h:
    * bindings/v8/ScheduledAction.h:
    * bindings/v8/ScriptController.h:
    * bindings/v8/V8DOMWindowShell.h:
    * bindings/v8/V8Proxy.h:
    * bindings/v8/V8Utilities.h:
    * bindings/v8/custom/V8CustomXPathNSResolver.h:
    * bridge/c/c_utility.h:
    * css/CSSFontSelector.h:
    * css/CSSHelper.h:
    * css/CSSOMUtils.h:
    * css/CSSPrimitiveValue.h:
    * css/MediaList.h:
    * css/StyleBase.h:
    * css/StyleSheetList.h:
    * css/WebKitCSSKeyframesRule.h:
    * dom/CheckedRadioButtons.h:
    * dom/DOMImplementation.h:
    * dom/DocumentMarker.h:
    * dom/DynamicNodeList.h:
    * dom/EventTarget.h:
    * dom/MessagePort.h:
    * dom/MessagePortChannel.h:
    * dom/NameNodeList.h:
    * dom/Node.h:
    * dom/NodeList.h:
    * dom/OptionGroupElement.h:
    * dom/ScriptExecutionContext.h:
    * dom/SelectElement.h:
    * dom/ViewportArguments.h:
    * dom/make_names.pl:
    * editing/HTMLInterchange.h:
    * editing/htmlediting.h:
    * editing/markup.h:
    * html/CollectionCache.h:
    * html/DOMFormData.h:
    * html/DataGridColumnList.h:
    * html/DateComponents.h:
    * html/FileStream.h:
    * html/FileStreamProxy.h:
    * html/FormDataList.h:
    (WebCore::FormDataList::appendData):
    * html/HTMLCollection.h:
    * html/HTMLElementStack.h:
    * html/HTMLFormattingElementList.h:
    * html/HTMLParserQuirks.h:
    * html/HTMLQuoteElement.h:
    * html/HTMLScriptRunnerHost.h:
    * html/StepRange.h:
    * html/canvas/CanvasGradient.h:
    * html/canvas/CanvasNumberArray.h:
    * html/canvas/CanvasPattern.h:
    * inspector/InjectedScript.h:
    * inspector/InspectorCSSStore.h:
    * inspector/InspectorClient.h:
    * inspector/InspectorFrontendClient.h:
    * inspector/InspectorValues.h:
    * inspector/ScriptDebugListener.h:
    * loader/CachedResourceClient.h:
    * loader/CrossOriginAccessControl.h:
    * loader/DocumentThreadableLoader.h:
    * loader/FrameLoaderClient.h:
    * loader/RedirectScheduler.h:
    * loader/SubframeLoader.h:
    * loader/appcache/DOMApplicationCache.h:
    * loader/archive/ArchiveFactory.h:
    * loader/icon/IconDatabaseClient.h:
    * notifications/NotificationPresenter.h:
    * page/Chrome.h:
    * page/ChromeClient.h:
    * page/Console.h:
    * page/ContextMenuClient.h:
    * page/DOMSelection.h:
    * page/EditorClient.h:
    * page/EventHandler.h:
    * page/FrameView.h:
    * page/GeolocationPositionCache.h:
    * page/History.h:
    * page/Location.h:
    * page/Navigator.h:
    * page/NavigatorBase.h:
    * page/PluginHalterClient.h:
    * page/PrintContext.h:
    * page/SpeechInput.h:
    * page/SpeechInputListener.h:
    * page/animation/AnimationController.h:
    * platform/CookieJar.h:
    * platform/CrossThreadCopier.h:
    * platform/DragImage.h:
    * platform/FileSystem.h:
    * platform/Language.h:
    * platform/Length.h:
    * platform/LinkHash.h:
    * platform/LocalizationStrategy.h:
    * platform/LocalizedStrings.h:
    * platform/Logging.h:
    * platform/Pasteboard.h:
    * platform/PopupMenuClient.h:
    * platform/SearchPopupMenu.h:
    * platform/Widget.h:
    * platform/cf/BinaryPropertyList.h:
    * platform/chromium/ChromiumBridge.h:
    * platform/chromium/ClipboardUtilitiesChromium.h:
    * platform/cocoa/KeyEventCocoa.h:
    * platform/graphics/Color.h:
    * platform/graphics/FontCache.h:
    * platform/graphics/FontData.h:
    * platform/graphics/FontSelector.h:
    * platform/graphics/GraphicsTypes.h:
    * platform/graphics/Icon.h:
    * platform/graphics/ImageBuffer.h:
    * platform/graphics/ImageSource.h:
    * platform/graphics/MediaPlayer.h:
    * platform/graphics/MediaPlayerPrivate.h:
    * platform/graphics/Path.h:
    * platform/graphics/StringTruncator.h:
    * platform/graphics/cairo/FontCustomPlatformData.h:
    * platform/graphics/cairo/FontPlatformData.h:
    * platform/graphics/cg/FontPlatformData.h:
    * platform/graphics/cg/ImageSourceCG.h:
    * platform/graphics/chromium/FontCustomPlatformData.h:
    * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
    * platform/graphics/chromium/FontPlatformDataLinux.h:
    * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
    * platform/graphics/haiku/FontCustomPlatformData.h:
    * platform/graphics/mac/FontCustomPlatformData.h:
    * platform/graphics/mac/FontPlatformData.h:
    * platform/graphics/qt/FontCustomPlatformData.h:
    * platform/graphics/qt/FontPlatformData.h:
    * platform/graphics/win/FontCustomPlatformData.h:
    * platform/graphics/win/FontCustomPlatformDataCairo.h:
    * platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h:
    * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
    * platform/graphics/wince/FontPlatformData.h:
    * platform/graphics/wince/MediaPlayerPrivateWince.h:
    * platform/graphics/wince/MediaPlayerProxy.h:
    * platform/graphics/wx/FontCustomPlatformData.h:
    * platform/graphics/wx/FontPlatformData.h:
    * platform/mac/PasteboardHelper.h:
    * platform/network/DNS.h:
    * platform/network/FormData.h:
    * platform/network/FormDataBuilder.h:
    * platform/network/HTTPParsers.h:
    * platform/text/Hyphenation.h:
    * platform/text/LineEnding.h:
    * platform/text/TextCodec.h:
    * platform/text/TextEncoding.h:
    * platform/text/TextStream.h:
    * platform/win/BString.h:
    * platform/win/ClipboardUtilitiesWin.h:
    * platform/win/WCDataObject.h:
    * platform/win/WebCoreTextRenderer.h:
    * plugins/DOMMimeType.h:
    * plugins/DOMMimeTypeArray.h:
    * plugins/DOMPlugin.h:
    * plugins/DOMPluginArray.h:
    * rendering/CounterNode.h:
    * rendering/HitTestResult.h:
    * rendering/RenderObjectChildList.h:
    * rendering/RenderText.h:
    * rendering/RenderTreeAsText.h:
    * rendering/TextControlInnerElements.h:
    * rendering/style/ContentData.h:
    * rendering/style/RenderStyle.h:
    * storage/DatabaseAuthorizer.h:
    * storage/DatabaseTrackerClient.h:
    * storage/SQLTransaction.h:
    * storage/SQLTransactionSync.h:
    * storage/Storage.h:
    * storage/chromium/DatabaseObserver.h:
    * svg/SVGAnimatedTemplate.h:
    * svg/SVGDocumentExtensions.h:
    * svg/SVGGlyphElement.h:
    * svg/SVGHKernElement.h:
    * svg/SVGNumberList.h:
    * svg/SVGPointList.h:
    * svg/SVGPreserveAspectRatio.h:
    * svg/SVGStylable.h:
    * svg/SVGTests.h:
    * svg/SVGTransformList.h:
    * svg/SVGTransformable.h:
    * svg/SVGVKernElement.h:
    * websockets/ThreadableWebSocketChannel.h:
    * websockets/ThreadableWebSocketChannelClientWrapper.h:
    * websockets/WebSocket.h:
    * websockets/WebSocketChannel.h:
    * websockets/WebSocketHandshakeResponse.h:
    * wml/WMLErrorHandling.h:
    * wml/WMLPageState.h:
    * wml/WMLVariables.h:
    * workers/DefaultSharedWorkerRepository.h:
    * workers/SharedWorkerRepository.h:
    * workers/Worker.h:
    * workers/WorkerContextProxy.h:
    * workers/WorkerLoaderProxy.h:
    * workers/WorkerLocation.h:
    * workers/WorkerMessagingProxy.h:
    * workers/WorkerReportingProxy.h:
    * workers/WorkerThread.h:
    * xml/DOMParser.h:
    * xml/XMLHttpRequestUpload.h:
    * xml/XPathEvaluator.h:
    * xml/XPathExpression.h:
    * xml/XPathNSResolver.h:
    * xml/XPathResult.h:
    * xml/XPathUtil.h:
    
    WebKit:
    
    * WebKit.xcodeproj/project.pbxproj:
    
    WebKit/chromium:
    
    * public/WebCString.h:
    * public/WebString.h:
    * src/DOMUtilitiesPrivate.h:
    * src/DebuggerAgentImpl.h:
    * src/DebuggerAgentManager.h:
    * src/WebDevToolsAgentImpl.h:
    * src/WebDevToolsFrontendImpl.h:
    * src/WebPageSerializerImpl.h:
    
    WebKit/efl:
    
    * WebCoreSupport/InspectorClientEfl.h:
    
    WebKit/gtk:
    
    * WebCoreSupport/InspectorClientGtk.h:
    
    WebKit/haiku:
    
    * WebCoreSupport/FrameLoaderClientHaiku.h:
    * WebCoreSupport/InspectorClientHaiku.h:
    
    WebKit/mac:
    
    * Plugins/Hosted/NetscapePluginInstanceProxy.h:
    * Plugins/WebBaseNetscapePluginView.h:
    * WebCoreSupport/WebFrameLoaderClient.h:
    * WebCoreSupport/WebIconDatabaseClient.h:
    * WebCoreSupport/WebPluginHalterClient.h:
    * WebView/WebViewInternal.h:
    
    WebKit/qt:
    
    * WebCoreSupport/FrameLoaderClientQt.h:
    * WebCoreSupport/InspectorClientQt.h:
    
    WebKit/win:
    
    * COMVariantSetter.h:
    * MarshallingHelpers.h:
    * WebCoreSupport/WebContextMenuClient.h:
    * WebCoreSupport/WebPluginHalterClient.h:
    * WebHistory.h:
    
    WebKit/wx:
    
    * WebKitSupport/FrameLoaderClientWx.h:
    * WebKitSupport/InspectorClientWx.h:
    
    WebKit2:
    
    * UIProcess/PageClient.h:
    * UIProcess/VisitedLinkProvider.h:
    * UIProcess/WebContextInjectedBundleClient.h:
    * UIProcess/WebFrameProxy.h:
    * UIProcess/WebHistoryClient.h:
    * UIProcess/WebLoaderClient.h:
    * UIProcess/WebPolicyClient.h:
    * UIProcess/WebProcessProxy.h:
    * UIProcess/WebUIClient.h:
    * UIProcess/win/WebView.h:
    * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
    * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
    * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
    * WebProcess/Plugins/NPRuntimeObjectMap.h:
    * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
    * WebProcess/Plugins/PluginController.h:
    * WebProcess/WebPage/WebFrame.h:
    * WebProcess/WebPage/WebPage.h:
    * WebProcess/WebProcess.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@65021 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 316e945..873d4b3 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,14 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * wtf/Forward.h:
+
 2010-08-07  Sheriff Bot  <webkit.review.bot at gmail.com>
 
         Unreviewed, rolling out r64938.
diff --git a/JavaScriptCore/JavaScriptCore.exp b/JavaScriptCore/JavaScriptCore.exp
index eb1aa8d..241ed5c 100644
--- a/JavaScriptCore/JavaScriptCore.exp
+++ b/JavaScriptCore/JavaScriptCore.exp
@@ -99,14 +99,14 @@ __Z12jsRegExpFreeP8JSRegExp
 __Z15jsRegExpCompilePKti24JSRegExpIgnoreCaseOption23JSRegExpMultilineOptionPjPPKc
 __Z15jsRegExpExecutePK8JSRegExpPKtiiPii
 __ZN14OpaqueJSString6createERKN3JSC7UStringE
-__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPN7WebCore10StringImplE
-__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPN7WebCore10StringImplE
+__ZN3JSC10Identifier11addSlowCaseEPNS_12JSGlobalDataEPN3WTF10StringImplE
+__ZN3JSC10Identifier11addSlowCaseEPNS_9ExecStateEPN3WTF10StringImplE
 __ZN3JSC10Identifier27checkCurrentIdentifierTableEPNS_12JSGlobalDataE
 __ZN3JSC10Identifier27checkCurrentIdentifierTableEPNS_9ExecStateE
 __ZN3JSC10Identifier3addEPNS_9ExecStateEPKc
 __ZN3JSC10Identifier4fromEPNS_9ExecStateEi
 __ZN3JSC10Identifier4fromEPNS_9ExecStateEj
-__ZN3JSC10Identifier5equalEPKN7WebCore10StringImplEPKc
+__ZN3JSC10Identifier5equalEPKN3WTF10StringImplEPKc
 __ZN3JSC10JSFunction4infoE
 __ZN3JSC10JSFunction4nameEPNS_9ExecStateE
 __ZN3JSC10throwErrorEPNS_9ExecStateENS_7JSValueE
@@ -177,7 +177,7 @@ __ZN3JSC16createRangeErrorEPNS_9ExecStateERKNS_7UStringE
 __ZN3JSC16throwSyntaxErrorEPNS_9ExecStateE
 __ZN3JSC16toUInt32SlowCaseEdRb
 __ZN3JSC17BytecodeGenerator21setDumpsGeneratedCodeEb
-__ZN3JSC17PropertyNameArray3addEPN7WebCore10StringImplE
+__ZN3JSC17PropertyNameArray3addEPN3WTF10StringImplE
 __ZN3JSC17constructFunctionEPNS_9ExecStateERKNS_7ArgListERKNS_10IdentifierERKNS_7UStringEi
 __ZN3JSC17createSyntaxErrorEPNS_9ExecStateERKNS_7UStringE
 __ZN3JSC18DebuggerActivationC1EPNS_8JSObjectE
@@ -300,7 +300,7 @@ __ZN3JSC9MarkStack10s_pageSizeE
 __ZN3JSC9MarkStack12releaseStackEPvm
 __ZN3JSC9MarkStack13allocateStackEm
 __ZN3JSC9MarkStack18initializePagesizeEv
-__ZN3JSC9Structure13hasTransitionEPN7WebCore10StringImplEj
+__ZN3JSC9Structure13hasTransitionEPN3WTF10StringImplEj
 __ZN3JSC9Structure17stopIgnoringLeaksEv
 __ZN3JSC9Structure18startIgnoringLeaksEv
 __ZN3JSC9Structure21addPropertyTransitionEPS0_RKNS_10IdentifierEjPNS_6JSCellERm
@@ -309,7 +309,7 @@ __ZN3JSC9Structure25changePrototypeTransitionEPS0_NS_7JSValueE
 __ZN3JSC9Structure27despecifyDictionaryFunctionERKNS_10IdentifierE
 __ZN3JSC9Structure27despecifyFunctionTransitionEPS0_RKNS_10IdentifierE
 __ZN3JSC9Structure28addPropertyWithoutTransitionERKNS_10IdentifierEjPNS_6JSCellE
-__ZN3JSC9Structure3getEPKN7WebCore10StringImplERjRPNS_6JSCellE
+__ZN3JSC9Structure3getEPKN3WTF10StringImplERjRPNS_6JSCellE
 __ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjPNS_6JSCellERm
 __ZN3JSC9StructureC1ENS_7JSValueERKNS_8TypeInfoEj
 __ZN3JSC9StructureD1Ev
@@ -317,11 +317,49 @@ __ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13Construc
 __ZN3JSCeqERKNS_7UStringEPKc
 __ZN3JSCgtERKNS_7UStringES2_
 __ZN3JSCltERKNS_7UStringES2_
+__ZN3WTF10StringImpl11reverseFindEPS0_ib
+__ZN3WTF10StringImpl11reverseFindEti
+__ZN3WTF10StringImpl12sharedBufferEv
+__ZN3WTF10StringImpl18simplifyWhiteSpaceEv
+__ZN3WTF10StringImpl19characterStartingAtEj
+__ZN3WTF10StringImpl19createUninitializedEjRPt
+__ZN3WTF10StringImpl22containsOnlyWhitespaceEv
+__ZN3WTF10StringImpl23defaultWritingDirectionEv
+__ZN3WTF10StringImpl37createStrippingNullCharactersSlowCaseEPKtj
+__ZN3WTF10StringImpl4findEPFbtEi
+__ZN3WTF10StringImpl4findEPKcib
+__ZN3WTF10StringImpl4findEPS0_ib
+__ZN3WTF10StringImpl4findEti
+__ZN3WTF10StringImpl5adoptERNS_12StringBufferE
+__ZN3WTF10StringImpl5asciiEv
+__ZN3WTF10StringImpl5emptyEv
+__ZN3WTF10StringImpl5lowerEv
+__ZN3WTF10StringImpl5toIntEPb
+__ZN3WTF10StringImpl5upperEv
+__ZN3WTF10StringImpl6createEPKc
+__ZN3WTF10StringImpl6createEPKcj
+__ZN3WTF10StringImpl6createEPKtj
+__ZN3WTF10StringImpl6secureEt
+__ZN3WTF10StringImpl7replaceEPS0_S1_
+__ZN3WTF10StringImpl7replaceEjjPS0_
+__ZN3WTF10StringImpl7replaceEtPS0_
+__ZN3WTF10StringImpl7replaceEtt
+__ZN3WTF10StringImpl8endsWithEPS0_b
+__ZN3WTF10StringImpl9substringEjj
+__ZN3WTF10StringImplD1Ev
 __ZN3WTF10fastCallocEmm
 __ZN3WTF10fastMallocEm
 __ZN3WTF10fastStrDupEPKc
+__ZN3WTF11commentAtomE
 __ZN3WTF11currentTimeEv
 __ZN3WTF11fastReallocEPvm
+__ZN3WTF12AtomicString11addSlowCaseEPNS_10StringImplE
+__ZN3WTF12AtomicString3addEPKc
+__ZN3WTF12AtomicString3addEPKt
+__ZN3WTF12AtomicString3addEPKtj
+__ZN3WTF12AtomicString3addEPKtjj
+__ZN3WTF12AtomicString4findEPKtjj
+__ZN3WTF12AtomicString4initEv
 __ZN3WTF12createThreadEPFPvS0_ES0_
 __ZN3WTF12createThreadEPFPvS0_ES0_PKc
 __ZN3WTF12detachThreadEj
@@ -340,11 +378,19 @@ __ZN3WTF15ThreadCondition9broadcastEv
 __ZN3WTF15ThreadCondition9timedWaitERNS_5MutexEd
 __ZN3WTF15ThreadConditionC1Ev
 __ZN3WTF15ThreadConditionD1Ev
+__ZN3WTF15charactersToIntEPKtmPb
 __ZN3WTF16callOnMainThreadEPFvPvES0_
+__ZN3WTF16codePointCompareERKNS_6StringES2_
 __ZN3WTF16fastZeroedMallocEm
+__ZN3WTF17charactersToFloatEPKtmPb
+__ZN3WTF17equalIgnoringCaseEPKtPKcj
+__ZN3WTF17equalIgnoringCaseEPNS_10StringImplEPKc
+__ZN3WTF17equalIgnoringCaseEPNS_10StringImplES1_
+__ZN3WTF18charactersToDoubleEPKtmPb
 __ZN3WTF18dateToDaysFrom1970Eiii
 __ZN3WTF18monthFromDayInYearEib
 __ZN3WTF19initializeThreadingEv
+__ZN3WTF20equalIgnoringNullityEPNS_10StringImplES1_
 __ZN3WTF20fastMallocStatisticsEv
 __ZN3WTF20initializeMainThreadEv
 __ZN3WTF21RefCountedLeakCounter16suppressMessagesEPKc
@@ -353,6 +399,8 @@ __ZN3WTF21RefCountedLeakCounter9decrementEv
 __ZN3WTF21RefCountedLeakCounter9incrementEv
 __ZN3WTF21RefCountedLeakCounterC1EPKc
 __ZN3WTF21RefCountedLeakCounterD1Ev
+__ZN3WTF21charactersToIntStrictEPKtmPbi
+__ZN3WTF22charactersToUIntStrictEPKtmPbi
 __ZN3WTF23callOnMainThreadAndWaitEPFvPvES0_
 __ZN3WTF23dayInMonthFromDayInYearEib
 __ZN3WTF23waitForThreadCompletionEjPPv
@@ -371,7 +419,30 @@ __ZN3WTF5Mutex6unlockEv
 __ZN3WTF5Mutex7tryLockEv
 __ZN3WTF5MutexC1Ev
 __ZN3WTF5MutexD1Ev
+__ZN3WTF5equalEPKNS_10StringImplEPKc
+__ZN3WTF5equalEPKNS_10StringImplES2_
 __ZN3WTF5yieldEv
+__ZN3WTF6String26fromUTF8WithLatin1FallbackEPKcm
+__ZN3WTF6String29charactersWithNullTerminationEv
+__ZN3WTF6String6appendEPKtj
+__ZN3WTF6String6appendERKS0_
+__ZN3WTF6String6appendEc
+__ZN3WTF6String6appendEt
+__ZN3WTF6String6formatEPKcz
+__ZN3WTF6String6insertERKS0_j
+__ZN3WTF6String6numberEd
+__ZN3WTF6String6numberEi
+__ZN3WTF6String6numberEj
+__ZN3WTF6String6numberEl
+__ZN3WTF6String6numberEm
+__ZN3WTF6String6numberEt
+__ZN3WTF6String6numberEx
+__ZN3WTF6String6numberEy
+__ZN3WTF6String6removeEji
+__ZN3WTF6String8fromUTF8EPKc
+__ZN3WTF6String8fromUTF8EPKcm
+__ZN3WTF6String8truncateEj
+__ZN3WTF6StringC1EPKt
 __ZN3WTF6strtodEPKcPPc
 __ZN3WTF7CString11mutableDataEv
 __ZN3WTF7CString16newUninitializedEmRPc
@@ -379,96 +450,24 @@ __ZN3WTF7CStringC1EPKc
 __ZN3WTF7CStringC1EPKcj
 __ZN3WTF7Unicode18convertUTF16ToUTF8EPPKtS2_PPcS4_b
 __ZN3WTF7Unicode18convertUTF8ToUTF16EPPKcS2_PPtS4_b
+__ZN3WTF7xmlAtomE
 __ZN3WTF8Collator18setOrderLowerFirstEb
 __ZN3WTF8CollatorC1EPKc
 __ZN3WTF8CollatorD1Ev
 __ZN3WTF8fastFreeEPv
 __ZN3WTF8msToYearEd
+__ZN3WTF8nullAtomE
+__ZN3WTF8starAtomE
+__ZN3WTF8textAtomE
 __ZN3WTF9ByteArray6createEm
 __ZN3WTF9dayInYearEdi
+__ZN3WTF9emptyAtomE
+__ZN3WTF9xmlnsAtomE
+__ZN3WTFeqERKNS_12AtomicStringEPKc
 __ZN3WTFeqERKNS_7CStringES2_
-__ZN7WebCore10StringImpl11reverseFindEPS0_ib
-__ZN7WebCore10StringImpl11reverseFindEti
-__ZN7WebCore10StringImpl12sharedBufferEv
-__ZN7WebCore10StringImpl18simplifyWhiteSpaceEv
-__ZN7WebCore10StringImpl19characterStartingAtEj
-__ZN7WebCore10StringImpl19createUninitializedEjRPt
-__ZN7WebCore10StringImpl22containsOnlyWhitespaceEv
-__ZN7WebCore10StringImpl23defaultWritingDirectionEv
-__ZN7WebCore10StringImpl37createStrippingNullCharactersSlowCaseEPKtj
-__ZN7WebCore10StringImpl4findEPFbtEi
-__ZN7WebCore10StringImpl4findEPKcib
-__ZN7WebCore10StringImpl4findEPS0_ib
-__ZN7WebCore10StringImpl4findEti
-__ZN7WebCore10StringImpl5adoptERNS_12StringBufferE
-__ZN7WebCore10StringImpl5asciiEv
-__ZN7WebCore10StringImpl5emptyEv
-__ZN7WebCore10StringImpl5lowerEv
-__ZN7WebCore10StringImpl5toIntEPb
-__ZN7WebCore10StringImpl5upperEv
-__ZN7WebCore10StringImpl6createEPKc
-__ZN7WebCore10StringImpl6createEPKcj
-__ZN7WebCore10StringImpl6createEPKtj
-__ZN7WebCore10StringImpl6createEPKtjN3WTF10PassRefPtrINS3_21CrossThreadRefCountedINS3_16OwnFastMallocPtrIS1_EEEEEE
-__ZN7WebCore10StringImpl6secureEt
-__ZN7WebCore10StringImpl7replaceEPS0_S1_
-__ZN7WebCore10StringImpl7replaceEjjPS0_
-__ZN7WebCore10StringImpl7replaceEtPS0_
-__ZN7WebCore10StringImpl7replaceEtt
-__ZN7WebCore10StringImpl8endsWithEPS0_b
-__ZN7WebCore10StringImpl9substringEjj
-__ZN7WebCore10StringImplD1Ev
-__ZN7WebCore11commentAtomE
-__ZN7WebCore12AtomicString11addSlowCaseEPNS_10StringImplE
-__ZN7WebCore12AtomicString3addEPKc
-__ZN7WebCore12AtomicString3addEPKt
-__ZN7WebCore12AtomicString3addEPKtj
-__ZN7WebCore12AtomicString3addEPKtjj
-__ZN7WebCore12AtomicString4findEPKtjj
-__ZN7WebCore12AtomicString4initEv
-__ZN7WebCore15charactersToIntEPKtmPb
-__ZN7WebCore16codePointCompareERKNS_6StringES2_
-__ZN7WebCore17charactersToFloatEPKtmPb
-__ZN7WebCore17equalIgnoringCaseEPKtPKcj
-__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplEPKc
-__ZN7WebCore17equalIgnoringCaseEPNS_10StringImplES1_
-__ZN7WebCore18charactersToDoubleEPKtmPb
-__ZN7WebCore20equalIgnoringNullityEPNS_10StringImplES1_
-__ZN7WebCore21charactersToIntStrictEPKtmPbi
-__ZN7WebCore22charactersToUIntStrictEPKtmPbi
-__ZN7WebCore5equalEPKNS_10StringImplEPKc
-__ZN7WebCore5equalEPKNS_10StringImplES2_
-__ZN7WebCore6String26fromUTF8WithLatin1FallbackEPKcm
-__ZN7WebCore6String29charactersWithNullTerminationEv
-__ZN7WebCore6String6appendEPKtj
-__ZN7WebCore6String6appendERKS0_
-__ZN7WebCore6String6appendEc
-__ZN7WebCore6String6appendEt
-__ZN7WebCore6String6formatEPKcz
-__ZN7WebCore6String6insertERKS0_j
-__ZN7WebCore6String6numberEd
-__ZN7WebCore6String6numberEi
-__ZN7WebCore6String6numberEj
-__ZN7WebCore6String6numberEl
-__ZN7WebCore6String6numberEm
-__ZN7WebCore6String6numberEt
-__ZN7WebCore6String6numberEx
-__ZN7WebCore6String6numberEy
-__ZN7WebCore6String6removeEji
-__ZN7WebCore6String8fromUTF8EPKc
-__ZN7WebCore6String8fromUTF8EPKcm
-__ZN7WebCore6String8truncateEj
-__ZN7WebCore6StringC1EPKt
-__ZN7WebCore7xmlAtomE
-__ZN7WebCore8nullAtomE
-__ZN7WebCore8starAtomE
-__ZN7WebCore8textAtomE
-__ZN7WebCore9emptyAtomE
-__ZN7WebCore9xmlnsAtomE
-__ZN7WebCoreeqERKNS_12AtomicStringEPKc
-__ZN7WebCoreplEPKcRKNS_6StringE
-__ZN7WebCoreplERKNS_6StringEPKc
-__ZN7WebCoreplERKNS_6StringES2_
+__ZN3WTFplEPKcRKNS_6StringE
+__ZN3WTFplERKNS_6StringEPKc
+__ZN3WTFplERKNS_6StringES2_
 __ZNK3JSC10JSFunction23isHostFunctionNonInlineEv
 __ZNK3JSC11Interpreter14retrieveCallerEPNS_9ExecStateEPNS_10JSFunctionE
 __ZNK3JSC11Interpreter18retrieveLastCallerEPNS_9ExecStateERiRlRNS_7UStringERNS_7JSValueE
@@ -528,33 +527,32 @@ __ZNK3JSC8JSObject9toBooleanEPNS_9ExecStateE
 __ZNK3JSC8JSString11resolveRopeEPNS_9ExecStateE
 __ZNK3JSC9HashTable11createTableEPNS_12JSGlobalDataE
 __ZNK3JSC9HashTable11deleteTableEv
+__ZNK3WTF12AtomicString5lowerEv
+__ZNK3WTF6String11toIntStrictEPbi
+__ZNK3WTF6String12toUIntStrictEPbi
+__ZNK3WTF6String14threadsafeCopyEv
+__ZNK3WTF6String15stripWhiteSpaceEv
+__ZNK3WTF6String16removeCharactersEPFbtE
+__ZNK3WTF6String17crossThreadStringEv
+__ZNK3WTF6String18simplifyWhiteSpaceEv
+__ZNK3WTF6String19characterStartingAtEj
+__ZNK3WTF6String4utf8Ev
+__ZNK3WTF6String5asciiEv
+__ZNK3WTF6String5lowerEv
+__ZNK3WTF6String5splitERKS0_bRNS_6VectorIS0_Lm0EEE
+__ZNK3WTF6String5splitEtRNS_6VectorIS0_Lm0EEE
+__ZNK3WTF6String5splitEtbRNS_6VectorIS0_Lm0EEE
+__ZNK3WTF6String5toIntEPb
+__ZNK3WTF6String5upperEv
+__ZNK3WTF6String6latin1Ev
+__ZNK3WTF6String6toUIntEPb
+__ZNK3WTF6String7toFloatEPb
+__ZNK3WTF6String8foldCaseEv
+__ZNK3WTF6String8toDoubleEPb
+__ZNK3WTF6String8toIntPtrEPb
+__ZNK3WTF6String8toUInt64EPb
+__ZNK3WTF6String9substringEjj
 __ZNK3WTF8Collator7collateEPKtmS2_m
-__ZNK7WebCore12AtomicString5lowerEv
-__ZNK7WebCore6String11toIntStrictEPbi
-__ZNK7WebCore6String12toUIntStrictEPbi
-__ZNK7WebCore6String14threadsafeCopyEv
-__ZNK7WebCore6String15stripWhiteSpaceEv
-__ZNK7WebCore6String16removeCharactersEPFbtE
-__ZNK7WebCore6String17crossThreadStringEv
-__ZNK7WebCore6String18simplifyWhiteSpaceEv
-__ZNK7WebCore6String19characterStartingAtEj
-__ZNK7WebCore6String4utf8Ev
-__ZNK7WebCore6String5asciiEv
-__ZNK7WebCore6String5lowerEv
-__ZNK7WebCore6String5splitERKS0_RN3WTF6VectorIS0_Lm0EEE
-__ZNK7WebCore6String5splitERKS0_bRN3WTF6VectorIS0_Lm0EEE
-__ZNK7WebCore6String5splitEtRN3WTF6VectorIS0_Lm0EEE
-__ZNK7WebCore6String5splitEtbRN3WTF6VectorIS0_Lm0EEE
-__ZNK7WebCore6String5toIntEPb
-__ZNK7WebCore6String5upperEv
-__ZNK7WebCore6String6latin1Ev
-__ZNK7WebCore6String6toUIntEPb
-__ZNK7WebCore6String7toFloatEPb
-__ZNK7WebCore6String8foldCaseEv
-__ZNK7WebCore6String8toDoubleEPb
-__ZNK7WebCore6String8toIntPtrEPb
-__ZNK7WebCore6String8toUInt64EPb
-__ZNK7WebCore6String9substringEjj
 __ZTVN3JSC12StringObjectE
 __ZTVN3JSC14JSGlobalObjectE
 __ZTVN3JSC15JSWrapperObjectE
diff --git a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
index 00cdf43..90fd3ad 100644
--- a/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
+++ b/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
@@ -39,13 +39,13 @@ EXPORTS
     ??8WTF@@YA_NABVCString at 0@0 at Z
     ?NaN at JSC@@3NB
     ?UTF8String at UString@JSC@@QBE?AVCString at WTF@@_N at Z
-    ?add at Identifier@JSC@@SA?AV?$PassRefPtr at VStringImpl@WebCore@@@WTF@@PAVExecState at 2@PBD at Z
-    ?add at PropertyNameArray@JSC@@QAEXPAVStringImpl at WebCore@@@Z
+    ?add at Identifier@JSC@@SA?AV?$PassRefPtr at VStringImpl@WTF@@@WTF@@PAVExecState at 2@PBD at Z
+    ?add at PropertyNameArray@JSC@@QAEXPAVStringImpl at WTF@@@Z
     ?addBytes at MD5@WTF@@QAEXPBEI at Z
     ?addPropertyTransition at Structure@JSC@@SA?AV?$PassRefPtr at VStructure@JSC@@@WTF@@PAV12 at ABVIdentifier@2 at IPAVJSCell@2 at AAI@Z
     ?addPropertyTransitionToExistingStructure at Structure@JSC@@SA?AV?$PassRefPtr at VStructure@JSC@@@WTF@@PAV12 at ABVIdentifier@2 at IPAVJSCell@2 at AAI@Z
     ?addPropertyWithoutTransition at Structure@JSC@@QAEIABVIdentifier at 2@IPAVJSCell at 2@@Z
-    ?addSlowCase at Identifier@JSC@@CA?AV?$PassRefPtr at VStringImpl@WebCore@@@WTF@@PAVExecState at 2@PAVStringImpl at WebCore@@@Z
+    ?addSlowCase at Identifier@JSC@@CA?AV?$PassRefPtr at VStringImpl@WTF@@@WTF@@PAVExecState at 2@PAVStringImpl at 4@@Z
     ?addWeakGCHandle at Heap@JSC@@QAEPAVWeakGCHandle at 2@PAVJSCell at 2@@Z
     ?allocate at Heap@JSC@@QAEPAXI at Z
     ?allocatePropertyStorage at JSObject@JSC@@QAEXII at Z
@@ -128,9 +128,9 @@ EXPORTS
     ?didTimeOut at TimeoutChecker@JSC@@QAE_NPAVExecState at 2@@Z
     ?doubleToStringInJavaScriptFormat at WTF@@YAXNQADPAI at Z
     ?dumpSampleData at JSGlobalData@JSC@@QAEXPAVExecState at 2@@Z
-    ?empty at StringImpl@WebCore@@SAPAV12 at XZ
+    ?empty at StringImpl@WTF@@SAPAV12 at XZ
     ?enumerable at PropertyDescriptor@JSC@@QBE_NXZ
-    ?equal at Identifier@JSC@@SA_NPBVStringImpl at WebCore@@PBD at Z
+    ?equal at Identifier@JSC@@SA_NPBVStringImpl at WTF@@PBD at Z
     ?evaluate at DebuggerCallFrame@JSC@@QBE?AVJSValue at 2@ABVUString at 2@AAV32@@Z
     ?evaluate at JSC@@YA?AVCompletion at 1@PAVExecState at 1@AAVScopeChain at 1@ABVSourceCode at 1@VJSValue at 1@@Z
     ?exclude at Profile@JSC@@QAEXPBVProfileNode at 2@@Z
@@ -151,7 +151,7 @@ EXPORTS
     ?from at UString@JSC@@SA?AV12 at N@Z
     ?functionGetter at PropertySlot@JSC@@ABE?AVJSValue at 2@PAVExecState at 2@@Z
     ?functionName at DebuggerCallFrame@JSC@@QBEPBVUString at 2@XZ
-    ?get at Structure@JSC@@QAEIPBVStringImpl at WebCore@@AAIAAPAVJSCell at 2@@Z
+    ?get at Structure@JSC@@QAEIPBVStringImpl at WTF@@AAIAAPAVJSCell at 2@@Z
     ?getCallData at JSCell@JSC@@UAE?AW4CallType at 2@AATCallData at 2@@Z
     ?getConstructData at JSCell@JSC@@UAE?AW4ConstructType at 2@AATConstructData at 2@@Z
     ?getJSNumber at JSCell@JSC@@UAE?AVJSValue at 2@XZ
@@ -185,10 +185,10 @@ EXPORTS
     ?hasInstance at JSObject@JSC@@UAE_NPAVExecState at 2@VJSValue at 2@1 at Z
     ?hasProperty at JSObject@JSC@@QBE_NPAVExecState at 2@ABVIdentifier at 2@@Z
     ?hasProperty at JSObject@JSC@@QBE_NPAVExecState at 2@I at Z
-    ?hasTransition at Structure@JSC@@QAE_NPAVStringImpl at WebCore@@I at Z
+    ?hasTransition at Structure@JSC@@QAE_NPAVStringImpl at WTF@@I at Z
     ?heap at Heap@JSC@@SAPAV12 at VJSValue@2@@Z
     ?increment at RefCountedLeakCounter@WTF@@QAEXXZ
-    ?init at AtomicString@WebCore@@SAXXZ
+    ?init at AtomicString@WTF@@SAXXZ
     ?init at JSGlobalObject@JSC@@AAEXPAVJSObject at 2@@Z
     ?initializeMainThread at WTF@@YAXXZ
     ?initializeThreading at JSC@@YAXXZ
diff --git a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
index 4809218..d85264d 100644
--- a/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
+++ b/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
@@ -2319,6 +2319,7 @@
 			isa = PBXProject;
 			buildConfigurationList = 149C277108902AFE008A9EFC /* Build configuration list for PBXProject "JavaScriptCore" */;
 			compatibilityVersion = "Xcode 2.4";
+			developmentRegion = English;
 			hasScannedForEncodings = 1;
 			knownRegions = (
 				English,
diff --git a/JavaScriptCore/jit/JSInterfaceJIT.h b/JavaScriptCore/jit/JSInterfaceJIT.h
index c85b94d..031bfa8 100644
--- a/JavaScriptCore/jit/JSInterfaceJIT.h
+++ b/JavaScriptCore/jit/JSInterfaceJIT.h
@@ -177,7 +177,7 @@ namespace JSC {
     };
 
     struct ThunkHelpers {
-        static unsigned stringImplDataOffset() { return WebCore::StringImpl::dataOffset(); }
+        static unsigned stringImplDataOffset() { return StringImpl::dataOffset(); }
         static unsigned jsStringLengthOffset() { return OBJECT_OFFSETOF(JSString, m_length); }
         static unsigned jsStringValueOffset() { return OBJECT_OFFSETOF(JSString, m_value); }
     };
diff --git a/JavaScriptCore/runtime/UStringImpl.h b/JavaScriptCore/runtime/UStringImpl.h
index 08f1fa5..6401d3b 100644
--- a/JavaScriptCore/runtime/UStringImpl.h
+++ b/JavaScriptCore/runtime/UStringImpl.h
@@ -25,6 +25,6 @@
 
 // FIXME: Remove this redundant name!
 #include <wtf/text/StringImpl.h>
-namespace JSC { typedef WebCore::StringImpl UStringImpl; }
+namespace JSC { typedef StringImpl UStringImpl; }
 
 #endif
diff --git a/JavaScriptCore/wtf/Forward.h b/JavaScriptCore/wtf/Forward.h
index 448de7d..a2cc75b 100644
--- a/JavaScriptCore/wtf/Forward.h
+++ b/JavaScriptCore/wtf/Forward.h
@@ -31,6 +31,12 @@ namespace WTF {
     template<typename T> class PassRefPtr;
     template<typename T> class RefPtr;
     template<typename T, size_t inlineCapacity> class Vector;
+
+    class AtomicString;
+    class AtomicStringImpl;
+    class String;
+    class StringBuffer;
+    class StringImpl;
 }
 
 using WTF::ListRefPtr;
@@ -41,4 +47,10 @@ using WTF::PassRefPtr;
 using WTF::RefPtr;
 using WTF::Vector;
 
+using WTF::AtomicString;
+using WTF::AtomicStringImpl;
+using WTF::String;
+using WTF::StringBuffer;
+using WTF::StringImpl;
+
 #endif // WTF_Forward_h
diff --git a/JavaScriptCore/wtf/WTFThreadData.cpp b/JavaScriptCore/wtf/WTFThreadData.cpp
index 0716dc9..729b48e 100644
--- a/JavaScriptCore/wtf/WTFThreadData.cpp
+++ b/JavaScriptCore/wtf/WTFThreadData.cpp
@@ -54,4 +54,4 @@ WTFThreadData::~WTFThreadData()
 #endif
 }
 
-} // namespace WebCore
+}
diff --git a/JavaScriptCore/wtf/WTFThreadData.h b/JavaScriptCore/wtf/WTFThreadData.h
index d2c379b..c596260 100644
--- a/JavaScriptCore/wtf/WTFThreadData.h
+++ b/JavaScriptCore/wtf/WTFThreadData.h
@@ -45,15 +45,6 @@
 #include <wtf/Threading.h>
 #endif
 
-// FIXME: This is a temporary layering violation while we move more string code to WTF.
-namespace WebCore {
-class AtomicStringTable;
-class StringImpl;
-}
-using WebCore::StringImpl;
-
-typedef void (*AtomicStringTableDestructor)(WebCore::AtomicStringTable*);
-
 #if USE(JSC)
 // FIXME: This is a temporary layering violation while we move more string code to WTF.
 namespace JSC {
@@ -82,12 +73,16 @@ private:
 
 namespace WTF {
 
+class AtomicStringTable;
+
+typedef void (*AtomicStringTableDestructor)(AtomicStringTable*);
+
 class WTFThreadData : public Noncopyable {
 public:
     WTFThreadData();
     ~WTFThreadData();
 
-    WebCore::AtomicStringTable* atomicStringTable()
+    AtomicStringTable* atomicStringTable()
     {
         return m_atomicStringTable;
     }
@@ -118,7 +113,7 @@ public:
 #endif
 
 private:
-    WebCore::AtomicStringTable* m_atomicStringTable;
+    AtomicStringTable* m_atomicStringTable;
     AtomicStringTableDestructor m_atomicStringTableDestructor;
 
 #if USE(JSC)
@@ -132,7 +127,7 @@ private:
     static JS_EXPORTDATA WTFThreadData* staticData;
 #endif
     friend WTFThreadData& wtfThreadData();
-    friend class WebCore::AtomicStringTable;
+    friend class AtomicStringTable;
 };
 
 inline WTFThreadData& wtfThreadData()
diff --git a/JavaScriptCore/wtf/text/AtomicString.cpp b/JavaScriptCore/wtf/text/AtomicString.cpp
index 0547b8c..6e95292 100644
--- a/JavaScriptCore/wtf/text/AtomicString.cpp
+++ b/JavaScriptCore/wtf/text/AtomicString.cpp
@@ -27,7 +27,7 @@
 #include <wtf/Threading.h>
 #include <wtf/WTFThreadData.h>
 
-namespace WebCore {
+namespace WTF {
 
 COMPILE_ASSERT(sizeof(AtomicString) == sizeof(String), atomic_string_and_string_must_be_same_size);
 
@@ -164,7 +164,7 @@ struct UCharBufferTranslator {
 
     static bool equal(StringImpl* const& str, const UCharBuffer& buf)
     {
-        return WebCore::equal(str, buf.s, buf.length);
+        return WTF::equal(str, buf.s, buf.length);
     }
 
     static void translate(StringImpl*& location, const UCharBuffer& buf, unsigned hash)
@@ -190,7 +190,7 @@ struct HashAndCharactersTranslator {
 
     static bool equal(StringImpl* const& string, const HashAndCharacters& buffer)
     {
-        return WebCore::equal(string, buffer.characters, buffer.length);
+        return WTF::equal(string, buffer.characters, buffer.length);
     }
 
     static void translate(StringImpl*& location, const HashAndCharacters& buffer, unsigned hash)
diff --git a/JavaScriptCore/wtf/text/AtomicString.h b/JavaScriptCore/wtf/text/AtomicString.h
index 5bb2cf9..d29981a 100644
--- a/JavaScriptCore/wtf/text/AtomicString.h
+++ b/JavaScriptCore/wtf/text/AtomicString.h
@@ -32,11 +32,13 @@
 #define ATOMICSTRING_CONVERSION
 #endif
 
-// FIXME: This is a temporary layering violation while we move string code to WTF.
-// Landing the file moves in one patch, will follow on with patches to change the namespaces.
+// FIXME: this should be in WTF, too!
 namespace WebCore {
-
 struct AtomicStringHash;
+}
+using WebCore::AtomicStringHash;
+
+namespace WTF {
 
 class AtomicString {
 public:
@@ -156,17 +158,23 @@ inline bool equalIgnoringCase(const String& a, const AtomicString& b) { return e
     extern const JS_EXPORTDATA AtomicString xmlnsAtom;
 #endif
 
-} // namespace WebCore
-
-
-namespace WTF {
-
     // AtomicStringHash is the default hash for AtomicString
     template<typename T> struct DefaultHash;
-    template<> struct DefaultHash<WebCore::AtomicString> {
-        typedef WebCore::AtomicStringHash Hash;
+    template<> struct DefaultHash<AtomicString> {
+        typedef AtomicStringHash Hash;
     };
 
 } // namespace WTF
 
+#ifndef ATOMICSTRING_HIDE_GLOBALS
+using WTF::AtomicString;
+using WTF::nullAtom;
+using WTF::emptyAtom;
+using WTF::textAtom;
+using WTF::commentAtom;
+using WTF::starAtom;
+using WTF::xmlAtom;
+using WTF::xmlnsAtom;
+#endif
+
 #endif // AtomicString_h
diff --git a/JavaScriptCore/wtf/text/AtomicStringImpl.h b/JavaScriptCore/wtf/text/AtomicStringImpl.h
index 4b813f8..3f0c376 100644
--- a/JavaScriptCore/wtf/text/AtomicStringImpl.h
+++ b/JavaScriptCore/wtf/text/AtomicStringImpl.h
@@ -23,9 +23,7 @@
 
 #include "StringImpl.h"
 
-// FIXME: This is a temporary layering violation while we move string code to WTF.
-// Landing the file moves in one patch, will follow on with patches to change the namespaces.
-namespace WebCore {
+namespace WTF {
 
 class AtomicStringImpl : public StringImpl
 {
@@ -35,4 +33,6 @@ public:
 
 }
 
+using WTF::AtomicStringImpl;
+
 #endif
diff --git a/JavaScriptCore/wtf/text/StringBuffer.h b/JavaScriptCore/wtf/text/StringBuffer.h
index 353a44a..c29dd79 100644
--- a/JavaScriptCore/wtf/text/StringBuffer.h
+++ b/JavaScriptCore/wtf/text/StringBuffer.h
@@ -33,7 +33,7 @@
 #include <wtf/Noncopyable.h>
 #include <wtf/unicode/Unicode.h>
 
-namespace WebCore {
+namespace WTF {
 
 class StringBuffer : public Noncopyable {
 public:
@@ -74,4 +74,6 @@ private:
 
 }
 
+using WTF::StringBuffer;
+
 #endif
diff --git a/JavaScriptCore/wtf/text/StringHash.h b/JavaScriptCore/wtf/text/StringHash.h
index b820004..8872fb3 100644
--- a/JavaScriptCore/wtf/text/StringHash.h
+++ b/JavaScriptCore/wtf/text/StringHash.h
@@ -24,13 +24,12 @@
 
 #include "AtomicString.h"
 #include "WTFString.h"
+#include <wtf/Forward.h>
 #include <wtf/HashTraits.h>
 #include <wtf/StringHashFunctions.h>
 #include <wtf/unicode/Unicode.h>
 
-// FIXME: This is a temporary layering violation while we move string code to WTF.
-// Landing the file moves in one patch, will follow on with patches to change the namespaces.
-namespace WebCore {
+namespace WTF {
 
     // The hash() functions on StringHash and CaseFoldingHash do not support
     // null strings. get(), contains(), and add() on HashMap<String,..., StringHash>
@@ -253,16 +252,16 @@ namespace WebCore {
         }
     };
 
-}
-
-namespace WTF {
-
-    template<> struct HashTraits<WebCore::String> : GenericHashTraits<WebCore::String> {
+    template<> struct HashTraits<String> : GenericHashTraits<String> {
         static const bool emptyValueIsZero = true;
-        static void constructDeletedValue(WebCore::String& slot) { new (&slot) WebCore::String(HashTableDeletedValue); }
-        static bool isDeletedValue(const WebCore::String& slot) { return slot.isHashTableDeletedValue(); }
+        static void constructDeletedValue(String& slot) { new (&slot) String(HashTableDeletedValue); }
+        static bool isDeletedValue(const String& slot) { return slot.isHashTableDeletedValue(); }
     };
 
 }
 
+using WTF::StringHash;
+using WTF::CaseFoldingHash;
+using WTF::AlreadyHashed;
+
 #endif
diff --git a/JavaScriptCore/wtf/text/StringImpl.cpp b/JavaScriptCore/wtf/text/StringImpl.cpp
index 698cab9..3669628 100644
--- a/JavaScriptCore/wtf/text/StringImpl.cpp
+++ b/JavaScriptCore/wtf/text/StringImpl.cpp
@@ -31,10 +31,9 @@
 #include <wtf/StdLibExtras.h>
 #include <wtf/WTFThreadData.h>
 
-using namespace WTF;
-using namespace Unicode;
+namespace WTF {
 
-namespace WebCore {
+using namespace Unicode;
 
 static const unsigned minLengthToShare = 20;
 
@@ -535,12 +534,12 @@ int StringImpl::find(const char* chs, int index, bool caseSensitive)
 
 int StringImpl::find(UChar c, int start)
 {
-    return WebCore::find(m_data, m_length, c, start);
+    return WTF::find(m_data, m_length, c, start);
 }
 
 int StringImpl::find(CharacterMatchFunctionPtr matchFunction, int start)
 {
-    return WebCore::find(m_data, m_length, matchFunction, start);
+    return WTF::find(m_data, m_length, matchFunction, start);
 }
 
 int StringImpl::find(StringImpl* str, int index, bool caseSensitive)
@@ -601,7 +600,7 @@ int StringImpl::find(StringImpl* str, int index, bool caseSensitive)
 
 int StringImpl::reverseFind(UChar c, int index)
 {
-    return WebCore::reverseFind(m_data, m_length, c, index);
+    return WTF::reverseFind(m_data, m_length, c, index);
 }
 
 int StringImpl::reverseFind(StringImpl* str, int index, bool caseSensitive)
@@ -961,4 +960,4 @@ PassRefPtr<StringImpl> StringImpl::crossThreadString()
     return threadsafeCopy();
 }
 
-} // namespace WebCore
+} // namespace WTF
diff --git a/JavaScriptCore/wtf/text/StringImpl.h b/JavaScriptCore/wtf/text/StringImpl.h
index 244009f..6080474 100644
--- a/JavaScriptCore/wtf/text/StringImpl.h
+++ b/JavaScriptCore/wtf/text/StringImpl.h
@@ -26,6 +26,7 @@
 #include <limits.h>
 #include <wtf/ASCIICType.h>
 #include <wtf/CrossThreadRefCounted.h>
+#include <wtf/Forward.h>
 #include <wtf/OwnFastMallocPtr.h>
 #include <wtf/StdLibExtras.h>
 #include <wtf/StringHashFunctions.h>
@@ -44,21 +45,14 @@ typedef const struct __CFString * CFStringRef;
 // FIXME: This is a temporary layering violation while we move string code to WTF.
 // Landing the file moves in one patch, will follow on with patches to change the namespaces.
 namespace JSC {
-
 struct IdentifierCStringTranslator;
 struct IdentifierUCharBufferTranslator;
-
 }
 
-// FIXME: This is a temporary layering violation while we move string code to WTF.
-// Landing the file moves in one patch, will follow on with patches to change the namespaces.
-namespace WebCore {
-
-class StringBuffer;
+namespace WTF {
 
 struct CStringTranslator;
 struct HashAndCharactersTranslator;
-struct StringHash;
 struct UCharBufferTranslator;
 
 enum TextCaseSensitivity { TextCaseSensitive, TextCaseInsensitive };
@@ -70,9 +64,9 @@ typedef bool (*CharacterMatchFunctionPtr)(UChar);
 class StringImpl : public StringImplBase {
     friend struct JSC::IdentifierCStringTranslator;
     friend struct JSC::IdentifierUCharBufferTranslator;
-    friend struct CStringTranslator;
-    friend struct HashAndCharactersTranslator;
-    friend struct UCharBufferTranslator;
+    friend struct WTF::CStringTranslator;
+    friend struct WTF::HashAndCharactersTranslator;
+    friend struct WTF::UCharBufferTranslator;
     friend class AtomicStringImpl;
 private:
     // Used to construct static strings, which have an special refCount that can never hit zero.
@@ -384,21 +378,23 @@ inline PassRefPtr<StringImpl> StringImpl::createStrippingNullCharacters(const UC
     return StringImpl::createStrippingNullCharactersSlowCase(characters, length);
 }
 
-}
-
-using WebCore::equal;
-
-namespace WTF {
+struct StringHash;
 
-    // WebCore::StringHash is the default hash for StringImpl* and RefPtr<StringImpl>
-    template<typename T> struct DefaultHash;
-    template<> struct DefaultHash<WebCore::StringImpl*> {
-        typedef WebCore::StringHash Hash;
-    };
-    template<> struct DefaultHash<RefPtr<WebCore::StringImpl> > {
-        typedef WebCore::StringHash Hash;
-    };
+// StringHash is the default hash for StringImpl* and RefPtr<StringImpl>
+template<typename T> struct DefaultHash;
+template<> struct DefaultHash<StringImpl*> {
+    typedef StringHash Hash;
+};
+template<> struct DefaultHash<RefPtr<StringImpl> > {
+    typedef StringHash Hash;
+};
 
 }
 
+using WTF::StringImpl;
+using WTF::equal;
+using WTF::TextCaseSensitivity;
+using WTF::TextCaseSensitive;
+using WTF::TextCaseInsensitive;
+
 #endif
diff --git a/JavaScriptCore/wtf/text/StringStatics.cpp b/JavaScriptCore/wtf/text/StringStatics.cpp
index 4a23a16..5654044 100644
--- a/JavaScriptCore/wtf/text/StringStatics.cpp
+++ b/JavaScriptCore/wtf/text/StringStatics.cpp
@@ -33,7 +33,7 @@
 #include "StaticConstructors.h"
 #include "StringImpl.h"
 
-namespace WebCore {
+namespace WTF {
 
 StringImpl* StringImpl::empty()
 {
diff --git a/JavaScriptCore/wtf/text/WTFString.cpp b/JavaScriptCore/wtf/text/WTFString.cpp
index 2d4417f..6c4de6e 100644
--- a/JavaScriptCore/wtf/text/WTFString.cpp
+++ b/JavaScriptCore/wtf/text/WTFString.cpp
@@ -32,10 +32,9 @@
 #include <wtf/unicode/UTF8.h>
 #include <wtf/unicode/Unicode.h>
 
-using namespace WTF;
-using namespace WTF::Unicode;
+namespace WTF {
 
-namespace WebCore {
+using namespace Unicode;
 
 String::String(const UChar* str)
 {
@@ -905,14 +904,14 @@ float charactersToFloat(const UChar* data, size_t length, bool* ok)
     return static_cast<float>(charactersToDouble(data, length, ok));
 }
 
-} // namespace WebCore
+} // namespace WTF
 
 #ifndef NDEBUG
 // For use in the debugger - leaks memory
-WebCore::String* string(const char*);
+String* string(const char*);
 
-WebCore::String* string(const char* s)
+String* string(const char* s)
 {
-    return new WebCore::String(s);
+    return new String(s);
 }
 #endif
diff --git a/JavaScriptCore/wtf/text/WTFString.h b/JavaScriptCore/wtf/text/WTFString.h
index 90d9a71..93ad586 100644
--- a/JavaScriptCore/wtf/text/WTFString.h
+++ b/JavaScriptCore/wtf/text/WTFString.h
@@ -51,16 +51,8 @@ class BString;
 #endif
 
 namespace WTF {
-class CString;
-}
-using WTF::CString;
 
-// FIXME: This is a temporary layering violation while we move string code to WTF.
-// Landing the file moves in one patch, will follow on with patches to change the namespaces.
-namespace WebCore {
-
-class SharedBuffer;
-struct StringHash;
+class CString;
 
 // Declarations of string operations
 
@@ -417,16 +409,29 @@ inline void appendNumber(Vector<UChar>& vector, unsigned char number)
     }
 }
 
-} // namespace WebCore
-
-namespace WTF {
+struct StringHash;
 
-    // StringHash is the default hash for String
-    template<typename T> struct DefaultHash;
-    template<> struct DefaultHash<WebCore::String> {
-        typedef WebCore::StringHash Hash;
-    };
+// StringHash is the default hash for String
+template<typename T> struct DefaultHash;
+template<> struct DefaultHash<String> {
+    typedef StringHash Hash;
+};
 
 }
 
+using WTF::CString;
+using WTF::String;
+
+using WTF::isSpaceOrNewline;
+using WTF::find;
+using WTF::reverseFind;
+using WTF::append;
+using WTF::appendNumber;
+using WTF::equal;
+using WTF::equalIgnoringCase;
+using WTF::charactersAreAllASCII;
+using WTF::charactersToInt;
+using WTF::charactersToFloat;
+using WTF::charactersToDouble;
+
 #endif
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index fbfbabe..a940343 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,238 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * accessibility/AXObjectCache.h:
+        * accessibility/AccessibilityARIAGrid.h:
+        * accessibility/AccessibilityListBoxOption.h:
+        * accessibility/AccessibilityObject.h:
+        * accessibility/AccessibilityRenderObject.h:
+        * accessibility/AccessibilityTable.h:
+        * bindings/cpp/WebDOMCString.h:
+        * bindings/cpp/WebDOMString.h:
+        * bindings/gobject/ConvertToUTF8String.h:
+        * bindings/js/DOMWrapperWorld.h:
+        * bindings/js/JSDOMBinding.h:
+        * bindings/js/JSDOMWindowBase.h:
+        * bindings/js/JSMessagePortCustom.h:
+        * bindings/js/JavaScriptCallFrame.h:
+        * bindings/js/ScriptController.h:
+        * bindings/js/ScriptProfile.h:
+        * bindings/js/ScriptSourceProvider.h:
+        * bindings/js/ScriptString.h:
+        * bindings/js/WorkerScriptController.h:
+        * bindings/objc/DOMImplementationFront.h:
+        * bindings/v8/ScheduledAction.h:
+        * bindings/v8/ScriptController.h:
+        * bindings/v8/V8DOMWindowShell.h:
+        * bindings/v8/V8Proxy.h:
+        * bindings/v8/V8Utilities.h:
+        * bindings/v8/custom/V8CustomXPathNSResolver.h:
+        * bridge/c/c_utility.h:
+        * css/CSSFontSelector.h:
+        * css/CSSHelper.h:
+        * css/CSSOMUtils.h:
+        * css/CSSPrimitiveValue.h:
+        * css/MediaList.h:
+        * css/StyleBase.h:
+        * css/StyleSheetList.h:
+        * css/WebKitCSSKeyframesRule.h:
+        * dom/CheckedRadioButtons.h:
+        * dom/DOMImplementation.h:
+        * dom/DocumentMarker.h:
+        * dom/DynamicNodeList.h:
+        * dom/EventTarget.h:
+        * dom/MessagePort.h:
+        * dom/MessagePortChannel.h:
+        * dom/NameNodeList.h:
+        * dom/Node.h:
+        * dom/NodeList.h:
+        * dom/OptionGroupElement.h:
+        * dom/ScriptExecutionContext.h:
+        * dom/SelectElement.h:
+        * dom/ViewportArguments.h:
+        * dom/make_names.pl:
+        * editing/HTMLInterchange.h:
+        * editing/htmlediting.h:
+        * editing/markup.h:
+        * html/CollectionCache.h:
+        * html/DOMFormData.h:
+        * html/DataGridColumnList.h:
+        * html/DateComponents.h:
+        * html/FileStream.h:
+        * html/FileStreamProxy.h:
+        * html/FormDataList.h:
+        (WebCore::FormDataList::appendData):
+        * html/HTMLCollection.h:
+        * html/HTMLElementStack.h:
+        * html/HTMLFormattingElementList.h:
+        * html/HTMLParserQuirks.h:
+        * html/HTMLQuoteElement.h:
+        * html/HTMLScriptRunnerHost.h:
+        * html/StepRange.h:
+        * html/canvas/CanvasGradient.h:
+        * html/canvas/CanvasNumberArray.h:
+        * html/canvas/CanvasPattern.h:
+        * inspector/InjectedScript.h:
+        * inspector/InspectorCSSStore.h:
+        * inspector/InspectorClient.h:
+        * inspector/InspectorFrontendClient.h:
+        * inspector/InspectorValues.h:
+        * inspector/ScriptDebugListener.h:
+        * loader/CachedResourceClient.h:
+        * loader/CrossOriginAccessControl.h:
+        * loader/DocumentThreadableLoader.h:
+        * loader/FrameLoaderClient.h:
+        * loader/RedirectScheduler.h:
+        * loader/SubframeLoader.h:
+        * loader/appcache/DOMApplicationCache.h:
+        * loader/archive/ArchiveFactory.h:
+        * loader/icon/IconDatabaseClient.h:
+        * notifications/NotificationPresenter.h:
+        * page/Chrome.h:
+        * page/ChromeClient.h:
+        * page/Console.h:
+        * page/ContextMenuClient.h:
+        * page/DOMSelection.h:
+        * page/EditorClient.h:
+        * page/EventHandler.h:
+        * page/FrameView.h:
+        * page/GeolocationPositionCache.h:
+        * page/History.h:
+        * page/Location.h:
+        * page/Navigator.h:
+        * page/NavigatorBase.h:
+        * page/PluginHalterClient.h:
+        * page/PrintContext.h:
+        * page/SpeechInput.h:
+        * page/SpeechInputListener.h:
+        * page/animation/AnimationController.h:
+        * platform/CookieJar.h:
+        * platform/CrossThreadCopier.h:
+        * platform/DragImage.h:
+        * platform/FileSystem.h:
+        * platform/Language.h:
+        * platform/Length.h:
+        * platform/LinkHash.h:
+        * platform/LocalizationStrategy.h:
+        * platform/LocalizedStrings.h:
+        * platform/Logging.h:
+        * platform/Pasteboard.h:
+        * platform/PopupMenuClient.h:
+        * platform/SearchPopupMenu.h:
+        * platform/Widget.h:
+        * platform/cf/BinaryPropertyList.h:
+        * platform/chromium/ChromiumBridge.h:
+        * platform/chromium/ClipboardUtilitiesChromium.h:
+        * platform/cocoa/KeyEventCocoa.h:
+        * platform/graphics/Color.h:
+        * platform/graphics/FontCache.h:
+        * platform/graphics/FontData.h:
+        * platform/graphics/FontSelector.h:
+        * platform/graphics/GraphicsTypes.h:
+        * platform/graphics/Icon.h:
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/ImageSource.h:
+        * platform/graphics/MediaPlayer.h:
+        * platform/graphics/MediaPlayerPrivate.h:
+        * platform/graphics/Path.h:
+        * platform/graphics/StringTruncator.h:
+        * platform/graphics/cairo/FontCustomPlatformData.h:
+        * platform/graphics/cairo/FontPlatformData.h:
+        * platform/graphics/cg/FontPlatformData.h:
+        * platform/graphics/cg/ImageSourceCG.h:
+        * platform/graphics/chromium/FontCustomPlatformData.h:
+        * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
+        * platform/graphics/chromium/FontPlatformDataLinux.h:
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
+        * platform/graphics/haiku/FontCustomPlatformData.h:
+        * platform/graphics/mac/FontCustomPlatformData.h:
+        * platform/graphics/mac/FontPlatformData.h:
+        * platform/graphics/qt/FontCustomPlatformData.h:
+        * platform/graphics/qt/FontPlatformData.h:
+        * platform/graphics/win/FontCustomPlatformData.h:
+        * platform/graphics/win/FontCustomPlatformDataCairo.h:
+        * platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h:
+        * platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h:
+        * platform/graphics/wince/FontPlatformData.h:
+        * platform/graphics/wince/MediaPlayerPrivateWince.h:
+        * platform/graphics/wince/MediaPlayerProxy.h:
+        * platform/graphics/wx/FontCustomPlatformData.h:
+        * platform/graphics/wx/FontPlatformData.h:
+        * platform/mac/PasteboardHelper.h:
+        * platform/network/DNS.h:
+        * platform/network/FormData.h:
+        * platform/network/FormDataBuilder.h:
+        * platform/network/HTTPParsers.h:
+        * platform/text/Hyphenation.h:
+        * platform/text/LineEnding.h:
+        * platform/text/TextCodec.h:
+        * platform/text/TextEncoding.h:
+        * platform/text/TextStream.h:
+        * platform/win/BString.h:
+        * platform/win/ClipboardUtilitiesWin.h:
+        * platform/win/WCDataObject.h:
+        * platform/win/WebCoreTextRenderer.h:
+        * plugins/DOMMimeType.h:
+        * plugins/DOMMimeTypeArray.h:
+        * plugins/DOMPlugin.h:
+        * plugins/DOMPluginArray.h:
+        * rendering/CounterNode.h:
+        * rendering/HitTestResult.h:
+        * rendering/RenderObjectChildList.h:
+        * rendering/RenderText.h:
+        * rendering/RenderTreeAsText.h:
+        * rendering/TextControlInnerElements.h:
+        * rendering/style/ContentData.h:
+        * rendering/style/RenderStyle.h:
+        * storage/DatabaseAuthorizer.h:
+        * storage/DatabaseTrackerClient.h:
+        * storage/SQLTransaction.h:
+        * storage/SQLTransactionSync.h:
+        * storage/Storage.h:
+        * storage/chromium/DatabaseObserver.h:
+        * svg/SVGAnimatedTemplate.h:
+        * svg/SVGDocumentExtensions.h:
+        * svg/SVGGlyphElement.h:
+        * svg/SVGHKernElement.h:
+        * svg/SVGNumberList.h:
+        * svg/SVGPointList.h:
+        * svg/SVGPreserveAspectRatio.h:
+        * svg/SVGStylable.h:
+        * svg/SVGTests.h:
+        * svg/SVGTransformList.h:
+        * svg/SVGTransformable.h:
+        * svg/SVGVKernElement.h:
+        * websockets/ThreadableWebSocketChannel.h:
+        * websockets/ThreadableWebSocketChannelClientWrapper.h:
+        * websockets/WebSocket.h:
+        * websockets/WebSocketChannel.h:
+        * websockets/WebSocketHandshakeResponse.h:
+        * wml/WMLErrorHandling.h:
+        * wml/WMLPageState.h:
+        * wml/WMLVariables.h:
+        * workers/DefaultSharedWorkerRepository.h:
+        * workers/SharedWorkerRepository.h:
+        * workers/Worker.h:
+        * workers/WorkerContextProxy.h:
+        * workers/WorkerLoaderProxy.h:
+        * workers/WorkerLocation.h:
+        * workers/WorkerMessagingProxy.h:
+        * workers/WorkerReportingProxy.h:
+        * workers/WorkerThread.h:
+        * xml/DOMParser.h:
+        * xml/XMLHttpRequestUpload.h:
+        * xml/XPathEvaluator.h:
+        * xml/XPathExpression.h:
+        * xml/XPathNSResolver.h:
+        * xml/XPathResult.h:
+        * xml/XPathUtil.h:
+
 2010-08-09  Nat Duca  <nduca at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index f4978bd..2da4dee 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -134,23 +134,24 @@ __Z4coreP22DOMCSSStyleDeclaration
 __Z4coreP7DOMNode
 __Z4coreP8DOMRange
 __ZN3JSC8Bindings8Instance16newRuntimeObjectEPNS_9ExecStateE
-__ZN7WebCore10MouseEventC1ERKNS_12AtomicStringEbbN3WTF10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTargetEEENS5_INS_9ClipboardEEEb
+__ZN3WTF10StringImplcvP8NSStringEv
+__ZN3WTF6StringC1EP8NSString
+__ZN3WTF6StringC1EPK10__CFString
+__ZN7WebCore10MouseEventC1ERKN3WTF12AtomicStringEbbNS1_10PassRefPtrINS_9DOMWindowEEEiiiiibbbbtNS5_INS_11EventTargetEEENS5_INS_9ClipboardEEEb
 __ZN7WebCore10ScrollView20setCanHaveScrollbarsEb
-__ZN7WebCore10StringImpl14createCFStringEv
-__ZN7WebCore10StringImplcvP8NSStringEv
-__ZN7WebCore10deleteFileERKNS_6StringE
+__ZN7WebCore10deleteFileERKN3WTF6StringE
 __ZN7WebCore10handCursorEv
-__ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKNS_6StringE
+__ZN7WebCore10setCookiesEPNS_8DocumentERKNS_4KURLERKN3WTF6StringE
 __ZN7WebCore11BitmapImageC1EP7CGImagePNS_13ImageObserverE
 __ZN7WebCore11CachedFrame23cachedFramePlatformDataEv
 __ZN7WebCore11CachedFrame26setCachedFramePlatformDataEN3WTF10PassOwnPtrINS_23CachedFramePlatformDataEEE
 __ZN7WebCore11EditCommand7reapplyEv
 __ZN7WebCore11EditCommand7unapplyEv
-__ZN7WebCore11FileChooser10chooseFileERKNS_6StringE
+__ZN7WebCore11FileChooser10chooseFileERKN3WTF6StringE
 __ZN7WebCore11FileChooser10iconLoadedEN3WTF10PassRefPtrINS_4IconEEE
-__ZN7WebCore11FileChooser11chooseFilesERKN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore11FileChooser11chooseFilesERKN3WTF6VectorINS1_6StringELm0EEE
 __ZN7WebCore11FileChooserD1Ev
-__ZN7WebCore11FrameLoader11completeURLERKNS_6StringE
+__ZN7WebCore11FrameLoader11completeURLERKN3WTF6StringE
 __ZN7WebCore11FrameLoader11loadArchiveEN3WTF10PassRefPtrINS_7ArchiveEEE
 __ZN7WebCore11FrameLoader11shouldCloseEv
 __ZN7WebCore11FrameLoader12shouldReloadERKNS_4KURLES3_
@@ -159,44 +160,43 @@ __ZN7WebCore11FrameLoader14stopAllLoadersENS_14DatabasePolicyE
 __ZN7WebCore11FrameLoader16detachFromParentEv
 __ZN7WebCore11FrameLoader16loadFrameRequestERKNS_16FrameLoadRequestEbbN3WTF10PassRefPtrINS_5EventEEENS5_INS_9FormStateEEENS_14ReferrerPolicyE
 __ZN7WebCore11FrameLoader17stopForUserCancelEb
-__ZN7WebCore11FrameLoader21loadURLIntoChildFrameERKNS_4KURLERKNS_6StringEPNS_5FrameE
-__ZN7WebCore11FrameLoader22findFrameForNavigationERKNS_12AtomicStringE
+__ZN7WebCore11FrameLoader21loadURLIntoChildFrameERKNS_4KURLERKN3WTF6StringEPNS_5FrameE
+__ZN7WebCore11FrameLoader22findFrameForNavigationERKN3WTF12AtomicStringE
 __ZN7WebCore11FrameLoader23isProcessingUserGestureEv
-__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv
-__ZN7WebCore11FrameLoader26reloadWithOverrideEncodingERKNS_6StringE
+__ZN7WebCore11FrameLoader23timeOfLastCompletedLoadEv    
+__ZN7WebCore11FrameLoader26reloadWithOverrideEncodingERKN3WTF6StringE
 __ZN7WebCore11FrameLoader4initEv
+__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKN3WTF6StringEb
 __ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_14SubstituteDataEb
-__ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestERKNS_6StringEb
 __ZN7WebCore11FrameLoader4loadERKNS_15ResourceRequestEb
 __ZN7WebCore11FrameLoader6reloadEb
 __ZN7WebCore11FrameLoader7addDataEPKci
 __ZN7WebCore11Geolocation12setIsAllowedEb
 __ZN7WebCore11GeolocationD1Ev
 __ZN7WebCore11HistoryItem10targetItemEv
-__ZN7WebCore11HistoryItem11setReferrerERKNS_6StringE
+__ZN7WebCore11HistoryItem11setReferrerERKN3WTF6StringE
 __ZN7WebCore11HistoryItem12addChildItemEN3WTF10PassRefPtrIS0_EE
-__ZN7WebCore11HistoryItem12setURLStringERKNS_6StringE
+__ZN7WebCore11HistoryItem12setURLStringERKN3WTF6StringE
 __ZN7WebCore11HistoryItem12setViewStateEP11objc_object
 __ZN7WebCore11HistoryItem13setVisitCountEi
-__ZN7WebCore11HistoryItem14addRedirectURLERKNS_6StringE
+__ZN7WebCore11HistoryItem14addRedirectURLERKN3WTF6StringE
 __ZN7WebCore11HistoryItem14setScrollPointERKNS_8IntPointE
 __ZN7WebCore11HistoryItem15setIsTargetItemEb
-__ZN7WebCore11HistoryItem15setRedirectURLsEN3WTF10PassOwnPtrINS1_6VectorINS_6StringELm0EEEEE
+__ZN7WebCore11HistoryItem15setRedirectURLsEN3WTF10PassOwnPtrINS1_6VectorINS1_6StringELm0EEEEE
 __ZN7WebCore11HistoryItem16adoptVisitCountsERN3WTF6VectorIiLm0EEES4_
-__ZN7WebCore11HistoryItem17setAlternateTitleERKNS_6StringE
+__ZN7WebCore11HistoryItem17setAlternateTitleERKN3WTF6StringE
 __ZN7WebCore11HistoryItem18recordInitialVisitEv
 __ZN7WebCore11HistoryItem18setLastVisitedTimeEd
-__ZN7WebCore11HistoryItem20setOriginalURLStringERKNS_6StringE
-__ZN7WebCore11HistoryItem20setTransientPropertyERKNS_6StringEP11objc_object
+__ZN7WebCore11HistoryItem20setOriginalURLStringERKN3WTF6StringE
+__ZN7WebCore11HistoryItem20setTransientPropertyERKN3WTF6StringEP11objc_object
 __ZN7WebCore11HistoryItem22mergeAutoCompleteHintsEPS0_
 __ZN7WebCore11HistoryItem6setURLERKNS_4KURLE
-__ZN7WebCore11HistoryItem7visitedERKNS_6StringEdNS_18VisitCountBehaviorE
+__ZN7WebCore11HistoryItem7visitedERKN3WTF6StringEdNS_18VisitCountBehaviorE
 __ZN7WebCore11HistoryItem8formDataEv
-__ZN7WebCore11HistoryItem8setTitleERKNS_6StringE
-__ZN7WebCore11HistoryItem9setParentERKNS_6StringE
-__ZN7WebCore11HistoryItemC1ERKNS_4KURLERKNS_6StringES6_S6_
-__ZN7WebCore11HistoryItemC1ERKNS_6StringES3_S3_d
-__ZN7WebCore11HistoryItemC1ERKNS_6StringES3_d
+__ZN7WebCore11HistoryItem8setTitleERKN3WTF6StringE
+__ZN7WebCore11HistoryItemC1ERKN3WTF6StringES4_S4_d
+__ZN7WebCore11HistoryItemC1ERKN3WTF6StringES4_d
+__ZN7WebCore11HistoryItemC1ERKNS_4KURLERKN3WTF6StringES7_S7_
 __ZN7WebCore11HistoryItemC1Ev
 __ZN7WebCore11HistoryItemD1Ev
 __ZN7WebCore11IconFetcher6cancelEv
@@ -216,7 +216,6 @@ __ZN7WebCore12EventHandler14scrollOverflowENS_15ScrollDirectionENS_17ScrollGranu
 __ZN7WebCore12EventHandler15sendScrollEventEv
 __ZN7WebCore12EventHandler16handleWheelEventERNS_18PlatformWheelEventE
 __ZN7WebCore12EventHandler17scrollRecursivelyENS_15ScrollDirectionENS_17ScrollGranularityEPNS_4NodeE
-__ZN7WebCore12EventHandler20handleTextInputEventERKNS_6StringEPNS_5EventEbb
 __ZN7WebCore12EventHandler20hitTestResultAtPointERKNS_8IntPointEbbNS_17HitTestScrollbarsEjRKNS_7IntSizeE
 __ZN7WebCore12EventHandler21handleMousePressEventERKNS_18PlatformMouseEventE
 __ZN7WebCore12EventHandler23handleMouseReleaseEventERKNS_18PlatformMouseEventE
@@ -229,25 +228,23 @@ __ZN7WebCore12GCController17garbageCollectNowEv
 __ZN7WebCore12GCController43garbageCollectOnAlternateThreadForDebuggingEb
 __ZN7WebCore12IconDatabase10setEnabledEb
 __ZN7WebCore12IconDatabase11defaultIconERKNS_7IntSizeE
-__ZN7WebCore12IconDatabase14iconForPageURLERKNS_6StringERKNS_7IntSizeE
+__ZN7WebCore12IconDatabase14iconForPageURLERKN3WTF6StringERKNS_7IntSizeE
 __ZN7WebCore12IconDatabase14removeAllIconsEv
 __ZN7WebCore12IconDatabase15iconRecordCountEv
-__ZN7WebCore12IconDatabase17iconURLForPageURLERKNS_6StringE
+__ZN7WebCore12IconDatabase17iconURLForPageURLERKN3WTF6StringE
 __ZN7WebCore12IconDatabase19pageURLMappingCountEv
 __ZN7WebCore12IconDatabase20allowDatabaseCleanupEv
-__ZN7WebCore12IconDatabase20delayDatabaseCleanupEv
-__ZN7WebCore12IconDatabase20retainIconForPageURLERKNS_6StringE
+__ZN7WebCore12IconDatabase20delayDatabaseCleanupEv   
+__ZN7WebCore12IconDatabase20retainIconForPageURLERKN3WTF6StringE
 __ZN7WebCore12IconDatabase20retainedPageURLCountEv
-__ZN7WebCore12IconDatabase20setIconURLForPageURLERKNS_6StringES3_
-__ZN7WebCore12IconDatabase21releaseIconForPageURLERKNS_6StringE
-__ZN7WebCore12IconDatabase21setIconDataForIconURLEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_6StringE
+__ZN7WebCore12IconDatabase21releaseIconForPageURLERKN3WTF6StringE
 __ZN7WebCore12IconDatabase23defaultDatabaseFilenameEv
 __ZN7WebCore12IconDatabase23iconRecordCountWithDataEv
-__ZN7WebCore12IconDatabase23importIconURLForPageURLERKNS_6StringES3_
-__ZN7WebCore12IconDatabase24importIconDataForIconURLEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_6StringE
+__ZN7WebCore12IconDatabase23importIconURLForPageURLERKN3WTF6StringES4_
+__ZN7WebCore12IconDatabase24importIconDataForIconURLEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS1_6StringE
 __ZN7WebCore12IconDatabase25setPrivateBrowsingEnabledEb
 __ZN7WebCore12IconDatabase27checkIntegrityBeforeOpeningEv
-__ZN7WebCore12IconDatabase4openERKNS_6StringE
+__ZN7WebCore12IconDatabase4openERKN3WTF6StringE
 __ZN7WebCore12IconDatabase5closeEv
 __ZN7WebCore12IconDatabase9setClientEPNS_18IconDatabaseClientE
 __ZN7WebCore12PopupMenuMacC1EPNS_15PopupMenuClientE
@@ -265,9 +262,9 @@ __ZN7WebCore12RenderWidget19showSubstituteImageEN3WTF10PassRefPtrINS_5ImageEEE
 __ZN7WebCore12SchedulePairC1EP9NSRunLoopPK10__CFString
 __ZN7WebCore12SharedBuffer10wrapNSDataEP6NSData
 __ZN7WebCore12SharedBuffer12createNSDataEv
-__ZN7WebCore12SharedBuffer24createWithContentsOfFileERKNS_6StringE
+__ZN7WebCore12SharedBuffer24createWithContentsOfFileERKN3WTF6StringE
 __ZN7WebCore12SharedBufferD1Ev
-__ZN7WebCore12TextEncodingC1ERKNS_6StringE
+__ZN7WebCore12TextEncodingC1ERKN3WTF6StringE
 __ZN7WebCore12TextIterator11rangeLengthEPKNS_5RangeEb
 __ZN7WebCore12TextIterator26rangeFromLocationAndLengthEPNS_7ElementEiib
 __ZN7WebCore12TextIterator7advanceEv
@@ -287,7 +284,7 @@ __ZN7WebCore13HitTestResultD1Ev
 __ZN7WebCore13IdentifierRep3getEPKc
 __ZN7WebCore13IdentifierRep3getEi
 __ZN7WebCore13JSHTMLElement6s_infoE
-__ZN7WebCore13KeyboardEventC1ERKNS_12AtomicStringEbbPNS_9DOMWindowERKNS_6StringEjbbbbb
+__ZN7WebCore13KeyboardEventC1ERKN3WTF12AtomicStringEbbPNS_9DOMWindowERKNS1_6StringEjbbbbb
 __ZN7WebCore13TypingCommand39insertParagraphSeparatorInQuotedContentEPNS_8DocumentE
 __ZN7WebCore13createWrapperEPN3JSC9ExecStateEPNS_17JSDOMGlobalObjectEPNS_4NodeE
 __ZN7WebCore13toDeviceSpaceERKNS_9FloatRectEP8NSWindow
@@ -304,40 +301,39 @@ __ZN7WebCore14DocumentLoader22cancelMainResourceLoadERKNS_13ResourceErrorE
 __ZN7WebCore14DocumentLoader24removePlugInStreamLoaderEPNS_14ResourceLoaderE
 __ZN7WebCore14DocumentLoader7requestEv
 __ZN7WebCore14DocumentLoader8setFrameEPNS_5FrameE
-__ZN7WebCore14DocumentLoader8setTitleERKNS_6StringE
+__ZN7WebCore14DocumentLoader8setTitleERKN3WTF6StringE
 __ZN7WebCore14DocumentLoaderC1ERKNS_15ResourceRequestERKNS_14SubstituteDataE
 __ZN7WebCore14DocumentLoaderC2ERKNS_15ResourceRequestERKNS_14SubstituteDataE
 __ZN7WebCore14DocumentLoaderD2Ev
-__ZN7WebCore14DocumentWriter11setEncodingERKNS_6StringEb
+__ZN7WebCore14DocumentWriter11setEncodingERKN3WTF6StringEb
 __ZN7WebCore14ResourceHandle12releaseProxyEv
 __ZN7WebCore14ResourceHandle20forceContentSniffingEv
 __ZN7WebCore14ResourceLoader14cancelledErrorEv
 __ZN7WebCore14ResourceLoader19setShouldBufferDataEb
 __ZN7WebCore14SVGSMILElement13isSMILElementEPNS_4NodeE
-__ZN7WebCore14SchemeRegistry24registerURLSchemeAsLocalERKNS_6StringE
-__ZN7WebCore14SchemeRegistry25registerURLSchemeAsSecureERKNS_6StringE
-__ZN7WebCore14SchemeRegistry32registerURLSchemeAsEmptyDocumentERKNS_6StringE
-__ZN7WebCore14SecurityOrigin16createFromStringERKNS_6StringE
+__ZN7WebCore14SchemeRegistry24registerURLSchemeAsLocalERKN3WTF6StringE
+__ZN7WebCore14SchemeRegistry25registerURLSchemeAsSecureERKN3WTF6StringE
+__ZN7WebCore14SchemeRegistry32registerURLSchemeAsEmptyDocumentERKN3WTF6StringE
+__ZN7WebCore14SecurityOrigin16createFromStringERKN3WTF6StringE
 __ZN7WebCore14SecurityOrigin18setLocalLoadPolicyENS0_15LocalLoadPolicyE
-__ZN7WebCore14SecurityOrigin18shouldHideReferrerERKNS_4KURLERKNS_6StringE
+__ZN7WebCore14SecurityOrigin18shouldHideReferrerERKNS_4KURLERKN3WTF6StringE
 __ZN7WebCore14SecurityOrigin27resetOriginAccessWhitelistsEv
-__ZN7WebCore14SecurityOrigin29addOriginAccessWhitelistEntryERKS0_RKNS_6StringES5_b
-__ZN7WebCore14SecurityOrigin32removeOriginAccessWhitelistEntryERKS0_RKNS_6StringES5_b
-__ZN7WebCore14SecurityOrigin40setDomainRelaxationForbiddenForURLSchemeEbRKNS_6StringE
+__ZN7WebCore14SecurityOrigin29addOriginAccessWhitelistEntryERKS0_RKN3WTF6StringES6_b
+__ZN7WebCore14SecurityOrigin32removeOriginAccessWhitelistEntryERKS0_RKN3WTF6StringES6_b
+__ZN7WebCore14SecurityOrigin40setDomainRelaxationForbiddenForURLSchemeEbRKN3WTF6StringE
 __ZN7WebCore14SecurityOrigin6createERKNS_4KURLEi
-__ZN7WebCore14SecurityOrigin7canLoadERKNS_4KURLERKNS_6StringEPNS_8DocumentE
-__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS_6StringESA_SA_RKNS_16ResourceResponseE
+__ZN7WebCore14SecurityOrigin7canLoadERKNS_4KURLERKN3WTF6StringEPNS_8DocumentE
+__ZN7WebCore15ArchiveResource6createEN3WTF10PassRefPtrINS_12SharedBufferEEERKNS_4KURLERKNS1_6StringESA_SA_RKNS_16ResourceResponseE
 __ZN7WebCore15DOMWrapperWorld15unregisterWorldEv
 __ZN7WebCore15DOMWrapperWorldD1Ev
 __ZN7WebCore15DatabaseTracker12deleteOriginEPNS_14SecurityOriginE
-__ZN7WebCore15DatabaseTracker14deleteDatabaseEPNS_14SecurityOriginERKNS_6StringE
+__ZN7WebCore15DatabaseTracker14deleteDatabaseEPNS_14SecurityOriginERKN3WTF6StringE
 __ZN7WebCore15DatabaseTracker14quotaForOriginEPNS_14SecurityOriginE
 __ZN7WebCore15DatabaseTracker14usageForOriginEPNS_14SecurityOriginE
-__ZN7WebCore15DatabaseTracker17initializeTrackerERKNS_6StringE
+__ZN7WebCore15DatabaseTracker17initializeTrackerERKN3WTF6StringE
 __ZN7WebCore15DatabaseTracker18deleteAllDatabasesEv
-__ZN7WebCore15DatabaseTracker22databaseNamesForOriginEPNS_14SecurityOriginERN3WTF6VectorINS_6StringELm0EEE
-__ZN7WebCore15DatabaseTracker23detailsForNameAndOriginERKNS_6StringEPNS_14SecurityOriginE
-__ZN7WebCore15DatabaseTracker24setDatabaseDirectoryPathERKNS_6StringE
+__ZN7WebCore15DatabaseTracker22databaseNamesForOriginEPNS_14SecurityOriginERN3WTF6VectorINS3_6StringELm0EEE
+__ZN7WebCore15DatabaseTracker23detailsForNameAndOriginERKN3WTF6StringEPNS_14SecurityOriginE
 __ZN7WebCore15DatabaseTracker7originsERN3WTF6VectorINS1_6RefPtrINS_14SecurityOriginEEELm0EEE
 __ZN7WebCore15DatabaseTracker7trackerEv
 __ZN7WebCore15DatabaseTracker8setQuotaEPNS_14SecurityOriginEy
@@ -357,9 +353,9 @@ __ZN7WebCore15GraphicsContextD1Ev
 __ZN7WebCore15JSDOMWindowBase18commonJSGlobalDataEv
 __ZN7WebCore15ScrollAlignment17alignCenterAlwaysE
 __ZN7WebCore15ScrollAlignment19alignToEdgeIfNeededE
-__ZN7WebCore15StringTruncator13rightTruncateERKNS_6StringEfRKNS_4FontEb
-__ZN7WebCore15StringTruncator14centerTruncateERKNS_6StringEfRKNS_4FontEb
-__ZN7WebCore15StringTruncator5widthERKNS_6StringERKNS_4FontEb
+__ZN7WebCore15StringTruncator13rightTruncateERKN3WTF6StringEfRKNS_4FontEb
+__ZN7WebCore15StringTruncator14centerTruncateERKN3WTF6StringEfRKNS_4FontEb
+__ZN7WebCore15StringTruncator5widthERKN3WTF6StringERKNS_4FontEb
 __ZN7WebCore15VisiblePositionC1EPNS_4NodeEiNS_9EAffinityE
 __ZN7WebCore15VisiblePositionC1ERKNS_8PositionENS_9EAffinityE
 __ZN7WebCore15reportExceptionEPN3JSC9ExecStateENS0_7JSValueE
@@ -376,21 +372,21 @@ __ZN7WebCore16LegacyWebArchive6createEPNS_4NodeE
 __ZN7WebCore16LegacyWebArchive6createEPNS_5FrameE
 __ZN7WebCore16LegacyWebArchive6createEPNS_5RangeE
 __ZN7WebCore16LegacyWebArchive6createEv
-__ZN7WebCore16MIMETypeRegistry23getMIMETypeForExtensionERKNS_6StringE
-__ZN7WebCore16MIMETypeRegistry24isSupportedImageMIMETypeERKNS_6StringE
+__ZN7WebCore16MIMETypeRegistry23getMIMETypeForExtensionERKN3WTF6StringE
+__ZN7WebCore16MIMETypeRegistry24isSupportedImageMIMETypeERKN3WTF6StringE
 __ZN7WebCore16MIMETypeRegistry26getSupportedImageMIMETypesEv
-__ZN7WebCore16MIMETypeRegistry27isSupportedNonImageMIMETypeERKNS_6StringE
+__ZN7WebCore16MIMETypeRegistry27isSupportedNonImageMIMETypeERKN3WTF6StringE
 __ZN7WebCore16MIMETypeRegistry29getSupportedNonImageMIMETypesEv
-__ZN7WebCore16MIMETypeRegistry32isSupportedImageResourceMIMETypeERKNS_6StringE
+__ZN7WebCore16MIMETypeRegistry32isSupportedImageResourceMIMETypeERKN3WTF6StringE
 __ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_13FrameLoadTypeEb
 __ZN7WebCore16NavigationActionC1ERKNS_4KURLENS_14NavigationTypeE
 __ZN7WebCore16NavigationActionC1Ev
 __ZN7WebCore16ScriptController10initScriptEPNS_15DOMWrapperWorldE
 __ZN7WebCore16ScriptController11createWorldEv
-__ZN7WebCore16ScriptController13executeScriptERKNS_6StringEbNS_14ShouldAllowXSSE
+__ZN7WebCore16ScriptController13executeScriptERKN3WTF6StringEbNS_14ShouldAllowXSSE
 __ZN7WebCore16ScriptController17canExecuteScriptsENS_33ReasonForCallingCanExecuteScriptsE
 __ZN7WebCore16ScriptController18windowScriptObjectEv
-__ZN7WebCore16ScriptController20executeScriptInWorldEPNS_15DOMWrapperWorldERKNS_6StringEbNS_14ShouldAllowXSSE
+__ZN7WebCore16ScriptController20executeScriptInWorldEPNS_15DOMWrapperWorldERKN3WTF6StringEbNS_14ShouldAllowXSSE
 __ZN7WebCore16ScriptController24jsObjectForPluginElementEPNS_17HTMLPlugInElementE
 __ZN7WebCore16ThreadGlobalData10staticDataE
 __ZN7WebCore16ThreadGlobalDataC1Ev
@@ -402,9 +398,9 @@ __ZN7WebCore16createFullMarkupEPKNS_4NodeE
 __ZN7WebCore16createFullMarkupEPKNS_5RangeE
 __ZN7WebCore16enclosingIntRectERK7_NSRect
 __ZN7WebCore16isEndOfParagraphERKNS_15VisiblePositionE
-__ZN7WebCore16jsStringSlowCaseEPN3JSC9ExecStateERNS0_9WeakGCMapIPNS_10StringImplEPNS0_8JSStringEEES5_
+__ZN7WebCore16jsStringSlowCaseEPN3JSC9ExecStateERNS0_9WeakGCMapIPN3WTF10StringImplEPNS0_8JSStringEEES6_
 __ZN7WebCore17CredentialStorage3getERKNS_15ProtectionSpaceE
-__ZN7WebCore17DOMImplementation14isTextMIMETypeERKNS_6StringE
+__ZN7WebCore17DOMImplementation14isTextMIMETypeERKN3WTF6StringE
 __ZN7WebCore16DeviceMotionData6createEbdbdbdbdbdbdbd
 __ZN7WebCore17DeviceOrientation6createEbdbdbd
 __ZN7WebCore17GlyphPageTreeNode18treeGlyphPageCountEv
@@ -413,22 +409,17 @@ __ZN7WebCore17HistoryController26saveDocumentAndScrollStateEv
 __ZN7WebCore17nameForCursorTypeENS_6Cursor4TypeE
 __ZN7WebCore17openTemporaryFileEPKcRi
 __ZN7WebCore18SearchPopupMenuMacC1EPNS_15PopupMenuClientE
-__ZN7WebCore18deprecatedParseURLERKNS_6StringE
+__ZN7WebCore18deprecatedParseURLERKN3WTF6StringE
 __ZN7WebCore18isStartOfParagraphERKNS_15VisiblePositionE
 __ZN7WebCore18pluginScriptObjectEPN3JSC9ExecStateEPNS_13JSHTMLElementE
 __ZN7WebCore19AnimationController16resumeAnimationsEPNS_8DocumentE
 __ZN7WebCore19AnimationController17suspendAnimationsEPNS_8DocumentE
-__ZN7WebCore19AnimationController20pauseAnimationAtTimeEPNS_12RenderObjectERKNS_6StringEd
-__ZN7WebCore19AnimationController21pauseTransitionAtTimeEPNS_12RenderObjectERKNS_6StringEd
+__ZN7WebCore19AnimationController20pauseAnimationAtTimeEPNS_12RenderObjectERKN3WTF6StringEd
+__ZN7WebCore19AnimationController21pauseTransitionAtTimeEPNS_12RenderObjectERKN3WTF6StringEd
 __ZN7WebCore19BackForwardListImplC1EPNS_4PageE
-__ZN7WebCore19CSSStyleDeclaration11setPropertyERKNS_6StringES3_Ri
-__ZN7WebCore19InspectorController12ConsolePanelE
-__ZN7WebCore19InspectorController12ScriptsPanelE
-__ZN7WebCore19InspectorController13ProfilesPanelE
-__ZN7WebCore19InspectorController34inspectorStartsAttachedSettingNameEv
-__ZN7WebCore19InspectorController9showPanelERKNS_6StringE
+__ZN7WebCore19CSSStyleDeclaration11setPropertyERKN3WTF6StringES4_Ri
 __ZN7WebCore19ResourceRequestBase11setHTTPBodyEN3WTF10PassRefPtrINS_8FormDataEEE
-__ZN7WebCore19ResourceRequestBase13setHTTPMethodERKNS_6StringE
+__ZN7WebCore19ResourceRequestBase13setHTTPMethodERKN3WTF6StringE
 __ZN7WebCore19ResourceRequestBase19addHTTPHeaderFieldsERKNS_13HTTPHeaderMapE
 __ZN7WebCore19ResourceRequestBase6setURLERKNS_4KURLE
 __ZN7WebCore19SelectionController10setFocusedEb
@@ -440,21 +431,21 @@ __ZN7WebCore19SelectionController9selectAllEv
 __ZN7WebCore19SelectionControllerC1EPNS_5FrameEb
 __ZN7WebCore19TextResourceDecoder5flushEv
 __ZN7WebCore19TextResourceDecoder6decodeEPKcm
-__ZN7WebCore19TextResourceDecoderC1ERKNS_6StringERKNS_12TextEncodingEb
+__ZN7WebCore19TextResourceDecoderC1ERKN3WTF6StringERKNS_12TextEncodingEb
 __ZN7WebCore19TextResourceDecoderD1Ev
 __ZN7WebCore19applicationIsSafariEv
 __ZN7WebCore20RenderEmbeddedObject30setShowsCrashedPluginIndicatorEv
 __ZN7WebCore20ResourceResponseBase24setExpectedContentLengthEx
 __ZN7WebCore20ResourceResponseBaseC2Ev
 __ZN7WebCore20SpaceSplitStringData12createVectorEv
-__ZN7WebCore20protocolIsJavaScriptERKNS_6StringE
+__ZN7WebCore20protocolIsJavaScriptERKN3WTF6StringE
 __ZN7WebCore21PlatformKeyboardEvent24disambiguateKeyDownEventENS0_4TypeEb
 __ZN7WebCore21PlatformKeyboardEventC1EP7NSEvent
-__ZN7WebCore21SVGDocumentExtensions21sampleAnimationAtTimeERKNS_6StringEPNS_14SVGSMILElementEd
+__ZN7WebCore21SVGDocumentExtensions21sampleAnimationAtTimeERKN3WTF6StringEPNS_14SVGSMILElementEd
 __ZN7WebCore21SerializedScriptValue11deserializeEPK15OpaqueJSContextPPK13OpaqueJSValue
 __ZN7WebCore21SerializedScriptValue6createEPK15OpaqueJSContextPK13OpaqueJSValuePS6_
 __ZN7WebCore21SerializedScriptValueD1Ev
-__ZN7WebCore21UserContentURLPattern5parseERKNS_6StringE
+__ZN7WebCore21UserContentURLPattern5parseERKN3WTF6StringE
 __ZN7WebCore21WindowsLatin1EncodingEv
 __ZN7WebCore21findEventWithKeyStateEPNS_5EventE
 __ZN7WebCore21isBackForwardLoadTypeENS_13FrameLoadTypeE
@@ -466,15 +457,15 @@ __ZN7WebCore22ScriptExecutionContext26canSuspendActiveDOMObjectsEv
 __ZN7WebCore22applicationIsAppleMailEv
 __ZN7WebCore22contextMenuItemTagBoldEv
 __ZN7WebCore22counterValueForElementEPNS_7ElementE
-__ZN7WebCore22createFragmentFromTextEPNS_5RangeERKNS_6StringE
+__ZN7WebCore22createFragmentFromTextEPNS_5RangeERKN3WTF6StringE
 __ZN7WebCore22externalRepresentationEPNS_5FrameEj
 __ZN7WebCore23ReplaceSelectionCommandC1EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE
 __ZN7WebCore23createFragmentFromNodesEPNS_8DocumentERKN3WTF6VectorIPNS_4NodeELm0EEE
 __ZN7WebCore24BinaryPropertyListWriter17writePropertyListEv
 __ZN7WebCore24contextMenuItemTagItalicEv
 __ZN7WebCore24contextMenuItemTagStylesEv
-__ZN7WebCore24createFragmentFromMarkupEPNS_8DocumentERKNS_6StringES4_NS_27FragmentScriptingPermissionE
-__ZN7WebCore24decodeURLEscapeSequencesERKNS_6StringE
+__ZN7WebCore24createFragmentFromMarkupEPNS_8DocumentERKN3WTF6StringES5_NS_27FragmentScriptingPermissionE
+__ZN7WebCore24decodeURLEscapeSequencesERKN3WTF6StringE
 __ZN7WebCore24notifyHistoryItemChangedE
 __ZN7WebCore24rangeCompliantEquivalentERKNS_8PositionE
 __ZN7WebCore25HistoryPropertyListWriter11releaseDataEv
@@ -494,12 +485,13 @@ __ZN7WebCore26UserTypingGestureIndicator28focusedElementAtGestureStartEv
 __ZN7WebCore26contextMenuItemTagFontMenuEv
 __ZN7WebCore26contextMenuItemTagOpenLinkEv
 __ZN7WebCore26usesTestModeFocusRingColorEv
-__ZN7WebCore27CSSComputedStyleDeclarationC1EN3WTF10PassRefPtrINS_4NodeEEEbRKNS_6StringE
+__ZN7WebCore27CSSComputedStyleDeclarationC1EN3WTF10PassRefPtrINS_4NodeEEEbRKNS1_6StringE
 __ZN7WebCore27DeviceOrientationClientMock14setOrientationEN3WTF10PassRefPtrINS_17DeviceOrientationEEE
 __ZN7WebCore27DeviceOrientationClientMockC1Ev
 __ZN7WebCore27applicationIsAdobeInstallerEv
 __ZN7WebCore27contextMenuItemTagShowFontsEv
 __ZN7WebCore27contextMenuItemTagUnderlineEv
+__ZN7WebCore28InspectorFrontendClientLocal20sendMessageToBackendERKN3WTF6StringE
 __ZN7WebCore28contextMenuItemTagCapitalizeEv
 __ZN7WebCore28contextMenuItemTagShowColorsEv
 __ZN7WebCore28contextMenuItemTagSmartLinksEv
@@ -543,18 +535,18 @@ __ZN7WebCore4Font21setShouldUseSmoothingEb
 __ZN7WebCore4FontC1ERKNS_16FontPlatformDataEbNS_17FontSmoothingModeE
 __ZN7WebCore4FontC1Ev
 __ZN7WebCore4FontaSERKS0_
-__ZN7WebCore4Icon18createIconForFilesERKN3WTF6VectorINS_6StringELm0EEE
+__ZN7WebCore4Icon18createIconForFilesERKN3WTF6VectorINS1_6StringELm0EEE
 __ZN7WebCore4IconD1Ev
 __ZN7WebCore4KURL10invalidateEv
-__ZN7WebCore4KURLC1ENS_18ParsedURLStringTagERKNS_6StringE
+__ZN7WebCore4KURLC1ENS_18ParsedURLStringTagERKN3WTF6StringE
 __ZN7WebCore4KURLC1EP5NSURL
 __ZN7WebCore4KURLC1EPK7__CFURL
-__ZN7WebCore4KURLC1ERKS0_RKNS_6StringE
+__ZN7WebCore4KURLC1ERKS0_RKN3WTF6StringE
 __ZN7WebCore4Node10renderRectEPb
 __ZN7WebCore4Node17stopIgnoringLeaksEv
 __ZN7WebCore4Node18startIgnoringLeaksEv
 __ZN7WebCore4Node19setNeedsStyleRecalcENS_15StyleChangeTypeE
-__ZN7WebCore4Page12setGroupNameERKNS_6StringE
+__ZN7WebCore4Page12setGroupNameERKN3WTF6StringE
 __ZN7WebCore4Page13didStopPluginEPNS_14HaltablePluginE
 __ZN7WebCore4Page14didStartPluginEPNS_14HaltablePluginE
 __ZN7WebCore4Page14setMediaVolumeEf
@@ -584,12 +576,12 @@ __ZN7WebCore5Cache11setDisabledEb
 __ZN7WebCore5Cache13getStatisticsEv
 __ZN7WebCore5Cache13setCapacitiesEjjj
 __ZN7WebCore5Frame10createViewERKNS_7IntSizeERKNS_5ColorEbS3_bNS_13ScrollbarModeEbS7_b
-__ZN7WebCore5Frame10findStringERKNS_6StringEbbbb
+__ZN7WebCore5Frame10findStringERKN3WTF6StringEbbbb
 __ZN7WebCore5Frame13reapplyStylesEv
 __ZN7WebCore5Frame14frameForWidgetEPKNS_6WidgetE
 __ZN7WebCore5Frame15revealSelectionERKNS_15ScrollAlignmentEb
 __ZN7WebCore5Frame20setSelectionFromNoneEv
-__ZN7WebCore5Frame21markAllMatchesForTextERKNS_6StringEbj
+__ZN7WebCore5Frame21markAllMatchesForTextERKN3WTF6StringEbj
 __ZN7WebCore5Frame23visiblePositionForPointERKNS_8IntPointE
 __ZN7WebCore5Frame24computeAndSetTypingStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
 __ZN7WebCore5Frame25matchLabelsAgainstElementEP7NSArrayPNS_7ElementE
@@ -598,28 +590,28 @@ __ZN7WebCore5Frame34setMarkedTextMatchesAreHighlightedEb
 __ZN7WebCore5Frame6createEPNS_4PageEPNS_21HTMLFrameOwnerElementEPNS_17FrameLoaderClientE
 __ZN7WebCore5Frame7setViewEN3WTF10PassRefPtrINS_9FrameViewEEE
 __ZN7WebCore5FrameD1Ev
-__ZN7WebCore5Image12supportsTypeERKNS_6StringE
+__ZN7WebCore5Image12supportsTypeERKN3WTF6StringE
 __ZN7WebCore5Image20loadPlatformResourceEPKc
 __ZN7WebCore5Range6createEN3WTF10PassRefPtrINS_8DocumentEEENS2_INS_4NodeEEEiS6_i
 __ZN7WebCore5Range6setEndEN3WTF10PassRefPtrINS_4NodeEEEiRi
 __ZN7WebCore5Range8setStartEN3WTF10PassRefPtrINS_4NodeEEEiRi
 __ZN7WebCore5RangeD1Ev
 __ZN7WebCore5cacheEv
-__ZN7WebCore6Chrome16setStatusbarTextEPNS_5FrameERKNS_6StringE
+__ZN7WebCore6Chrome16setStatusbarTextEPNS_5FrameERKN3WTF6StringE
 __ZN7WebCore6Cursor8fromTypeENS0_4TypeE
 __ZN7WebCore6CursorD1Ev
 __ZN7WebCore6CursoraSERKS0_
 __ZN7WebCore6Editor10applyStyleEPNS_19CSSStyleDeclarationENS_10EditActionE
-__ZN7WebCore6Editor10insertTextERKNS_6StringEPNS_5EventE
+__ZN7WebCore6Editor10insertTextERKN3WTF6StringEPNS_5EventE
 __ZN7WebCore6Editor13canDHTMLPasteEv
 __ZN7WebCore6Editor13performDeleteEv
 __ZN7WebCore6Editor13rangeForPointERKNS_8IntPointE
 __ZN7WebCore6Editor13tryDHTMLPasteEv
-__ZN7WebCore6Editor14setCompositionERKNS_6StringERKN3WTF6VectorINS_20CompositionUnderlineELm0EEEjj
+__ZN7WebCore6Editor14setCompositionERKN3WTF6StringERKNS1_6VectorINS_20CompositionUnderlineELm0EEEjj
 __ZN7WebCore6Editor15pasteAsFragmentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbb
 __ZN7WebCore6Editor16pasteAsPlainTextEv
 __ZN7WebCore6Editor17insertOrderedListEv
-__ZN7WebCore6Editor18confirmCompositionERKNS_6StringE
+__ZN7WebCore6Editor18confirmCompositionERKN3WTF6StringE
 __ZN7WebCore6Editor18confirmCompositionEv
 __ZN7WebCore6Editor19deleteWithDirectionENS_19SelectionController10EDirectionENS_15TextGranularityEbb
 __ZN7WebCore6Editor19insertUnorderedListEv
@@ -644,13 +636,9 @@ __ZN7WebCore6Editor4copyEv
 __ZN7WebCore6Editor5pasteEv
 __ZN7WebCore6Editor6indentEv
 __ZN7WebCore6Editor7CommandC1Ev
-__ZN7WebCore6Editor7commandERKNS_6StringE
-__ZN7WebCore6Editor7commandERKNS_6StringENS_19EditorCommandSourceE
-__ZN7WebCore6Editor7copyURLERKNS_4KURLERKNS_6StringE
+__ZN7WebCore6Editor7commandERKN3WTF6StringE
 __ZN7WebCore6Editor7outdentEv
 __ZN7WebCore6Loader20servePendingRequestsENS0_8PriorityE
-__ZN7WebCore6StringC1EP8NSString
-__ZN7WebCore6StringC1EPK10__CFString
 __ZN7WebCore6Widget12setFrameRectERKNS_7IntRectE
 __ZN7WebCore6Widget16removeFromParentEv
 __ZN7WebCore6Widget17frameRectsChangedEv
@@ -699,19 +687,19 @@ __ZN7WebCore8Settings16setUsesPageCacheEb
 __ZN7WebCore8Settings17setPluginsEnabledEb
 __ZN7WebCore8Settings18setDOMPasteAllowedEb
 __ZN7WebCore8Settings18setDefaultFontSizeEi
-__ZN7WebCore8Settings18setFixedFontFamilyERKNS_12AtomicStringE
+__ZN7WebCore8Settings18setFixedFontFamilyERKN3WTF12AtomicStringE
 __ZN7WebCore8Settings18setMinimumFontSizeEi
-__ZN7WebCore8Settings18setSerifFontFamilyERKNS_12AtomicStringE
+__ZN7WebCore8Settings18setSerifFontFamilyERKN3WTF12AtomicStringE
 __ZN7WebCore8Settings19setShowDebugBordersEb
-__ZN7WebCore8Settings20setCursiveFontFamilyERKNS_12AtomicStringE
-__ZN7WebCore8Settings20setFantasyFontFamilyERKNS_12AtomicStringE
+__ZN7WebCore8Settings20setCursiveFontFamilyERKN3WTF12AtomicStringE
+__ZN7WebCore8Settings20setFantasyFontFamilyERKN3WTF12AtomicStringE
 __ZN7WebCore8Settings20setJavaScriptEnabledEb
 __ZN7WebCore8Settings20setXSSAuditorEnabledEb
 __ZN7WebCore8Settings21setShowRepaintCounterEb
-__ZN7WebCore8Settings21setStandardFontFamilyERKNS_12AtomicStringE
+__ZN7WebCore8Settings21setStandardFontFamilyERKN3WTF12AtomicStringE
 __ZN7WebCore8Settings21setWebSecurityEnabledEb
 __ZN7WebCore8Settings22setLocalStorageEnabledEb
-__ZN7WebCore8Settings22setSansSerifFontFamilyERKNS_12AtomicStringE
+__ZN7WebCore8Settings22setSansSerifFontFamilyERKN3WTF12AtomicStringE
 __ZN7WebCore8Settings22setSessionStorageQuotaEj
 __ZN7WebCore8Settings22setShowsURLsInToolTipsEb
 __ZN7WebCore8Settings23setDefaultFixedFontSizeEi
@@ -730,11 +718,11 @@ __ZN7WebCore8Settings25setNeedsLeopardMailQuirksEb
 __ZN7WebCore8Settings25setPrivateBrowsingEnabledEb
 __ZN7WebCore8Settings25setShouldPrintBackgroundsEb
 __ZN7WebCore8Settings25setUserStyleSheetLocationERKNS_4KURLE
-__ZN7WebCore8Settings26setDefaultTextEncodingNameERKNS_6StringE
+__ZN7WebCore8Settings26setDefaultTextEncodingNameERKN3WTF6StringE
 __ZN7WebCore8Settings26setNeedsSiteSpecificQuirksEb
-__ZN7WebCore8Settings27setFTPDirectoryTemplatePathERKNS_6StringE
+__ZN7WebCore8Settings27setFTPDirectoryTemplatePathERKN3WTF6StringE
 __ZN7WebCore8Settings27setLoadsImagesAutomaticallyEb
-__ZN7WebCore8Settings27setLocalStorageDatabasePathERKNS_6StringE
+__ZN7WebCore8Settings27setLocalStorageDatabasePathERKN3WTF6StringE
 __ZN7WebCore8Settings28setForceFTPDirectoryListingsEb
 __ZN7WebCore8Settings29setAuthorAndUserStylesEnabledEb
 __ZN7WebCore8Settings29setWebArchiveDebugModeEnabledEb
@@ -764,10 +752,10 @@ __ZN7WebCore9FontCache13fontDataCountEv
 __ZN7WebCore9FontCache21inactiveFontDataCountEv
 __ZN7WebCore9FontCache21purgeInactiveFontDataEi
 __ZN7WebCore9FrameTree11appendChildEN3WTF10PassRefPtrINS_5FrameEEE
-__ZN7WebCore9FrameTree7setNameERKNS_12AtomicStringE
+__ZN7WebCore9FrameTree7setNameERKN3WTF12AtomicStringE
 __ZN7WebCore9FrameTree9clearNameEv
 __ZN7WebCore9FrameView11forceLayoutEb
-__ZN7WebCore9FrameView12setMediaTypeERKNS_6StringE
+__ZN7WebCore9FrameView12setMediaTypeERKN3WTF6StringE
 __ZN7WebCore9FrameView13setZoomFactorEfNS_8ZoomModeE
 __ZN7WebCore9FrameView14adjustViewSizeEv
 __ZN7WebCore9FrameView14setMarginWidthEi
@@ -829,16 +817,16 @@ __ZN7WebCore9PageGroup13isLinkVisitedEy
 __ZN7WebCore9PageGroup14addVisitedLinkEPKtm
 __ZN7WebCore9PageGroup17closeLocalStorageEv
 __ZN7WebCore9PageGroup18addVisitedLinkHashEy
-__ZN7WebCore9PageGroup20addUserScriptToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_NS_23UserScriptInjectionTimeENS_25UserContentInjectedFramesE
+__ZN7WebCore9PageGroup20addUserScriptToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_23UserScriptInjectionTimeENS_25UserContentInjectedFramesE
 __ZN7WebCore9PageGroup20removeAllUserContentEv
 __ZN7WebCore9PageGroup21removeAllVisitedLinksEv
-__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKNS_6StringERKNS_4KURLEN3WTF10PassOwnPtrINS9_6VectorIS3_Lm0EEEEESD_NS_25UserContentInjectedFramesE
+__ZN7WebCore9PageGroup24addUserStyleSheetToWorldEPNS_15DOMWrapperWorldERKN3WTF6StringERKNS_4KURLENS3_10PassOwnPtrINS3_6VectorIS4_Lm0EEEEESD_NS_25UserContentInjectedFramesE
 __ZN7WebCore9PageGroup25removeUserScriptFromWorldEPNS_15DOMWrapperWorldERKNS_4KURLE
 __ZN7WebCore9PageGroup26removeUserScriptsFromWorldEPNS_15DOMWrapperWorldE
 __ZN7WebCore9PageGroup26setShouldTrackVisitedLinksEb
 __ZN7WebCore9PageGroup29removeUserStyleSheetFromWorldEPNS_15DOMWrapperWorldERKNS_4KURLE
 __ZN7WebCore9PageGroup30removeUserStyleSheetsFromWorldEPNS_15DOMWrapperWorldE
-__ZN7WebCore9PageGroup9pageGroupERKNS_6StringE
+__ZN7WebCore9PageGroup9pageGroupERKN3WTF6StringE
 __ZN7WebCore9Scrollbar22maxOverlapBetweenPagesEv
 __ZN7WebCore9TimerBase4stopEv
 __ZN7WebCore9TimerBase5startEdd
@@ -851,8 +839,9 @@ __ZN7WebCore9pageCacheEv
 __ZN7WebCore9toElementEN3JSC7JSValueE
 __ZN7WebCoreeqERKNS_19ResourceRequestBaseES2_
 __ZNK3JSC8Bindings10RootObject12globalObjectEv
+__ZNK3WTF6String14createCFStringEv
 __ZNK7WebCore10FloatPointcv8_NSPointEv
-__ZNK7WebCore10PluginData16supportsMimeTypeERKNS_6StringE
+__ZNK7WebCore10PluginData16supportsMimeTypeERKN3WTF6StringE
 __ZNK7WebCore10RenderText16linesBoundingBoxEv
 __ZNK7WebCore10RenderText9firstRunXEv
 __ZNK7WebCore10RenderText9firstRunYEv
@@ -876,7 +865,7 @@ __ZNK7WebCore11HistoryItem12redirectURLsEv
 __ZNK7WebCore11HistoryItem14alternateTitleEv
 __ZNK7WebCore11HistoryItem15lastVisitedTimeEv
 __ZNK7WebCore11HistoryItem17originalURLStringEv
-__ZNK7WebCore11HistoryItem20getTransientPropertyERKNS_6StringE
+__ZNK7WebCore11HistoryItem20getTransientPropertyERKN3WTF6StringE
 __ZNK7WebCore11HistoryItem3urlEv
 __ZNK7WebCore11HistoryItem4copyEv
 __ZNK7WebCore11HistoryItem4iconEv
@@ -888,7 +877,7 @@ __ZNK7WebCore11HistoryItem9urlStringEv
 __ZNK7WebCore11HistoryItem9viewStateEv
 __ZNK7WebCore11RenderLayer19absoluteBoundingBoxEv
 __ZNK7WebCore11RenderStyle21visitedDependentColorEi
-__ZNK7WebCore11ScriptValue9getStringEPN3JSC9ExecStateERNS_6StringE
+__ZNK7WebCore11ScriptValue9getStringEPN3JSC9ExecStateERN3WTF6StringE
 __ZNK7WebCore12EventHandler20currentKeyboardEventEv
 __ZNK7WebCore12IconDatabase12databasePathEv
 __ZNK7WebCore12IconDatabase24shouldStopThreadActivityEv
@@ -1029,13 +1018,12 @@ __ZNK7WebCore6Editor7Command11isSupportedEv
 __ZNK7WebCore6Editor7Command15isTextInsertionEv
 __ZNK7WebCore6Editor7Command5stateEPNS_5EventE
 __ZNK7WebCore6Editor7Command7executeEPNS_5EventE
-__ZNK7WebCore6Editor7Command7executeERKNS_6StringEPNS_5EventE
+__ZNK7WebCore6Editor7Command7executeERKN3WTF6StringEPNS_5EventE
 __ZNK7WebCore6Editor7Command9isEnabledEPNS_5EventE
 __ZNK7WebCore6Editor7canCopyEv
 __ZNK7WebCore6Editor7canEditEv
 __ZNK7WebCore6Editor8canPasteEv
 __ZNK7WebCore6Editor9canDeleteEv
-__ZNK7WebCore6String14createCFStringEv
 __ZNK7WebCore6Widget23convertToContainingViewERKNS_7IntRectE
 __ZNK7WebCore6Widget23convertToContainingViewERKNS_8IntPointE
 __ZNK7WebCore6Widget25convertFromContainingViewERKNS_7IntRectE
@@ -1047,11 +1035,11 @@ __ZNK7WebCore7Element9innerTextEv
 __ZNK7WebCore7IntRectcv6CGRectEv
 __ZNK7WebCore7IntRectcv7_NSRectEv
 __ZNK7WebCore7IntSizecv7_NSSizeEv
-__ZNK7WebCore8Document11completeURLERKNS_6StringE
+__ZNK7WebCore8Document11completeURLERKN3WTF6StringE
 __ZNK7WebCore8Document13axObjectCacheEv
-__ZNK7WebCore8Document14getElementByIdERKNS_12AtomicStringE
+__ZNK7WebCore8Document14getElementByIdERKN3WTF12AtomicStringE
 __ZNK7WebCore8Document20cacheDocumentElementEv
-__ZNK7WebCore8Document31displayStringModifiedByEncodingERKNS_6StringE
+__ZNK7WebCore8Document31displayStringModifiedByEncodingERKN3WTF6StringE
 __ZNK7WebCore8Document4bodyEv
 __ZNK7WebCore8Document6domainEv
 __ZNK7WebCore8IntPointcv8_NSPointEv
@@ -1065,8 +1053,7 @@ __ZNK7WebCore9FrameTree12traverseNextEPKNS_5FrameE
 __ZNK7WebCore9FrameTree14isDescendantOfEPKNS_5FrameE
 __ZNK7WebCore9FrameTree20traverseNextWithWrapEb
 __ZNK7WebCore9FrameTree24traversePreviousWithWrapEb
-__ZNK7WebCore9FrameTree4findERKNS_12AtomicStringE
-__ZNK7WebCore9FrameTree5childERKNS_12AtomicStringE
+__ZNK7WebCore9FrameTree4findERKN3WTF12AtomicStringE
 __ZNK7WebCore9FrameTree6parentEb
 __ZNK7WebCore9FrameView11needsLayoutEv
 __ZNK7WebCore9FrameView13paintBehaviorEv
@@ -1189,7 +1176,10 @@ __ZN7WebCore22GeolocationServiceMock8setErrorEN3WTF10PassRefPtrINS_13PositionErr
 #endif
 
 #if ENABLE(INSPECTOR)
-__ZN7WebCore19InspectorController10setSettingERKNS_6StringES3_
+__ZN7WebCore19InspectorController10setSettingERKN3WTF6StringES4_
+__ZN7WebCore19InspectorController12ConsolePanelE
+__ZN7WebCore19InspectorController12ScriptsPanelE
+__ZN7WebCore19InspectorController13ProfilesPanelE
 __ZN7WebCore19InspectorController14enableDebuggerEv
 __ZN7WebCore19InspectorController14enableProfilerEbb
 __ZN7WebCore19InspectorController15disableDebuggerEb
@@ -1197,13 +1187,16 @@ __ZN7WebCore19InspectorController15disableProfilerEb
 __ZN7WebCore19InspectorController18disconnectFrontendEv
 __ZN7WebCore19InspectorController20stopTimelineProfilerEv
 __ZN7WebCore19InspectorController21startTimelineProfilerEv
-__ZN7WebCore19InspectorController25evaluateForTestInFrontendElRKNS_6StringE
+__ZN7WebCore19InspectorController25evaluateForTestInFrontendElRKN3WTF6StringE
 __ZN7WebCore19InspectorController26setInspectorFrontendClientEN3WTF10PassOwnPtrINS_23InspectorFrontendClientEEE
 __ZN7WebCore19InspectorController26stopUserInitiatedProfilingEv
 __ZN7WebCore19InspectorController27startUserInitiatedProfilingEPNS_5TimerIS0_EE
+__ZN7WebCore19InspectorController34inspectorStartsAttachedSettingNameEv
+__ZN7WebCore19InspectorController34inspectorStartsAttachedSettingNameEv
 __ZN7WebCore19InspectorController4showEv
 __ZN7WebCore19InspectorController5closeEv
 __ZN7WebCore19InspectorController7inspectEPNS_4NodeE
+__ZN7WebCore19InspectorController9showPanelERKN3WTF6StringE
 __ZN7WebCore28InspectorFrontendClientLocal12moveWindowByEff
 __ZN7WebCore28InspectorFrontendClientLocal14frontendLoadedEv
 __ZN7WebCore28InspectorFrontendClientLocal15canAttachWindowEv
@@ -1211,14 +1204,13 @@ __ZN7WebCore28InspectorFrontendClientLocal17setAttachedWindowEb
 __ZN7WebCore28InspectorFrontendClientLocal19requestAttachWindowEv
 __ZN7WebCore28InspectorFrontendClientLocal19requestDetachWindowEv
 __ZN7WebCore28InspectorFrontendClientLocal19windowObjectClearedEv
-__ZN7WebCore28InspectorFrontendClientLocal20sendMessageToBackendERKNS_6StringE
 __ZN7WebCore28InspectorFrontendClientLocal26changeAttachedWindowHeightEj
 __ZN7WebCore28InspectorFrontendClientLocal27restoreAttachedWindowHeightEv
 __ZN7WebCore28InspectorFrontendClientLocalC2EPNS_19InspectorControllerEPNS_4PageE
 __ZN7WebCore28InspectorFrontendClientLocalD2Ev
 __ZNK7WebCore19InspectorController17drawNodeHighlightERNS_15GraphicsContextE
 __ZNK7WebCore19InspectorController7enabledEv
-__ZNK7WebCore19InspectorController7settingERKNS_6StringE
+__ZNK7WebCore19InspectorController7settingERKN3WTF6StringE
 #endif
 
 #if ENABLE(JAVA_BRIDGE)
@@ -1483,8 +1475,8 @@ __ZN7WebCore9HTMLNames8videoTagE
 __ZN7WebCore23ApplicationCacheStorage14quotaForOriginEPKNS_14SecurityOriginERx
 __ZN7WebCore23ApplicationCacheStorage14setMaximumSizeEx
 __ZN7WebCore23ApplicationCacheStorage14usageForOriginEPKNS_14SecurityOriginERx
-__ZN7WebCore23ApplicationCacheStorage16storeCopyOfCacheERKNS_6StringEPNS_20ApplicationCacheHostE
-__ZN7WebCore23ApplicationCacheStorage17setCacheDirectoryERKNS_6StringE
+__ZN7WebCore23ApplicationCacheStorage16storeCopyOfCacheERKN3WTF6StringEPNS_20ApplicationCacheHostE
+__ZN7WebCore23ApplicationCacheStorage17setCacheDirectoryERKN3WTF6StringE
 __ZN7WebCore23ApplicationCacheStorage18vacuumDatabaseFileEv
 __ZN7WebCore23ApplicationCacheStorage21setDefaultOriginQuotaEx
 __ZN7WebCore23ApplicationCacheStorage26storeUpdatedQuotaForOriginEPKNS_14SecurityOriginEx
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index b06936d..a43528d 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -20192,6 +20192,7 @@
 			isa = PBXProject;
 			buildConfigurationList = 149C284308902B11008A9EFC /* Build configuration list for PBXProject "WebCore" */;
 			compatibilityVersion = "Xcode 2.4";
+			developmentRegion = English;
 			hasScannedForEncodings = 1;
 			knownRegions = (
 				English,
diff --git a/WebCore/accessibility/AXObjectCache.h b/WebCore/accessibility/AXObjectCache.h
index d643cbc..6da6842 100644
--- a/WebCore/accessibility/AXObjectCache.h
+++ b/WebCore/accessibility/AXObjectCache.h
@@ -29,6 +29,7 @@
 #include "AccessibilityObject.h"
 #include "Timer.h"
 #include <limits.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
 #include <wtf/RefPtr.h>
@@ -45,7 +46,6 @@ class HTMLAreaElement;
 class Node;
 class Page;
 class RenderObject;
-class String;
 class VisiblePosition;
 
 struct TextMarkerData {
diff --git a/WebCore/accessibility/AccessibilityARIAGrid.h b/WebCore/accessibility/AccessibilityARIAGrid.h
index 3511f0f..dc3c3ee 100644
--- a/WebCore/accessibility/AccessibilityARIAGrid.h
+++ b/WebCore/accessibility/AccessibilityARIAGrid.h
@@ -30,10 +30,10 @@
 #define AccessibilityARIAGrid_h
 
 #include "AccessibilityTable.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
     
-class String;
 class AccessibilityTableCell;
 class AccessibilityTableHeaderContainer;
 
diff --git a/WebCore/accessibility/AccessibilityListBoxOption.h b/WebCore/accessibility/AccessibilityListBoxOption.h
index c4c9315..c500283 100644
--- a/WebCore/accessibility/AccessibilityListBoxOption.h
+++ b/WebCore/accessibility/AccessibilityListBoxOption.h
@@ -31,6 +31,7 @@
 
 #include "AccessibilityObject.h"
 #include "HTMLElement.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
@@ -38,7 +39,6 @@ class AccessibilityListBox;
 class Element;
 class HTMLElement;
 class HTMLSelectElement;
-class String;
     
 class AccessibilityListBoxOption : public AccessibilityObject {
 
diff --git a/WebCore/accessibility/AccessibilityObject.h b/WebCore/accessibility/AccessibilityObject.h
index 5fcc1f5..0e44d1b 100644
--- a/WebCore/accessibility/AccessibilityObject.h
+++ b/WebCore/accessibility/AccessibilityObject.h
@@ -34,6 +34,7 @@
 #include "Range.h"
 #include "VisiblePosition.h"
 #include "VisibleSelection.h"
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include <wtf/Vector.h>
 
@@ -87,7 +88,6 @@ class Node;
 class RenderObject;
 class RenderListItem;
 class VisibleSelection;
-class String;
 class Widget;
 
 typedef unsigned AXID;
diff --git a/WebCore/accessibility/AccessibilityRenderObject.h b/WebCore/accessibility/AccessibilityRenderObject.h
index 77640db..cefaa94 100644
--- a/WebCore/accessibility/AccessibilityRenderObject.h
+++ b/WebCore/accessibility/AccessibilityRenderObject.h
@@ -53,7 +53,6 @@ class RenderListBox;
 class RenderTextControl;
 class RenderView;
 class VisibleSelection;
-class String;
 class Widget;
     
 class AccessibilityRenderObject : public AccessibilityObject {
diff --git a/WebCore/accessibility/AccessibilityTable.h b/WebCore/accessibility/AccessibilityTable.h
index c823561..2ee5812 100644
--- a/WebCore/accessibility/AccessibilityTable.h
+++ b/WebCore/accessibility/AccessibilityTable.h
@@ -30,6 +30,7 @@
 #define AccessibilityTable_h
 
 #include "AccessibilityRenderObject.h"
+#include <wtf/Forward.h>
 
 #if PLATFORM(MAC) && (defined(BUILDING_ON_TIGER) || defined(BUILDING_ON_LEOPARD))
 #define ACCESSIBILITY_TABLES 0
@@ -39,7 +40,6 @@
 
 namespace WebCore {
 
-class String;
 class AccessibilityTableCell;
 class AccessibilityTableHeaderContainer;
     
diff --git a/WebCore/bindings/cpp/WebDOMCString.h b/WebCore/bindings/cpp/WebDOMCString.h
index e02a587..c921895 100644
--- a/WebCore/bindings/cpp/WebDOMCString.h
+++ b/WebCore/bindings/cpp/WebDOMCString.h
@@ -22,12 +22,9 @@
 #define WebDOMCString_h
 
 #include <WebDOMObject.h>
+#include <wtf/Forward.h>
 #include <stddef.h> // For size_t
 
-namespace WTF {
-class CString;
-};
-
 // UTF-16 character type
 #if defined(WIN32)
 typedef wchar_t WebUChar;
diff --git a/WebCore/bindings/cpp/WebDOMHTMLDocumentCustom.cpp b/WebCore/bindings/cpp/WebDOMHTMLDocumentCustom.cpp
index aa511ad..3bab0c1 100644
--- a/WebCore/bindings/cpp/WebDOMHTMLDocumentCustom.cpp
+++ b/WebCore/bindings/cpp/WebDOMHTMLDocumentCustom.cpp
@@ -27,7 +27,7 @@
 
 static inline void documentWrite(const WebDOMString& text, WebCore::HTMLDocument* document, bool addNewline)
 {
-    WebCore::SegmentedString segmentedString = WebCore::String(text);
+    WebCore::SegmentedString segmentedString = WTF::String(text);
     if (addNewline)
         segmentedString.append(WebCore::SegmentedString(&WebCore::newlineCharacter, 1));
     document->write(segmentedString);
diff --git a/WebCore/bindings/cpp/WebDOMString.cpp b/WebCore/bindings/cpp/WebDOMString.cpp
index d87dedd..59d98f7 100644
--- a/WebCore/bindings/cpp/WebDOMString.cpp
+++ b/WebCore/bindings/cpp/WebDOMString.cpp
@@ -26,7 +26,7 @@
 #include <wtf/text/CString.h>
 #include <wtf/text/WTFString.h>
 
-class WebDOMStringPrivate : public WebCore::StringImpl {
+class WebDOMStringPrivate : public WTF::StringImpl {
 };
 
 void WebDOMString::reset()
@@ -45,7 +45,7 @@ void WebDOMString::assign(const WebDOMString& other)
 void WebDOMString::assign(const WebUChar* data, size_t length)
 {
     assign(static_cast<WebDOMStringPrivate*>(
-        WebCore::StringImpl::create(data, length).get()));
+        WTF::StringImpl::create(data, length).get()));
 }
 
 size_t WebDOMString::length() const
@@ -60,52 +60,52 @@ const WebUChar* WebDOMString::data() const
 
 WebDOMCString WebDOMString::utf8() const
 {
-    return WebCore::String(m_private).utf8();
+    return WTF::String(m_private).utf8();
 }
 
 WebDOMString WebDOMString::fromUTF8(const char* data, size_t length)
 {
-    return WebCore::String::fromUTF8(data, length);
+    return WTF::String::fromUTF8(data, length);
 }
 
 WebDOMString WebDOMString::fromUTF8(const char* data)
 {
-    return WebCore::String::fromUTF8(data);
+    return WTF::String::fromUTF8(data);
 }
 
-WebDOMString::WebDOMString(const WebCore::String& s)
+WebDOMString::WebDOMString(const WTF::String& s)
     : m_private(static_cast<WebDOMStringPrivate*>(s.impl()))
 {
     if (m_private)
         m_private->ref();
 }
 
-WebDOMString& WebDOMString::operator=(const WebCore::String& s)
+WebDOMString& WebDOMString::operator=(const WTF::String& s)
 {
     assign(static_cast<WebDOMStringPrivate*>(s.impl()));
     return *this;
 }
 
-WebDOMString::operator WebCore::String() const
+WebDOMString::operator WTF::String() const
 {
     return m_private;
 }
 
-WebDOMString::WebDOMString(const WebCore::AtomicString& s)
+WebDOMString::WebDOMString(const WTF::AtomicString& s)
     : m_private(0)
 {
     assign(s.string());
 }
 
-WebDOMString& WebDOMString::operator=(const WebCore::AtomicString& s)
+WebDOMString& WebDOMString::operator=(const WTF::AtomicString& s)
 {
     assign(s.string());
     return *this;
 }
 
-WebDOMString::operator WebCore::AtomicString() const
+WebDOMString::operator WTF::AtomicString() const
 {
-    return WebCore::AtomicString(static_cast<WebCore::StringImpl *>(m_private));
+    return WTF::AtomicString(static_cast<WTF::StringImpl *>(m_private));
 }
 
 bool WebDOMString::equals(const char* string) const
diff --git a/WebCore/bindings/cpp/WebDOMString.h b/WebCore/bindings/cpp/WebDOMString.h
index ca09ee8..0eea1ae 100644
--- a/WebCore/bindings/cpp/WebDOMString.h
+++ b/WebCore/bindings/cpp/WebDOMString.h
@@ -22,11 +22,7 @@
 #define WebDOMString_h
 
 #include <WebDOMCString.h>
-
-namespace WebCore {
-class String;
-class AtomicString;
-}
+#include <wtf/Forward.h>
 
 class WebDOMStringPrivate;
 
@@ -81,13 +77,13 @@ public:
         return *this;
     }
 
-    WebDOMString(const WebCore::String&);
-    WebDOMString& operator=(const WebCore::String&);
-    operator WebCore::String() const;
+    WebDOMString(const WTF::String&);
+    WebDOMString& operator=(const WTF::String&);
+    operator WTF::String() const;
 
-    WebDOMString(const WebCore::AtomicString&);
-    WebDOMString& operator=(const WebCore::AtomicString&);
-    operator WebCore::AtomicString() const;
+    WebDOMString(const WTF::AtomicString&);
+    WebDOMString& operator=(const WTF::AtomicString&);
+    operator WTF::AtomicString() const;
 
     bool equals(const char* string) const;
 
diff --git a/WebCore/bindings/cpp/WebNativeEventListener.cpp b/WebCore/bindings/cpp/WebNativeEventListener.cpp
index ddd7112..b781eb7 100644
--- a/WebCore/bindings/cpp/WebNativeEventListener.cpp
+++ b/WebCore/bindings/cpp/WebNativeEventListener.cpp
@@ -40,7 +40,7 @@ void WebNativeEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCo
     m_listener->handleEvent(toWebKit(event));
 }
 
-bool WebNativeEventListener::reportError(WebCore::ScriptExecutionContext*, const WebCore::String&, const WebCore::String&, int)
+bool WebNativeEventListener::reportError(WebCore::ScriptExecutionContext*, const WTF::String&, const WTF::String&, int)
 {
     // FIXME: Implement error handling
     return false;
diff --git a/WebCore/bindings/cpp/WebNativeEventListener.h b/WebCore/bindings/cpp/WebNativeEventListener.h
index fff1b1c..13b4f5b 100644
--- a/WebCore/bindings/cpp/WebNativeEventListener.h
+++ b/WebCore/bindings/cpp/WebNativeEventListener.h
@@ -44,7 +44,7 @@ public:
 
 private:
     virtual void handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*);
-    virtual bool reportError(WebCore::ScriptExecutionContext*, const WebCore::String& message, const WebCore::String& url, int lineNumber);
+    virtual bool reportError(WebCore::ScriptExecutionContext*, const WTF::String& message, const WTF::String& url, int lineNumber);
 
 protected:
     WebNativeEventListener(WebUserEventListener*);
diff --git a/WebCore/bindings/gobject/ConvertToUTF8String.cpp b/WebCore/bindings/gobject/ConvertToUTF8String.cpp
index 57010fa..67375e4 100644
--- a/WebCore/bindings/gobject/ConvertToUTF8String.cpp
+++ b/WebCore/bindings/gobject/ConvertToUTF8String.cpp
@@ -27,7 +27,7 @@
 
 #include <glib.h>
 
-gchar* convertToUTF8String(WebCore::String const& s)
+gchar* convertToUTF8String(WTF::String const& s)
 {
     return g_strdup(s.utf8().data());
 }
diff --git a/WebCore/bindings/gobject/ConvertToUTF8String.h b/WebCore/bindings/gobject/ConvertToUTF8String.h
index 02b6416..bc234cf 100644
--- a/WebCore/bindings/gobject/ConvertToUTF8String.h
+++ b/WebCore/bindings/gobject/ConvertToUTF8String.h
@@ -21,14 +21,15 @@
 #ifndef ConvertToUTF8String_h
 #define ConvertToUTF8String_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
-class String;
 class KURL;
 }
 
 typedef char gchar;
 
-gchar* convertToUTF8String(WebCore::String const& s);
+gchar* convertToUTF8String(WTF::String const& s);
 gchar* convertToUTF8String(WebCore::KURL const& s);
 
 #endif /* ConvertToUTF8String_h */
diff --git a/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp b/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp
index 44928eb..4c57946 100644
--- a/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp
+++ b/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp
@@ -449,7 +449,7 @@ static gpointer createUListWrapper(PassRefPtr<HTMLElement> element)
 
 gpointer createHTMLElementWrapper(PassRefPtr<WebCore::HTMLElement> element)
 {
-    static HashMap<WebCore::AtomicStringImpl*, CreateHTMLElementWrapperFunction> map;
+    static HashMap<WTF::AtomicStringImpl*, CreateHTMLElementWrapperFunction> map;
     if (map.isEmpty()) {
        map.set(aTag.localName().impl(), createAnchorWrapper);
        map.set(appletTag.localName().impl(), createAppletWrapper);
diff --git a/WebCore/bindings/js/DOMWrapperWorld.h b/WebCore/bindings/js/DOMWrapperWorld.h
index 832c5e0..35b68fc 100644
--- a/WebCore/bindings/js/DOMWrapperWorld.h
+++ b/WebCore/bindings/js/DOMWrapperWorld.h
@@ -26,11 +26,11 @@
 #include "JSDOMGlobalObject.h"
 #include "JSDOMWrapper.h"
 #include <runtime/WeakGCMap.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class ScriptController;
-class StringImpl;
 
 typedef JSC::WeakGCMap<void*, DOMObject*> DOMObjectWrapperMap;
 typedef JSC::WeakGCMap<StringImpl*, JSC::JSString*> JSStringCache; 
diff --git a/WebCore/bindings/js/JSDOMBinding.h b/WebCore/bindings/js/JSDOMBinding.h
index 3f2502d..7086a89 100644
--- a/WebCore/bindings/js/JSDOMBinding.h
+++ b/WebCore/bindings/js/JSDOMBinding.h
@@ -30,6 +30,7 @@
 #include <runtime/Completion.h>
 #include <runtime/Lookup.h>
 #include <runtime/WeakGCMap.h>
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace JSC {
@@ -44,7 +45,6 @@ namespace WebCore {
     class JSNode;
     class KURL;
     class Node;
-    class String;
     class ScriptController;
     class ScriptCachedFrameData;
 
diff --git a/WebCore/bindings/js/JSDOMWindowBase.h b/WebCore/bindings/js/JSDOMWindowBase.h
index 2726996..f4f1ef9 100644
--- a/WebCore/bindings/js/JSDOMWindowBase.h
+++ b/WebCore/bindings/js/JSDOMWindowBase.h
@@ -23,12 +23,12 @@
 #include "PlatformString.h"
 #include "JSDOMBinding.h"
 #include <runtime/Protect.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
-    class AtomicString;
     class DOMWindow;
     class Event;
     class Frame;
diff --git a/WebCore/bindings/js/JSMessagePortCustom.h b/WebCore/bindings/js/JSMessagePortCustom.h
index 62ebef1..8396ae1 100644
--- a/WebCore/bindings/js/JSMessagePortCustom.h
+++ b/WebCore/bindings/js/JSMessagePortCustom.h
@@ -33,13 +33,12 @@
 
 #include "MessagePort.h"
 #include <runtime/JSValue.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
     typedef int ExceptionCode;
 
-    class String;
-
     // Helper function which pulls the values out of a JS sequence and into a MessagePortArray.
     // Also validates the elements per sections 4.1.13 and 4.1.15 of the WebIDL spec and section 8.3.3 of the HTML5 spec.
     // May generate an exception via the passed ExecState.
diff --git a/WebCore/bindings/js/JavaScriptCallFrame.h b/WebCore/bindings/js/JavaScriptCallFrame.h
index 574c782..c23a43d 100644
--- a/WebCore/bindings/js/JavaScriptCallFrame.h
+++ b/WebCore/bindings/js/JavaScriptCallFrame.h
@@ -30,13 +30,12 @@
 
 #include <debugger/DebuggerCallFrame.h>
 #include <interpreter/CallFrame.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-class String;
-
 class JavaScriptCallFrame : public RefCounted<JavaScriptCallFrame> {
 public:
     static PassRefPtr<JavaScriptCallFrame> create(const JSC::DebuggerCallFrame& debuggerCallFrame, PassRefPtr<JavaScriptCallFrame> caller, intptr_t sourceID, int line)
diff --git a/WebCore/bindings/js/ScriptController.h b/WebCore/bindings/js/ScriptController.h
index 80155e4..8dae637 100644
--- a/WebCore/bindings/js/ScriptController.h
+++ b/WebCore/bindings/js/ScriptController.h
@@ -26,6 +26,7 @@
 #include "ScriptControllerBase.h"
 #include "ScriptInstance.h"
 #include <runtime/Protect.h>
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 
 #if PLATFORM(MAC)
@@ -57,7 +58,6 @@ class Frame;
 class Node;
 class ScriptSourceCode;
 class ScriptValue;
-class String;
 class Widget;
 class XSSAuditor;
 
diff --git a/WebCore/bindings/js/ScriptProfile.h b/WebCore/bindings/js/ScriptProfile.h
index 8b98e49..b39d2c9 100644
--- a/WebCore/bindings/js/ScriptProfile.h
+++ b/WebCore/bindings/js/ScriptProfile.h
@@ -29,6 +29,7 @@
 
 #if ENABLE(JAVASCRIPT_DEBUGGER)
 #include "ScriptProfileNode.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -40,7 +41,6 @@ class Profile;
 namespace WebCore {
 
 class InspectorObject;
-class String;
 
 class ScriptProfile : public RefCounted<ScriptProfile> {
 public:
diff --git a/WebCore/bindings/js/ScriptSourceProvider.h b/WebCore/bindings/js/ScriptSourceProvider.h
index 2144169..de4e307 100644
--- a/WebCore/bindings/js/ScriptSourceProvider.h
+++ b/WebCore/bindings/js/ScriptSourceProvider.h
@@ -28,11 +28,10 @@
 #define ScriptSourceProvider_h
 
 #include <parser/SourceProvider.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-    class String;
-
     class ScriptSourceProvider : public JSC::SourceProvider {
     public:
         ScriptSourceProvider(const JSC::UString& url)
diff --git a/WebCore/bindings/js/ScriptString.h b/WebCore/bindings/js/ScriptString.h
index ad0ae95..558ad33 100644
--- a/WebCore/bindings/js/ScriptString.h
+++ b/WebCore/bindings/js/ScriptString.h
@@ -35,11 +35,10 @@
 #include "PlatformString.h"
 #include <runtime/UString.h>
 #include <runtime/StringBuilder.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class String;
-
 class ScriptString {
 public:
     ScriptString() {}
diff --git a/WebCore/bindings/js/WorkerScriptController.h b/WebCore/bindings/js/WorkerScriptController.h
index 60c3b04..be7da4d 100644
--- a/WebCore/bindings/js/WorkerScriptController.h
+++ b/WebCore/bindings/js/WorkerScriptController.h
@@ -30,6 +30,7 @@
 #if ENABLE(WORKERS)
 
 #include <runtime/Protect.h>
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/Threading.h>
 
@@ -42,7 +43,6 @@ namespace WebCore {
     class JSWorkerContext;
     class ScriptSourceCode;
     class ScriptValue;
-    class String;
     class WorkerContext;
 
     class WorkerScriptController : public Noncopyable {
diff --git a/WebCore/bindings/objc/DOMHTML.mm b/WebCore/bindings/objc/DOMHTML.mm
index 3488b35..db64afe 100644
--- a/WebCore/bindings/objc/DOMHTML.mm
+++ b/WebCore/bindings/objc/DOMHTML.mm
@@ -124,7 +124,7 @@
 {
     WebCore::HTMLInputElement* inputElement = core(self);
     if (inputElement) {
-        WebCore::String newValue = inputElement->value();
+        WTF::String newValue = inputElement->value();
         newValue.replace(targetRange.location, targetRange.length, replacementString);
         inputElement->setValue(newValue);
         inputElement->setSelectionRange(index, newValue.length());
diff --git a/WebCore/bindings/objc/DOMImplementationFront.h b/WebCore/bindings/objc/DOMImplementationFront.h
index 877a3b6..dabe90c 100644
--- a/WebCore/bindings/objc/DOMImplementationFront.h
+++ b/WebCore/bindings/objc/DOMImplementationFront.h
@@ -37,7 +37,6 @@ class Document;
 class DocumentType;
 class HTMLDocument;
 class JSDOMImplementation;
-class String;
 
 typedef int ExceptionCode;
 
diff --git a/WebCore/bindings/scripts/CodeGeneratorCPP.pm b/WebCore/bindings/scripts/CodeGeneratorCPP.pm
index 1fb88db..ff63615 100644
--- a/WebCore/bindings/scripts/CodeGeneratorCPP.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorCPP.pm
@@ -261,7 +261,7 @@ sub GetCPPTypeGetter
 
     return $argName if $codeGenerator->IsPrimitiveType($type) or $codeGenerator->IsStringType($type);
     return "static_cast<WebCore::Range::CompareHow>($argName)" if $type eq "CompareHow";
-    return "WebCore::SerializedScriptValue::create(WebCore::String($argName))" if $type eq "SerializedScriptValue";
+    return "WebCore::SerializedScriptValue::create(WTF::String($argName))" if $type eq "SerializedScriptValue";
     return "toWebCore($argName)";
 }
 
@@ -559,7 +559,7 @@ sub AddReturnStatement
 
     # Used to invoke KURLs "const String&" operator
     if ($codeGenerator->IsStringType($typeInfo->signature->type)) {
-        return "    return static_cast<const WebCore::String&>($returnValue);\n";
+        return "    return static_cast<const WTF::String&>($returnValue);\n";
     }
 
     return "    return $returnValue;\n";
@@ -682,7 +682,7 @@ sub GenerateImplementation
             # Special cases
             my @customGetterContent = (); 
             if ($attribute->signature->extendedAttributes->{"ConvertToString"}) {
-                $getterContentHead = "WebCore::String::number(" . $getterContentHead;
+                $getterContentHead = "WTF::String::number(" . $getterContentHead;
                 $getterContentTail .= ")";
             } elsif ($attribute->signature->type eq "SerializedScriptValue") {
                 $getterContentHead = "$getterContentHead";
@@ -736,7 +736,7 @@ sub GenerateImplementation
 
                 # The definition of ConvertToString is flipped for the setter
                 if ($attribute->signature->extendedAttributes->{"ConvertToString"}) {
-                    $arg = "WebCore::String($arg).toInt()";
+                    $arg = "WTF::String($arg).toInt()";
                 }
 
                 my $attributeType = GetCPPType($attribute->signature->type, 1);
diff --git a/WebCore/bindings/scripts/CodeGeneratorGObject.pm b/WebCore/bindings/scripts/CodeGeneratorGObject.pm
index d44d82f..5700ff7 100644
--- a/WebCore/bindings/scripts/CodeGeneratorGObject.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorGObject.pm
@@ -369,7 +369,7 @@ sub GenerateProperty {
 
     my $convertFunction = "";
     if ($gtype eq "string") {
-        $convertFunction = "WebCore::String::fromUTF8";
+        $convertFunction = "WTF::String::fromUTF8";
     }
 
     my $getterExpressionPrefix = $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute);
@@ -902,7 +902,7 @@ sub GenerateFunction {
 
         my $paramIsGDOMType = IsGDOMClassType($paramIDLType);
         if ($paramIDLType eq "DOMString") {
-            push(@cBody, "    WebCore::String converted_${paramName} = WebCore::String::fromUTF8($paramName);\n");
+            push(@cBody, "    WTF::String converted_${paramName} = WTF::String::fromUTF8($paramName);\n");
         } elsif ($paramIDLType eq "CompareHow") {
             push(@cBody, "    WebCore::Range::CompareHow converted_${paramName} = static_cast<WebCore::Range::CompareHow>($paramName);\n");
         } elsif ($paramIsGDOMType) {
diff --git a/WebCore/bindings/scripts/CodeGeneratorObjC.pm b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
index 91cbd0b..7e17008 100644
--- a/WebCore/bindings/scripts/CodeGeneratorObjC.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorObjC.pm
@@ -524,7 +524,7 @@ sub GetObjCTypeGetter
     
     if ($type eq "SerializedScriptValue") {
         $implIncludes{"SerializedScriptValue.h"} = 1;
-        return "WebCore::SerializedScriptValue::create(WebCore::String($argName))";
+        return "WebCore::SerializedScriptValue::create(WTF::String($argName))";
     }
     return "core($argName)";
 }
@@ -1242,7 +1242,7 @@ sub GenerateImplementation
                 }
                 $implIncludes{"DOMPrivate.h"} = 1;
             } elsif ($attribute->signature->extendedAttributes->{"ConvertToString"}) {
-                $getterContentHead = "WebCore::String::number(" . $getterContentHead;
+                $getterContentHead = "WTF::String::number(" . $getterContentHead;
                 $getterContentTail .= ")";
             } elsif ($codeGenerator->IsPodType($idlType) or $idlType eq "Date") {
                 $getterContentHead = "kit($getterContentHead";
@@ -1304,7 +1304,7 @@ sub GenerateImplementation
 
                 # The definition of ConvertToString is flipped for the setter
                 if ($attribute->signature->extendedAttributes->{"ConvertToString"}) {
-                    $arg = "WebCore::String($arg).toInt()";
+                    $arg = "WTF::String($arg).toInt()";
                 }
 
                 my $setterSig = "- (void)$setterName:($attributeType)$argName\n";
diff --git a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
index b8c551e..20de4fc 100644
--- a/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
+++ b/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp
@@ -85,7 +85,7 @@ WebDOMString WebDOMTestObj::readOnlyStringAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->readOnlyStringAttr());
+    return static_cast<const WTF::String&>(impl()->readOnlyStringAttr());
 }
 
 WebDOMTestObj WebDOMTestObj::readOnlyTestObjAttr() const
@@ -149,7 +149,7 @@ WebDOMString WebDOMTestObj::stringAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->stringAttr());
+    return static_cast<const WTF::String&>(impl()->stringAttr());
 }
 
 void WebDOMTestObj::setStringAttr(const WebDOMString& newStringAttr)
@@ -213,7 +213,7 @@ WebDOMString WebDOMTestObj::reflectedStringAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
+    return static_cast<const WTF::String&>(impl()->getAttribute(WebCore::HTMLNames::reflectedstringattrAttr));
 }
 
 void WebDOMTestObj::setReflectedStringAttr(const WebDOMString& newReflectedStringAttr)
@@ -261,7 +261,7 @@ WebDOMString WebDOMTestObj::reflectedURLAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
+    return static_cast<const WTF::String&>(impl()->getURLAttribute(WebCore::HTMLNames::reflectedurlattrAttr));
 }
 
 void WebDOMTestObj::setReflectedURLAttr(const WebDOMString& newReflectedURLAttr)
@@ -277,7 +277,7 @@ WebDOMString WebDOMTestObj::reflectedNonEmptyURLAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
+    return static_cast<const WTF::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr));
 }
 
 void WebDOMTestObj::setReflectedNonEmptyURLAttr(const WebDOMString& newReflectedNonEmptyURLAttr)
@@ -293,7 +293,7 @@ WebDOMString WebDOMTestObj::reflectedStringAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
+    return static_cast<const WTF::String&>(impl()->getAttribute(WebCore::HTMLNames::customContentStringAttrAttr));
 }
 
 void WebDOMTestObj::setReflectedStringAttr(const WebDOMString& newReflectedStringAttr)
@@ -341,7 +341,7 @@ WebDOMString WebDOMTestObj::reflectedCustomURLAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
+    return static_cast<const WTF::String&>(impl()->getURLAttribute(WebCore::HTMLNames::customContentURLAttrAttr));
 }
 
 void WebDOMTestObj::setReflectedCustomURLAttr(const WebDOMString& newReflectedCustomURLAttr)
@@ -357,7 +357,7 @@ WebDOMString WebDOMTestObj::reflectedCustomNonEmptyURLAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
+    return static_cast<const WTF::String&>(impl()->getNonEmptyURLAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr));
 }
 
 void WebDOMTestObj::setReflectedCustomNonEmptyURLAttr(const WebDOMString& newReflectedCustomNonEmptyURLAttr)
@@ -415,7 +415,7 @@ WebDOMString WebDOMTestObj::stringAttrWithGetterException() const
     WebCore::ExceptionCode ec = 0;
     WebDOMString result = impl()->stringAttrWithGetterException(ec);
     webDOMRaiseError(static_cast<WebDOMExceptionCode>(ec));
-    return static_cast<const WebCore::String&>(result);
+    return static_cast<const WTF::String&>(result);
 }
 
 void WebDOMTestObj::setStringAttrWithGetterException(const WebDOMString& newStringAttrWithGetterException)
@@ -433,7 +433,7 @@ WebDOMString WebDOMTestObj::stringAttrWithSetterException() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->stringAttrWithSetterException());
+    return static_cast<const WTF::String&>(impl()->stringAttrWithSetterException());
 }
 
 void WebDOMTestObj::setStringAttrWithSetterException(const WebDOMString& newStringAttrWithSetterException)
@@ -451,7 +451,7 @@ WebDOMString WebDOMTestObj::scriptStringAttr() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->scriptStringAttr());
+    return static_cast<const WTF::String&>(impl()->scriptStringAttr());
 }
 
 #if ENABLE(Condition1)
@@ -537,7 +537,7 @@ WebDOMString WebDOMTestObj::hash() const
     if (!impl())
         return WebDOMString();
 
-    return static_cast<const WebCore::String&>(impl()->hash());
+    return static_cast<const WTF::String&>(impl()->hash());
 }
 
 void WebDOMTestObj::voidMethod()
@@ -612,7 +612,7 @@ void WebDOMTestObj::serializedValue(const WebDOMString& serializedArg)
     if (!impl())
         return;
 
-    impl()->serializedValue(WebCore::SerializedScriptValue::create(WebCore::String(serializedArg)));
+    impl()->serializedValue(WebCore::SerializedScriptValue::create(WTF::String(serializedArg)));
 }
 
 void WebDOMTestObj::idbKey(const WebDOMIDBKey& key)
diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp
index 6581b1f..8f69a9f 100644
--- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp
+++ b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp
@@ -78,7 +78,7 @@ webkit_dom_test_callback_callback_with_class2param(WebKitDOMTestCallback* self,
     g_return_val_if_fail(str_arg, 0);
     WebCore::Class2 * converted_class2param = WebKit::core(class2param);
     g_return_val_if_fail(converted_class2param, 0);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     gboolean res = item->callbackWithClass2Param(converted_class2param, converted_str_arg);
     return res;
 }
diff --git a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
index 6a8399e..8cad49d 100644
--- a/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
+++ b/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp
@@ -69,7 +69,7 @@ webkit_dom_test_obj_void_method_with_args(WebKitDOMTestObj* self, glong int_arg,
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(str_arg);
     g_return_if_fail(obj_arg);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     WebCore::TestObj * converted_obj_arg = WebKit::core(obj_arg);
     g_return_if_fail(converted_obj_arg);
     item->voidMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg);
@@ -93,7 +93,7 @@ webkit_dom_test_obj_int_method_with_args(WebKitDOMTestObj* self, glong int_arg,
     WebCore::TestObj * item = WebKit::core(self);
     g_return_val_if_fail(str_arg, 0);
     g_return_val_if_fail(obj_arg, 0);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     WebCore::TestObj * converted_obj_arg = WebKit::core(obj_arg);
     g_return_val_if_fail(converted_obj_arg, 0);
     glong res = item->intMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg);
@@ -119,7 +119,7 @@ webkit_dom_test_obj_obj_method_with_args(WebKitDOMTestObj* self, glong int_arg,
     WebCore::TestObj * item = WebKit::core(self);
     g_return_val_if_fail(str_arg, 0);
     g_return_val_if_fail(obj_arg, 0);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     WebCore::TestObj * converted_obj_arg = WebKit::core(obj_arg);
     g_return_val_if_fail(converted_obj_arg, 0);
     PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->objMethodWithArgs(int_arg, converted_str_arg, converted_obj_arg));
@@ -135,7 +135,7 @@ webkit_dom_test_obj_method_that_requires_all_args(WebKitDOMTestObj* self, gchar*
     WebCore::TestObj * item = WebKit::core(self);
     g_return_val_if_fail(str_arg, 0);
     g_return_val_if_fail(obj_arg, 0);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     WebCore::TestObj * converted_obj_arg = WebKit::core(obj_arg);
     g_return_val_if_fail(converted_obj_arg, 0);
     PassRefPtr<WebCore::TestObj> g_res = WTF::getPtr(item->methodThatRequiresAllArgs(converted_str_arg, converted_obj_arg));
@@ -151,7 +151,7 @@ webkit_dom_test_obj_method_that_requires_all_args_and_throws(WebKitDOMTestObj* s
     WebCore::TestObj * item = WebKit::core(self);
     g_return_val_if_fail(str_arg, 0);
     g_return_val_if_fail(obj_arg, 0);
-    WebCore::String converted_str_arg = WebCore::String::fromUTF8(str_arg);
+    WTF::String converted_str_arg = WTF::String::fromUTF8(str_arg);
     WebCore::TestObj * converted_obj_arg = WebKit::core(obj_arg);
     g_return_val_if_fail(converted_obj_arg, 0);
     WebCore::ExceptionCode ec = 0;
@@ -448,7 +448,7 @@ webkit_dom_test_obj_set_string_attr(WebKitDOMTestObj* self, gchar*  value)
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setStringAttr(converted_value);
 }
 
@@ -534,7 +534,7 @@ webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, gchar*  va
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, converted_value);
 }
 
@@ -593,7 +593,7 @@ webkit_dom_test_obj_set_reflected_url_attr(WebKitDOMTestObj* self, gchar*  value
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, converted_value);
 }
 
@@ -614,7 +614,7 @@ webkit_dom_test_obj_set_reflected_non_empty_url_attr(WebKitDOMTestObj* self, gch
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, converted_value);
 }
 
@@ -635,7 +635,7 @@ webkit_dom_test_obj_set_reflected_string_attr(WebKitDOMTestObj* self, gchar*  va
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, converted_value);
 }
 
@@ -694,7 +694,7 @@ webkit_dom_test_obj_set_reflected_custom_url_attr(WebKitDOMTestObj* self, gchar*
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, converted_value);
 }
 
@@ -715,7 +715,7 @@ webkit_dom_test_obj_set_reflected_custom_non_empty_url_attr(WebKitDOMTestObj* se
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     item->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, converted_value);
 }
 
@@ -793,7 +793,7 @@ webkit_dom_test_obj_set_string_attr_with_getter_exception(WebKitDOMTestObj* self
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     WebCore::ExceptionCode ec = 0;
     item->setStringAttrWithGetterException(converted_value, ec);
     if (ec) {
@@ -820,7 +820,7 @@ webkit_dom_test_obj_set_string_attr_with_setter_exception(WebKitDOMTestObj* self
     g_return_if_fail(self);
     WebCore::TestObj * item = WebKit::core(self);
     g_return_if_fail(value);
-    WebCore::String converted_value = WebCore::String::fromUTF8(value);
+    WTF::String converted_value = WTF::String::fromUTF8(value);
     WebCore::ExceptionCode ec = 0;
     item->setStringAttrWithSetterException(converted_value, ec);
     if (ec) {
@@ -1041,7 +1041,7 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
     }
     case PROP_STRING_ATTR:
     {
-        coreSelf->setStringAttr(WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setStringAttr(WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_CREATE:
@@ -1051,7 +1051,7 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
     }
     case PROP_REFLECTED_STRING_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::reflectedstringattrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_REFLECTED_INTEGRAL_ATTR:
@@ -1066,17 +1066,17 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
     }
     case PROP_REFLECTED_URL_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::reflectedurlattrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_REFLECTED_NON_EMPTY_URL_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::reflectednonemptyurlattrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_REFLECTED_STRING_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::customContentStringAttrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_REFLECTED_CUSTOM_INTEGRAL_ATTR:
@@ -1091,12 +1091,12 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
     }
     case PROP_REFLECTED_CUSTOM_URL_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::customContentURLAttrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_REFLECTED_CUSTOM_NON_EMPTY_URL_ATTR:
     {
-        coreSelf->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, WebCore::String::fromUTF8(g_value_get_string(value)));
+        coreSelf->setAttribute(WebCore::HTMLNames::customContentNonEmptyURLAttrAttr, WTF::String::fromUTF8(g_value_get_string(value)));
         break;
     }
     case PROP_ATTR_WITH_GETTER_EXCEPTION:
@@ -1114,13 +1114,13 @@ static void webkit_dom_test_obj_set_property(GObject* object, guint prop_id, con
     case PROP_STRING_ATTR_WITH_GETTER_EXCEPTION:
     {
         WebCore::ExceptionCode ec = 0;
-        coreSelf->setStringAttrWithGetterException(WebCore::String::fromUTF8(g_value_get_string(value)), ec);
+        coreSelf->setStringAttrWithGetterException(WTF::String::fromUTF8(g_value_get_string(value)), ec);
         break;
     }
     case PROP_STRING_ATTR_WITH_SETTER_EXCEPTION:
     {
         WebCore::ExceptionCode ec = 0;
-        coreSelf->setStringAttrWithSetterException(WebCore::String::fromUTF8(g_value_get_string(value)), ec);
+        coreSelf->setStringAttrWithSetterException(WTF::String::fromUTF8(g_value_get_string(value)), ec);
         break;
     }
 #if ENABLE(Condition1)
diff --git a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
index 71d3508..01fcf34 100644
--- a/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
+++ b/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm
@@ -500,7 +500,7 @@
 - (void)serializedValue:(NSString *)serializedArg
 {
     WebCore::JSMainThreadNullState state;
-    IMPL->serializedValue(WebCore::SerializedScriptValue::create(WebCore::String(serializedArg)));
+    IMPL->serializedValue(WebCore::SerializedScriptValue::create(WTF::String(serializedArg)));
 }
 
 - (void)idbKey:(DOMIDBKey *)key
diff --git a/WebCore/bindings/v8/ScheduledAction.h b/WebCore/bindings/v8/ScheduledAction.h
index 003885f..aefe7ef 100644
--- a/WebCore/bindings/v8/ScheduledAction.h
+++ b/WebCore/bindings/v8/ScheduledAction.h
@@ -34,12 +34,12 @@
 #include "OwnHandle.h"
 #include "ScriptSourceCode.h"
 #include "V8GCController.h"
+#include <wtf/Forward.h>
 
 #include <v8.h>
 
 namespace WebCore {
 
-    class String;
     class ScriptExecutionContext;
     class V8Proxy;
     class WorkerContext;
@@ -47,7 +47,7 @@ namespace WebCore {
     class ScheduledAction {
     public:
         ScheduledAction(v8::Handle<v8::Context>, v8::Handle<v8::Function>, int argc, v8::Handle<v8::Value> argv[]);
-        explicit ScheduledAction(v8::Handle<v8::Context> context, const WebCore::String& code, const KURL& url = KURL())
+        explicit ScheduledAction(v8::Handle<v8::Context> context, const WTF::String& code, const KURL& url = KURL())
             : m_context(context)
             , m_argc(0)
             , m_argv(0)
diff --git a/WebCore/bindings/v8/ScriptController.h b/WebCore/bindings/v8/ScriptController.h
index 04a15f6..cd20cda 100644
--- a/WebCore/bindings/v8/ScriptController.h
+++ b/WebCore/bindings/v8/ScriptController.h
@@ -39,6 +39,7 @@
 
 #include <v8.h>
 
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
@@ -52,7 +53,6 @@ class Event;
 class Frame;
 class HTMLPlugInElement;
 class ScriptSourceCode;
-class String;
 class Widget;
 class XSSAuditor;
 
diff --git a/WebCore/bindings/v8/ScriptStringImpl.h b/WebCore/bindings/v8/ScriptStringImpl.h
index 8a47b4f..84a25c4 100644
--- a/WebCore/bindings/v8/ScriptStringImpl.h
+++ b/WebCore/bindings/v8/ScriptStringImpl.h
@@ -41,7 +41,7 @@ namespace WebCore {
 // This class is used for strings that tend to be shared with JavaScript frequently.  The JSC implementation uses wtf::UString - see bindings/js/ScriptString.h
 // Currently XMLHttpRequest uses a ScriptString to build up the responseText attribute.  As data arrives from the network, it is appended to the ScriptString
 // via operator+= and a JavaScript readystatechange event is fired.  JavaScript can access the responseText attribute of the XMLHttpRequest object.  JavaScript
-// may also query the responseXML attribute of the XMLHttpRequest object which results in the responseText attribute being coerced into a WebCore::String and
+// may also query the responseXML attribute of the XMLHttpRequest object which results in the responseText attribute being coerced into a WTF::String and
 // then parsed as an XML document.
 // This implementation optimizes for the common case where the responseText is built up with many calls to operator+= before the actual text is queried.
 class ScriptStringImpl : public RefCounted<ScriptStringImpl> {
diff --git a/WebCore/bindings/v8/V8Binding.h b/WebCore/bindings/v8/V8Binding.h
index c404ee7..4656aa2 100644
--- a/WebCore/bindings/v8/V8Binding.h
+++ b/WebCore/bindings/v8/V8Binding.h
@@ -63,7 +63,7 @@ namespace WebCore {
     template <typename StringType>
     StringType v8StringToWebCoreString(v8::Handle<v8::String> v8String, ExternalMode external);
 
-    // Convert v8 types to a WebCore::String. If the V8 string is not already
+    // Convert v8 types to a WTF::String. If the V8 string is not already
     // an external string then it is transformed into an external string at this
     // point to avoid repeated conversions.
     inline String v8StringToWebCoreString(v8::Handle<v8::String> v8String)
@@ -73,7 +73,7 @@ namespace WebCore {
     String v8NonStringValueToWebCoreString(v8::Handle<v8::Value>);
     String v8ValueToWebCoreString(v8::Handle<v8::Value> value);
 
-    // Convert v8 types to a WebCore::AtomicString.
+    // Convert v8 types to a WTF::AtomicString.
     inline AtomicString v8StringToAtomicWebCoreString(v8::Handle<v8::String> v8String)
     {
         return v8StringToWebCoreString<AtomicString>(v8String, Externalize);
@@ -112,8 +112,8 @@ namespace WebCore {
         return v8ExternalString(string);
     }
 
-    // Enables caching v8 wrappers created for WebCore::StringImpl.  Currently this cache requires
-    // all the calls (both to convert WebCore::String to v8::String and to GC the handle)
+    // Enables caching v8 wrappers created for WTF::StringImpl.  Currently this cache requires
+    // all the calls (both to convert WTF::String to v8::String and to GC the handle)
     // to be performed on the main thread.
     void enableStringImplCache();
 
diff --git a/WebCore/bindings/v8/V8DOMWindowShell.h b/WebCore/bindings/v8/V8DOMWindowShell.h
index f4eaff2..2ccb410 100644
--- a/WebCore/bindings/v8/V8DOMWindowShell.h
+++ b/WebCore/bindings/v8/V8DOMWindowShell.h
@@ -32,6 +32,7 @@
 #define V8DOMWindowShell_h
 
 #include "WrapperTypeInfo.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -41,7 +42,6 @@ namespace WebCore {
 
 class DOMWindow;
 class Frame;
-class String;
 
 // V8WindowShell represents all the per-global object state for a Frame that
 // persist between navigations.
diff --git a/WebCore/bindings/v8/V8DOMWrapper.h b/WebCore/bindings/v8/V8DOMWrapper.h
index 97e269a..943cb8a 100644
--- a/WebCore/bindings/v8/V8DOMWrapper.h
+++ b/WebCore/bindings/v8/V8DOMWrapper.h
@@ -35,7 +35,7 @@
 #include "Event.h"
 #include "Node.h"
 #include "NodeFilter.h"
-#include "PlatformString.h" // for WebCore::String
+#include "PlatformString.h"
 #include "V8CustomXPathNSResolver.h"
 #include "V8DOMMap.h"
 #include "V8Event.h"
diff --git a/WebCore/bindings/v8/V8Proxy.h b/WebCore/bindings/v8/V8Proxy.h
index 841c249..0eefa22 100644
--- a/WebCore/bindings/v8/V8Proxy.h
+++ b/WebCore/bindings/v8/V8Proxy.h
@@ -42,6 +42,7 @@
 #include "V8Utilities.h"
 #include "WrapperTypeInfo.h"
 #include <v8.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h> // so generated bindings don't have to
 #include <wtf/Vector.h>
 
@@ -59,7 +60,6 @@ namespace WebCore {
     class Node;
     class SVGElement;
     class ScriptExecutionContext;
-    class String;
     class V8EventListener;
     class V8IsolatedContext;
     class WorldContextHandle;
diff --git a/WebCore/bindings/v8/V8Utilities.h b/WebCore/bindings/v8/V8Utilities.h
index cbe7a7b..2b82f4d 100644
--- a/WebCore/bindings/v8/V8Utilities.h
+++ b/WebCore/bindings/v8/V8Utilities.h
@@ -31,6 +31,7 @@
 #ifndef V8Utilities_h
 #define V8Utilities_h
 
+#include <wtf/Forward.h>
 #include <v8.h>
 
 namespace WebCore {
@@ -40,7 +41,6 @@ namespace WebCore {
     class KURL;
     class ScriptExecutionContext;
     class ScriptState;
-    class String;
 
     // Use an array to hold dependents. It works like a ref-counted scheme. A value can be added more than once to the DOM object.
     void createHiddenDependency(v8::Handle<v8::Object>, v8::Local<v8::Value>, int cacheIndex);
diff --git a/WebCore/bindings/v8/custom/V8CustomXPathNSResolver.h b/WebCore/bindings/v8/custom/V8CustomXPathNSResolver.h
index cf84438..9677252 100644
--- a/WebCore/bindings/v8/custom/V8CustomXPathNSResolver.h
+++ b/WebCore/bindings/v8/custom/V8CustomXPathNSResolver.h
@@ -41,7 +41,6 @@
 
 namespace WebCore {
 
-class String;
 class V8Proxy;
 
 // V8CustomXPathNSResolver does not create a persistent handle to the
diff --git a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
index 4bd55a8..a74faee 100644
--- a/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
@@ -97,7 +97,7 @@ v8::Handle<v8::Value> WindowSetTimeoutImpl(const v8::Arguments& args, bool singl
     }
 
     v8::Handle<v8::Value> function = args[0];
-    WebCore::String functionString;
+    WTF::String functionString;
     if (!function->IsFunction()) {
         if (function->IsString())
             functionString = toWebCoreString(function);
diff --git a/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp b/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp
index 823ca28..53d731d 100644
--- a/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8WorkerContextCustom.cpp
@@ -65,7 +65,7 @@ v8::Handle<v8::Value> SetTimeoutOrInterval(const v8::Arguments& args, bool singl
 
     v8::Handle<v8::Context> v8Context = proxy->context();
     if (function->IsString()) {
-        WebCore::String stringFunction = toWebCoreString(function);
+        WTF::String stringFunction = toWebCoreString(function);
         timerId = DOMTimer::install(workerContext, new ScheduledAction(v8Context, stringFunction, workerContext->url()), timeout, singleShot);
     } else if (function->IsFunction()) {
         size_t paramCount = argumentCount >= 2 ? argumentCount - 2 : 0;
diff --git a/WebCore/bridge/c/c_utility.cpp b/WebCore/bridge/c/c_utility.cpp
index 3e65eb9..443ecca 100644
--- a/WebCore/bridge/c/c_utility.cpp
+++ b/WebCore/bridge/c/c_utility.cpp
@@ -31,6 +31,7 @@
 #include "c_utility.h"
 
 #include "CRuntimeObject.h"
+#include "JSDOMBinding.h"
 #include "JSDOMWindow.h"
 #include "NP_jsobject.h"
 #include "c_instance.h"
@@ -43,8 +44,6 @@
 #include "runtime_root.h"
 #include <wtf/Assertions.h>
 
-using WebCore::String;
-
 namespace JSC { namespace Bindings {
 
 static String convertUTF8ToUTF16WithLatin1Fallback(const NPUTF8* UTF8Chars, int UTF8Length)
@@ -123,7 +122,7 @@ JSValue convertNPVariantToValue(ExecState* exec, const NPVariant* variant, RootO
     if (type == NPVariantType_Double)
         return jsNumber(exec, NPVARIANT_TO_DOUBLE(*variant));
     if (type == NPVariantType_String)
-        return jsString(exec, convertNPStringToUTF16(&variant->value.stringValue));
+        return WebCore::jsString(exec, convertNPStringToUTF16(&variant->value.stringValue));
     if (type == NPVariantType_Object) {
         NPObject* obj = variant->value.objectValue;
         
@@ -145,7 +144,7 @@ String convertNPStringToUTF16(const NPString* string)
 
 Identifier identifierFromNPIdentifier(ExecState* exec, const NPUTF8* name)
 {
-    return Identifier(exec, stringToUString(convertUTF8ToUTF16WithLatin1Fallback(name, -1)));
+    return Identifier(exec, WebCore::stringToUString(convertUTF8ToUTF16WithLatin1Fallback(name, -1)));
 }
 
 } }
diff --git a/WebCore/bridge/c/c_utility.h b/WebCore/bridge/c/c_utility.h
index 6af8fb6..43cb16c 100644
--- a/WebCore/bridge/c/c_utility.h
+++ b/WebCore/bridge/c/c_utility.h
@@ -30,10 +30,7 @@
 
 #include "npruntime_internal.h"
 #include <runtime/JSValue.h>
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace JSC {
 
@@ -46,7 +43,7 @@ class RootObject;
     
 typedef uint16_t NPUTF16;
 
-WebCore::String convertNPStringToUTF16(const NPString *string);
+WTF::String convertNPStringToUTF16(const NPString *string);
 void convertValueToNPVariant(ExecState*, JSValue, NPVariant* result);
 JSValue convertNPVariantToValue(ExecState*, const NPVariant*, RootObject*);
 Identifier identifierFromNPIdentifier(ExecState*, const NPUTF8* name);
diff --git a/WebCore/bridge/jni/v8/JavaClassV8.h b/WebCore/bridge/jni/v8/JavaClassV8.h
index ae4806a..b7447b2 100644
--- a/WebCore/bridge/jni/v8/JavaClassV8.h
+++ b/WebCore/bridge/jni/v8/JavaClassV8.h
@@ -37,8 +37,8 @@ namespace JSC {
 namespace Bindings {
 
 typedef Vector<JavaMethod*> MethodList;
-typedef HashMap<WebCore::String, MethodList*> MethodListMap;
-typedef HashMap<WebCore::String, JavaField*> FieldMap;
+typedef HashMap<WTF::String, MethodList*> MethodListMap;
+typedef HashMap<WTF::String, JavaField*> FieldMap;
 
 class JavaClass {
 public:
diff --git a/WebCore/css/CSSFontSelector.h b/WebCore/css/CSSFontSelector.h
index af454bd..d9cce1c 100644
--- a/WebCore/css/CSSFontSelector.h
+++ b/WebCore/css/CSSFontSelector.h
@@ -28,19 +28,18 @@
 
 #include "FontSelector.h"
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-class AtomicString;
 class CSSFontFace;
 class CSSFontFaceRule;
 class CSSSegmentedFontFace;
 class Document;
 class DocLoader;
 class FontDescription;
-class String;
 
 class CSSFontSelector : public FontSelector {
 public:
diff --git a/WebCore/css/CSSHelper.h b/WebCore/css/CSSHelper.h
index 2e33377..331815e 100644
--- a/WebCore/css/CSSHelper.h
+++ b/WebCore/css/CSSHelper.h
@@ -22,9 +22,9 @@
 #ifndef CSSHelper_h
 #define CSSHelper_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-    class String;
+namespace WebCore {
 
     // Used in many inappropriate contexts throughout WebCore. We'll have to examine and test
     // each call site to find out whether it needs the various things this function does. That
diff --git a/WebCore/css/CSSOMUtils.h b/WebCore/css/CSSOMUtils.h
index 6602b35..749cb25 100644
--- a/WebCore/css/CSSOMUtils.h
+++ b/WebCore/css/CSSOMUtils.h
@@ -31,6 +31,7 @@
 #ifndef CSSOMUtils_h
 #define CSSOMUtils_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 #include <wtf/unicode/Unicode.h>
 
@@ -38,8 +39,6 @@
 
 namespace WebCore {
 
-class String;
-
 // Common serializing methods. See: http://dev.w3.org/csswg/cssom/#common-serializing-idioms
 void serializeCharacter(UChar32, Vector<UChar>& appendTo);
 void serializeCharacterAsCodePoint(UChar32, Vector<UChar>& appendTo);
diff --git a/WebCore/css/CSSPrimitiveValue.h b/WebCore/css/CSSPrimitiveValue.h
index a71c8c6..b11c7f0 100644
--- a/WebCore/css/CSSPrimitiveValue.h
+++ b/WebCore/css/CSSPrimitiveValue.h
@@ -24,6 +24,7 @@
 
 #include "CSSValue.h"
 #include "Color.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
@@ -34,7 +35,6 @@ class Pair;
 class RGBColor;
 class Rect;
 class RenderStyle;
-class StringImpl;
 
 struct Length;
 
diff --git a/WebCore/css/MediaList.h b/WebCore/css/MediaList.h
index f1eb0c0..e91ca9d 100644
--- a/WebCore/css/MediaList.h
+++ b/WebCore/css/MediaList.h
@@ -22,6 +22,7 @@
 #define MediaList_h
 
 #include "StyleBase.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/Vector.h>
 
@@ -30,7 +31,6 @@ namespace WebCore {
 class CSSImportRule;
 class CSSStyleSheet;
 class MediaQuery;
-class String;
 
 typedef int ExceptionCode;
 
diff --git a/WebCore/css/StyleBase.h b/WebCore/css/StyleBase.h
index fbd7beb..296c8fb 100644
--- a/WebCore/css/StyleBase.h
+++ b/WebCore/css/StyleBase.h
@@ -23,11 +23,11 @@
 #ifndef StyleBase_h
 #define StyleBase_h
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-    class String;
     class StyleSheet;
     class KURL;
 
diff --git a/WebCore/css/StyleSheetList.h b/WebCore/css/StyleSheetList.h
index ecdc1cf..a486511 100644
--- a/WebCore/css/StyleSheetList.h
+++ b/WebCore/css/StyleSheetList.h
@@ -21,6 +21,7 @@
 #ifndef StyleSheetList_h
 #define StyleSheetList_h
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/Vector.h>
@@ -30,7 +31,6 @@ namespace WebCore {
 class Document;
 class HTMLStyleElement;
 class StyleSheet;
-class String;
 
 typedef Vector<RefPtr<StyleSheet> > StyleSheetVector;
 
diff --git a/WebCore/css/WebKitCSSKeyframesRule.h b/WebCore/css/WebKitCSSKeyframesRule.h
index f58406f..2836942 100644
--- a/WebCore/css/WebKitCSSKeyframesRule.h
+++ b/WebCore/css/WebKitCSSKeyframesRule.h
@@ -27,6 +27,7 @@
 #define WebKitCSSKeyframesRule_h
 
 #include "CSSRule.h"
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include "AtomicString.h"
 
@@ -34,7 +35,6 @@ namespace WebCore {
 
 class CSSRuleList;
 class WebKitCSSKeyframeRule;
-class String;
 
 typedef int ExceptionCode;
 
diff --git a/WebCore/dom/CheckedRadioButtons.h b/WebCore/dom/CheckedRadioButtons.h
index 5a57955..de7b712 100644
--- a/WebCore/dom/CheckedRadioButtons.h
+++ b/WebCore/dom/CheckedRadioButtons.h
@@ -21,13 +21,12 @@
 #ifndef CheckedRadioButtons_h
 #define CheckedRadioButtons_h
 
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/OwnPtr.h>
 
 namespace WebCore {
 
-class AtomicString;
-class AtomicStringImpl;
 class HTMLInputElement;
 class HTMLFormControlElement;
 
diff --git a/WebCore/dom/DOMImplementation.h b/WebCore/dom/DOMImplementation.h
index c3d5658..a20f7d2 100644
--- a/WebCore/dom/DOMImplementation.h
+++ b/WebCore/dom/DOMImplementation.h
@@ -24,6 +24,7 @@
 #ifndef DOMImplementation_h
 #define DOMImplementation_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -35,7 +36,6 @@ class DocumentType;
 class Frame;
 class HTMLDocument;
 class KURL;
-class String;
 
 typedef int ExceptionCode;
 
diff --git a/WebCore/dom/DocumentMarker.h b/WebCore/dom/DocumentMarker.h
index 8945eb0..55d2e33 100644
--- a/WebCore/dom/DocumentMarker.h
+++ b/WebCore/dom/DocumentMarker.h
@@ -24,9 +24,9 @@
 #define DocumentMarker_h
 
 #include "PlatformString.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
-    class String;
 
 // A range of a node within a document that is "marked", such as the range of a misspelled word.
 // It optionally includes a description that could be displayed in the user interface.
diff --git a/WebCore/dom/DynamicNodeList.h b/WebCore/dom/DynamicNodeList.h
index f97c38f..db133b7 100644
--- a/WebCore/dom/DynamicNodeList.h
+++ b/WebCore/dom/DynamicNodeList.h
@@ -31,7 +31,6 @@
 
 namespace WebCore {
 
-    class AtomicString;
     class Element;
     class Node;
 
diff --git a/WebCore/dom/EventTarget.h b/WebCore/dom/EventTarget.h
index 1ff9031..406c2fd 100644
--- a/WebCore/dom/EventTarget.h
+++ b/WebCore/dom/EventTarget.h
@@ -41,7 +41,6 @@
 namespace WebCore {
 
     class AbstractWorker;
-    class AtomicString;
     class DedicatedWorkerContext;
     class DOMApplicationCache;
     class DOMWindow;
diff --git a/WebCore/dom/MessagePort.h b/WebCore/dom/MessagePort.h
index 65332b8..10426e5 100644
--- a/WebCore/dom/MessagePort.h
+++ b/WebCore/dom/MessagePort.h
@@ -31,6 +31,7 @@
 #include "EventListener.h"
 #include "EventTarget.h"
 #include "MessagePortChannel.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -39,12 +40,10 @@
 
 namespace WebCore {
 
-    class AtomicStringImpl;
     class Event;
     class Frame;
     class MessagePort;
     class ScriptExecutionContext;
-    class String;
 
     // The overwhelmingly common case is sending a single port, so handle that efficiently with an inline buffer of size 1.
     typedef Vector<RefPtr<MessagePort>, 1> MessagePortArray;
diff --git a/WebCore/dom/MessagePortChannel.h b/WebCore/dom/MessagePortChannel.h
index 192cb92..f308a29 100644
--- a/WebCore/dom/MessagePortChannel.h
+++ b/WebCore/dom/MessagePortChannel.h
@@ -36,6 +36,7 @@
 #include "SerializedScriptValue.h"
 
 #include <wtf/OwnPtr.h>
+#include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -48,7 +49,6 @@ namespace WebCore {
     class PlatformMessagePortChannel;
     class ScriptExecutionContext;
     class SerializedScriptValue;
-    class String;
 
     // The overwhelmingly common case is sending a single port, so handle that efficiently with an inline buffer of size 1.
     typedef Vector<OwnPtr<MessagePortChannel>, 1> MessagePortChannelArray;
diff --git a/WebCore/dom/NameNodeList.h b/WebCore/dom/NameNodeList.h
index 4f109b4..b7f5bfc 100644
--- a/WebCore/dom/NameNodeList.h
+++ b/WebCore/dom/NameNodeList.h
@@ -26,11 +26,10 @@
 
 #include "AtomicString.h"
 #include "DynamicNodeList.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-    class String;
-
     // NodeList which lists all Nodes in a Element with a given "name" attribute
     class NameNodeList : public DynamicNodeList {
     public:
diff --git a/WebCore/dom/Node.h b/WebCore/dom/Node.h
index e3c1910..b808ad7 100644
--- a/WebCore/dom/Node.h
+++ b/WebCore/dom/Node.h
@@ -30,20 +30,18 @@
 #include "RenderStyleConstants.h"
 #include "ScriptWrappable.h"
 #include "TreeShared.h"
+#include <wtf/Forward.h>
 #include <wtf/ListHashSet.h>
 
 #if USE(JSC)
 namespace JSC {
-
-    class JSGlobalData;
-    class MarkStack;
-
+class JSGlobalData;
+class MarkStack;
 }
 #endif
 
 namespace WebCore {
 
-class AtomicString;
 class Attribute;
 class ClassNodeList;
 class ContainerNode;
diff --git a/WebCore/dom/NodeList.h b/WebCore/dom/NodeList.h
index 99a0662..d4e18aa 100644
--- a/WebCore/dom/NodeList.h
+++ b/WebCore/dom/NodeList.h
@@ -24,11 +24,11 @@
 #ifndef NodeList_h
 #define NodeList_h
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-    class AtomicString;
     class Node;
 
     class NodeList : public RefCounted<NodeList> {
diff --git a/WebCore/dom/OptionGroupElement.h b/WebCore/dom/OptionGroupElement.h
index e4b1566..b98a3f2 100644
--- a/WebCore/dom/OptionGroupElement.h
+++ b/WebCore/dom/OptionGroupElement.h
@@ -21,10 +21,11 @@
 #ifndef OptionGroupElement_h
 #define OptionGroupElement_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class Element;
-class String;
 
 class OptionGroupElement {
 public:
diff --git a/WebCore/dom/QualifiedName.h b/WebCore/dom/QualifiedName.h
index 672a302..4391570 100644
--- a/WebCore/dom/QualifiedName.h
+++ b/WebCore/dom/QualifiedName.h
@@ -170,7 +170,7 @@ namespace WTF {
     
     template<> struct HashTraits<WebCore::QualifiedName> : GenericHashTraits<WebCore::QualifiedName> {
         static const bool emptyValueIsZero = false;
-        static WebCore::QualifiedName emptyValue() { return WebCore::QualifiedName(WebCore::nullAtom, WebCore::nullAtom, WebCore::nullAtom); }
+        static WebCore::QualifiedName emptyValue() { return WebCore::QualifiedName(nullAtom, nullAtom, nullAtom); }
         static void constructDeletedValue(WebCore::QualifiedName& slot) { new (&slot) WebCore::QualifiedName(WTF::HashTableDeletedValue); }
         static bool isDeletedValue(const WebCore::QualifiedName& slot) { return slot.isHashTableDeletedValue(); }
     };
diff --git a/WebCore/dom/ScriptExecutionContext.h b/WebCore/dom/ScriptExecutionContext.h
index 2ec98ae..d2da307 100644
--- a/WebCore/dom/ScriptExecutionContext.h
+++ b/WebCore/dom/ScriptExecutionContext.h
@@ -29,6 +29,7 @@
 
 #include "Console.h"
 #include "KURL.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
 #include <wtf/PassOwnPtr.h>
@@ -51,7 +52,6 @@ namespace WebCore {
     class MessagePort;
     class SecurityOrigin;
     class ScriptString;
-    class String;
 #if ENABLE(INSPECTOR)
     class InspectorController;
 #endif
diff --git a/WebCore/dom/SelectElement.h b/WebCore/dom/SelectElement.h
index 3831ac4..f00bb67 100644
--- a/WebCore/dom/SelectElement.h
+++ b/WebCore/dom/SelectElement.h
@@ -23,6 +23,7 @@
 #define SelectElement_h
 
 #include "Event.h"
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
@@ -34,7 +35,6 @@ class FormDataList;
 class HTMLFormElement;
 class KeyboardEvent;
 class SelectElementData;
-class String;
 
 class SelectElement {
 public:
diff --git a/WebCore/dom/ViewportArguments.h b/WebCore/dom/ViewportArguments.h
index db90111..1fac0df 100644
--- a/WebCore/dom/ViewportArguments.h
+++ b/WebCore/dom/ViewportArguments.h
@@ -26,10 +26,11 @@
 #ifndef ViewportArguments_h
 #define ViewportArguments_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class Document;
-class String;
 
 enum ViewportErrorCode {
     DeviceWidthShouldBeUsedWarning,
diff --git a/WebCore/dom/make_names.pl b/WebCore/dom/make_names.pl
index 9e0784a..4b4c7e3 100755
--- a/WebCore/dom/make_names.pl
+++ b/WebCore/dom/make_names.pl
@@ -470,7 +470,7 @@ sub printNamesHeaderFile
     my $lowerNamespace = lc($parameters{namespacePrefix});
     print F "#ifndef DOM_$parameters{namespace}NAMES_HIDE_GLOBALS\n";
     print F "// Namespace\n";
-    print F "extern const WebCore::AtomicString ${lowerNamespace}NamespaceURI;\n\n";
+    print F "extern const WTF::AtomicString ${lowerNamespace}NamespaceURI;\n\n";
 
     if (keys %allTags) {
         print F "// Tags\n";
@@ -770,13 +770,13 @@ sub printFactoryHeaderFile
 #ifndef $parameters{namespace}ElementFactory_h
 #define $parameters{namespace}ElementFactory_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
     class Element;
     class Document;
     class QualifiedName;
-    class AtomicString;
 }
 
 namespace WebCore {
@@ -970,7 +970,7 @@ END
         print F <<END
 JSNode* createJS$parameters{namespace}Wrapper(ExecState* exec, JSDOMGlobalObject* globalObject, PassRefPtr<$parameters{namespace}Element> element)
 {
-    typedef HashMap<WebCore::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
+    typedef HashMap<WTF::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
     DEFINE_STATIC_LOCAL(FunctionMap, map, ());
     if (map.isEmpty()) {
 END
@@ -979,7 +979,7 @@ END
         print F <<END
 v8::Handle<v8::Value> createV8$parameters{namespace}Wrapper($parameters{namespace}Element* element, bool forceNewObject)
 {
-    typedef HashMap<WebCore::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
+    typedef HashMap<WTF::AtomicStringImpl*, Create$parameters{namespace}ElementWrapperFunction> FunctionMap;
     DEFINE_STATIC_LOCAL(FunctionMap, map, ());
     if (map.isEmpty()) {
 END
diff --git a/WebCore/editing/Editor.cpp b/WebCore/editing/Editor.cpp
index 9c5b312..7a1ad4d 100644
--- a/WebCore/editing/Editor.cpp
+++ b/WebCore/editing/Editor.cpp
@@ -2405,7 +2405,7 @@ bool Editor::spellCheckingEnabledInFocusedNode() const
     const Node* node = frame()->document()->focusedNode();
     while (node) {
         if (node->isElementNode()) {
-            const WebCore::AtomicString& value = static_cast<const Element*>(node)->getAttribute(spellcheckAttr);
+            const WTF::AtomicString& value = static_cast<const Element*>(node)->getAttribute(spellcheckAttr);
             if (equalIgnoringCase(value, "true"))
                 return true;
             if (equalIgnoringCase(value, "false"))
diff --git a/WebCore/editing/HTMLInterchange.h b/WebCore/editing/HTMLInterchange.h
index 3b68efb..4029ea2 100644
--- a/WebCore/editing/HTMLInterchange.h
+++ b/WebCore/editing/HTMLInterchange.h
@@ -26,9 +26,10 @@
 #ifndef HTMLInterchange_h
 #define HTMLInterchange_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
-class String;
 class Text;
 
 #define AppleInterchangeNewline   "Apple-interchange-newline"
diff --git a/WebCore/editing/htmlediting.h b/WebCore/editing/htmlediting.h
index e60ada9..8612440 100644
--- a/WebCore/editing/htmlediting.h
+++ b/WebCore/editing/htmlediting.h
@@ -39,7 +39,6 @@ class HTMLElement;
 class Node;
 class Position;
 class Range;
-class String;
 class VisiblePosition;
 class VisibleSelection;
 
diff --git a/WebCore/editing/markup.cpp b/WebCore/editing/markup.cpp
index 567f651..26989c3 100644
--- a/WebCore/editing/markup.cpp
+++ b/WebCore/editing/markup.cpp
@@ -778,7 +778,7 @@ public:
         DEFINE_STATIC_LOCAL(const String, styleSpanOpen, ("<span class=\"" AppleStyleSpanClass "\" style=\""));
         DEFINE_STATIC_LOCAL(const String, styleSpanClose, ("</span>"));
         Vector<UChar> openTag;
-        WebCore::append(openTag, isBlock ? divStyle : styleSpanOpen);
+        WTF::append(openTag, isBlock ? divStyle : styleSpanOpen);
         appendAttributeValue(openTag, style->cssText(), document->isHTMLDocument());
         openTag.append('\"');
         openTag.append('>');
@@ -805,10 +805,10 @@ public:
         result.reserveInitialCapacity(length);
 
         for (size_t i = preCount; i > 0; --i)
-            WebCore::append(result, preMarkups[i - 1]);
+            WTF::append(result, preMarkups[i - 1]);
 
         for (size_t i = 0; i < postCount; ++i)
-            WebCore::append(result, postMarkups[i]);
+            WTF::append(result, postMarkups[i]);
 
         return String::adopt(result);
     }
diff --git a/WebCore/editing/markup.h b/WebCore/editing/markup.h
index 5428097..dbf8b80 100644
--- a/WebCore/editing/markup.h
+++ b/WebCore/editing/markup.h
@@ -38,7 +38,6 @@ namespace WebCore {
     class KURL;
     class Node;
     class Range;
-    class String;
 
     enum EChildrenOnly { IncludeNode, ChildrenOnly };
     enum EAbsoluteURLs { DoNotResolveURLs, AbsoluteURLs };
diff --git a/WebCore/history/qt/HistoryItemQt.cpp b/WebCore/history/qt/HistoryItemQt.cpp
index beb842c..b3c7ba1 100644
--- a/WebCore/history/qt/HistoryItemQt.cpp
+++ b/WebCore/history/qt/HistoryItemQt.cpp
@@ -30,26 +30,26 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version)
     if (version != 1)
         return false;
 
-    WebCore::String url;
-    WebCore::String title;
-    WebCore::String altTitle;
-    WebCore::String orginalUrl;
-    WebCore::String referrer;
-    WebCore::String target;
-    WebCore::String parrent;
+    WTF::String url;
+    WTF::String title;
+    WTF::String altTitle;
+    WTF::String orginalUrl;
+    WTF::String referrer;
+    WTF::String target;
+    WTF::String parrent;
     double lastVisitedTime;
     bool validUserData;
-    WebCore::String parent;
+    WTF::String parent;
     bool lastVisitWasHTTPNonGet;
     bool lastVisitWasFailure;
     bool isTargetItem;
     int visitCount;
-    WTF::Vector<WebCore::String> documentState;
+    WTF::Vector<WTF::String> documentState;
     WebCore::IntPoint scrollPoint;
     WTF::Vector<int> weeklyVisitCounts;
     WTF::Vector<int> dailyVisitCounts;
     // bool loadFormdata;
-    // WebCore::String formContentType;
+    // WTF::String formContentType;
     // WTF::Vector<char> formData;
 
     in >> url >> title >> altTitle >> lastVisitedTime >> orginalUrl >> referrer >> target >> parent;
diff --git a/WebCore/html/CollectionCache.h b/WebCore/html/CollectionCache.h
index 70a5af7..df1d1fa 100644
--- a/WebCore/html/CollectionCache.h
+++ b/WebCore/html/CollectionCache.h
@@ -21,12 +21,12 @@
 #ifndef CollectionCache_h
 #define CollectionCache_h
 
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class AtomicStringImpl;
 class Element;
 
 struct CollectionCache : FastAllocBase {
diff --git a/WebCore/html/DOMFormData.h b/WebCore/html/DOMFormData.h
index f071d4a..6c24858 100644
--- a/WebCore/html/DOMFormData.h
+++ b/WebCore/html/DOMFormData.h
@@ -32,13 +32,13 @@
 #define DOMFormData_h
 
 #include "FormDataList.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
 class Blob;
-class String;
 class TextEncoding;
 
 class DOMFormData : public FormDataList, public RefCounted<DOMFormData> {
diff --git a/WebCore/html/DataGridColumnList.h b/WebCore/html/DataGridColumnList.h
index ed72863..8a7ec75 100644
--- a/WebCore/html/DataGridColumnList.h
+++ b/WebCore/html/DataGridColumnList.h
@@ -5,13 +5,13 @@
 
 #include "DataGridColumn.h"
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class AtomicString;
 class HTMLDataGridElement;
 
 class DataGridColumnList : public RefCounted<DataGridColumnList> {
diff --git a/WebCore/html/DateComponents.h b/WebCore/html/DateComponents.h
index a15d558..efc3248 100644
--- a/WebCore/html/DateComponents.h
+++ b/WebCore/html/DateComponents.h
@@ -32,12 +32,11 @@
 #define DateComponents_h
 
 #include <limits>
+#include <wtf/Forward.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WebCore {
 
-class String;
-
 // A DateComponents instance represents one of the following date and time combinations:
 // * Month type: year-month
 // * Date type: year-month-day
diff --git a/WebCore/html/FileReader.h b/WebCore/html/FileReader.h
index 5e0e601..a5339a9 100644
--- a/WebCore/html/FileReader.h
+++ b/WebCore/html/FileReader.h
@@ -138,7 +138,7 @@ private:
     ReadType m_readType;
     TextEncoding m_encoding;
 
-    // Like XMLHttpRequest.m_responseText, we keep this as a ScriptString, not a WebCore::String.
+    // Like XMLHttpRequest.m_responseText, we keep this as a ScriptString, not a WTF::String.
     // That's because these strings can easily get huge (they are filled from the file) and
     // because JS can easily observe many intermediate states, so it's very useful to be
     // able to share the buffer with JavaScript versions of the whole or partial string.
diff --git a/WebCore/html/FileStream.h b/WebCore/html/FileStream.h
index a15cd59..b5eccd4 100644
--- a/WebCore/html/FileStream.h
+++ b/WebCore/html/FileStream.h
@@ -35,13 +35,13 @@
 
 #include "FileStreamClient.h"
 #include "FileSystem.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
 class Blob;
-class String;
 
 // All methods are synchronous and should be called on File or Worker thread.
 class FileStream : public RefCounted<FileStream> {
diff --git a/WebCore/html/FileStreamProxy.h b/WebCore/html/FileStreamProxy.h
index 0bdbcee..8523d4a 100644
--- a/WebCore/html/FileStreamProxy.h
+++ b/WebCore/html/FileStreamProxy.h
@@ -35,6 +35,7 @@
 #if ENABLE(BLOB) || ENABLE(FILE_WRITER)
 
 #include "FileStreamClient.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -45,7 +46,6 @@ class Blob;
 class FileStream;
 class FileThread;
 class ScriptExecutionContext;
-class String;
 
 // A proxy module that calls corresponding FileStream methods on the file thread.  Note: you must call stop() first and then release the reference to destruct the FileStreamProxy instance.
 class FileStreamProxy : public RefCounted<FileStreamProxy>, public FileStreamClient {
diff --git a/WebCore/html/FormDataList.h b/WebCore/html/FormDataList.h
index f4bb905..38b07f9 100644
--- a/WebCore/html/FormDataList.h
+++ b/WebCore/html/FormDataList.h
@@ -23,6 +23,7 @@
 
 #include "Blob.h"
 #include "TextEncoding.h"
+#include <wtf/Forward.h>
 #include <wtf/text/CString.h>
 
 namespace WebCore {
@@ -36,7 +37,7 @@ public:
         appendString(key);
         appendString(value);
     }
-    void appendData(const String& key, const WTF::CString& value)
+    void appendData(const String& key, const CString& value)
     {
         appendString(key);
         appendString(value);
@@ -52,7 +53,7 @@ public:
     const TextEncoding& encoding() const { return m_encoding; }
 
 private:
-    void appendString(const WTF::CString&);
+    void appendString(const CString&);
     void appendString(const String&);
 
     TextEncoding m_encoding;
diff --git a/WebCore/html/HTMLCollection.h b/WebCore/html/HTMLCollection.h
index eea1777..4359724 100644
--- a/WebCore/html/HTMLCollection.h
+++ b/WebCore/html/HTMLCollection.h
@@ -31,12 +31,9 @@
 
 namespace WebCore {
 
-class AtomicString;
-class AtomicStringImpl;
 class Element;
 class Node;
 class NodeList;
-class String;
 
 struct CollectionCache;
 
diff --git a/WebCore/html/HTMLElementStack.h b/WebCore/html/HTMLElementStack.h
index fd9f3b5..73cfcb1 100644
--- a/WebCore/html/HTMLElementStack.h
+++ b/WebCore/html/HTMLElementStack.h
@@ -26,6 +26,7 @@
 #ifndef HTMLElementStack_h
 #define HTMLElementStack_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
@@ -33,7 +34,6 @@
 
 namespace WebCore {
 
-class AtomicString;
 class Element;
 class QualifiedName;
 
diff --git a/WebCore/html/HTMLFormattingElementList.h b/WebCore/html/HTMLFormattingElementList.h
index 135163c..aca05bb 100644
--- a/WebCore/html/HTMLFormattingElementList.h
+++ b/WebCore/html/HTMLFormattingElementList.h
@@ -32,7 +32,6 @@
 
 namespace WebCore {
 
-class AtomicString;
 class Element;
 
 // This may end up merged into HTMLElementStack.
diff --git a/WebCore/html/HTMLParserQuirks.h b/WebCore/html/HTMLParserQuirks.h
index 176bbfb..50de710 100644
--- a/WebCore/html/HTMLParserQuirks.h
+++ b/WebCore/html/HTMLParserQuirks.h
@@ -26,11 +26,11 @@
 #ifndef HTMLParserQuirks_h
 #define HTMLParserQuirks_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
-class AtomicString;
 class Node;
 
 class HTMLParserQuirks : public Noncopyable {
diff --git a/WebCore/html/HTMLQuoteElement.h b/WebCore/html/HTMLQuoteElement.h
index df47e73..9261da6 100644
--- a/WebCore/html/HTMLQuoteElement.h
+++ b/WebCore/html/HTMLQuoteElement.h
@@ -24,12 +24,11 @@
 #ifndef HTMLQuoteElement_h
 #define HTMLQuoteElement_h
 
+#include <wtf/Forward.h>
 #include "HTMLElement.h"
 
 namespace WebCore {
 
-class String;
-
 class HTMLQuoteElement : public HTMLElement {
 public:
     static PassRefPtr<HTMLQuoteElement> create(const QualifiedName&, Document*);
diff --git a/WebCore/html/HTMLScriptRunnerHost.h b/WebCore/html/HTMLScriptRunnerHost.h
index a129520..5b40a93 100644
--- a/WebCore/html/HTMLScriptRunnerHost.h
+++ b/WebCore/html/HTMLScriptRunnerHost.h
@@ -26,9 +26,10 @@
 #ifndef HTMLScriptRunnerHost_h
 #define HTMLScriptRunnerHost_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
-class AtomicString;
 class CachedResource;
 class Element;
 class HTMLInputStream;
diff --git a/WebCore/html/StepRange.h b/WebCore/html/StepRange.h
index 2f5013a..ce044ea 100644
--- a/WebCore/html/StepRange.h
+++ b/WebCore/html/StepRange.h
@@ -21,12 +21,12 @@
 #ifndef StepRange_h
 #define StepRange_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class HTMLInputElement;
-class String;
 
 class StepRange : public Noncopyable {
 public:
diff --git a/WebCore/html/canvas/CanvasGradient.h b/WebCore/html/canvas/CanvasGradient.h
index 0a77652..7550f9b 100644
--- a/WebCore/html/canvas/CanvasGradient.h
+++ b/WebCore/html/canvas/CanvasGradient.h
@@ -28,13 +28,12 @@
 #define CanvasGradient_h
 
 #include "Gradient.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-    class String;
-
     typedef int ExceptionCode;
 
     class CanvasGradient : public RefCounted<CanvasGradient> {
diff --git a/WebCore/html/canvas/CanvasNumberArray.h b/WebCore/html/canvas/CanvasNumberArray.h
index eb79866..09714a0 100644
--- a/WebCore/html/canvas/CanvasNumberArray.h
+++ b/WebCore/html/canvas/CanvasNumberArray.h
@@ -26,6 +26,7 @@
 #ifndef CanvasNumberArray_h
 #define CanvasNumberArray_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
@@ -33,8 +34,6 @@
 
 namespace WebCore {
 
-    class String;
-    
     class CanvasNumberArray : public RefCounted<CanvasNumberArray> {
     public:
         static PassRefPtr<CanvasNumberArray> create(unsigned length);
diff --git a/WebCore/html/canvas/CanvasPattern.h b/WebCore/html/canvas/CanvasPattern.h
index 6c012d1..91e0794 100644
--- a/WebCore/html/canvas/CanvasPattern.h
+++ b/WebCore/html/canvas/CanvasPattern.h
@@ -27,13 +27,13 @@
 #define CanvasPattern_h
 
 #include "Pattern.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
     class Image;
-    class String;
 
     typedef int ExceptionCode;
 
diff --git a/WebCore/inspector/CodeGeneratorInspector.pm b/WebCore/inspector/CodeGeneratorInspector.pm
index 82334ad..d4a70fc 100644
--- a/WebCore/inspector/CodeGeneratorInspector.pm
+++ b/WebCore/inspector/CodeGeneratorInspector.pm
@@ -75,7 +75,7 @@ $typeTransform{"Value"} = {
 $typeTransform{"String"} = {
     "param" => "const String&",
     "variable" => "String",
-    "forward" => "String",
+    "forwardHeader" => "wtf/Forward.h",
     "header" => "PlatformString.h",
     "accessorSuffix" => "String"
 };
diff --git a/WebCore/inspector/InjectedScript.h b/WebCore/inspector/InjectedScript.h
index d07f5ac..b2d88f4 100644
--- a/WebCore/inspector/InjectedScript.h
+++ b/WebCore/inspector/InjectedScript.h
@@ -33,13 +33,13 @@
 
 #include "InjectedScriptHost.h"
 #include "ScriptObject.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
 class InspectorValue;
-class String;
 
 class InjectedScript {
 public:
diff --git a/WebCore/inspector/InspectorCSSStore.h b/WebCore/inspector/InspectorCSSStore.h
index 5691201..2a05d71 100644
--- a/WebCore/inspector/InspectorCSSStore.h
+++ b/WebCore/inspector/InspectorCSSStore.h
@@ -30,7 +30,7 @@
 #define InspectorCSSStore_h
 
 #include "StringHash.h"
-
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefPtr.h>
 
@@ -44,7 +44,6 @@ class CSSStyleDeclaration;
 class CSSRuleList;
 class CSSStyleRule;
 class CSSStyleSheet;
-class String;
 class StyleBase;
 
 typedef std::pair<String, String> PropertyValueAndPriority;
diff --git a/WebCore/inspector/InspectorClient.h b/WebCore/inspector/InspectorClient.h
index 61900bb..acd8b28 100644
--- a/WebCore/inspector/InspectorClient.h
+++ b/WebCore/inspector/InspectorClient.h
@@ -27,13 +27,13 @@
 #define InspectorClient_h
 
 #include "InspectorController.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class InspectorController;
 class Node;
 class Page;
-class String;
 
 class InspectorClient {
 public:
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 5d8609a..5b59bb0 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -1274,7 +1274,7 @@ void InspectorController::didOpenDatabase(PassRefPtr<Database> database, const S
 }
 #endif
 
-void InspectorController::getCookies(RefPtr<InspectorArray>* cookies, WebCore::String* cookiesString)
+void InspectorController::getCookies(RefPtr<InspectorArray>* cookies, WTF::String* cookiesString)
 {
     // If we can get raw cookies.
     ListHashSet<Cookie> rawCookiesList;
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index 920466c..dd201e7 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -175,7 +175,7 @@ public:
     void stopTimelineProfiler();
     InspectorTimelineAgent* timelineAgent() { return m_timelineAgent.get(); }
 
-    void getCookies(RefPtr<InspectorArray>* cookies, WebCore::String* cookiesString);
+    void getCookies(RefPtr<InspectorArray>* cookies, WTF::String* cookiesString);
     void deleteCookie(const String& cookieName, const String& domain);
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
diff --git a/WebCore/inspector/InspectorDOMAgent.cpp b/WebCore/inspector/InspectorDOMAgent.cpp
index e60cee3..7cf0a82 100644
--- a/WebCore/inspector/InspectorDOMAgent.cpp
+++ b/WebCore/inspector/InspectorDOMAgent.cpp
@@ -506,7 +506,7 @@ void InspectorDOMAgent::changeTagName(long nodeId, const String& tagName, long*
         pushChildNodesToFrontend(*newId);
 }
 
-void InspectorDOMAgent::getOuterHTML(long nodeId, WebCore::String* outerHTML)
+void InspectorDOMAgent::getOuterHTML(long nodeId, WTF::String* outerHTML)
 {
     Node* node = nodeForId(nodeId);
     if (!node || !node->isHTMLElement())
diff --git a/WebCore/inspector/InspectorDOMAgent.h b/WebCore/inspector/InspectorDOMAgent.h
index 492b7e3..bae65f5 100644
--- a/WebCore/inspector/InspectorDOMAgent.h
+++ b/WebCore/inspector/InspectorDOMAgent.h
@@ -105,7 +105,7 @@ namespace WebCore {
         void removeAttribute(long elementId, const String& name, bool* success);
         void removeNode(long nodeId, long* outNodeId);
         void changeTagName(long nodeId, const String& tagName, long* newId);
-        void getOuterHTML(long nodeId, WebCore::String* outerHTML);
+        void getOuterHTML(long nodeId, WTF::String* outerHTML);
         void setOuterHTML(long nodeId, const String& outerHTML, long* newId);
         void setTextNodeValue(long nodeId, const String& value, bool* success);
         void getEventListenersForNode(long nodeId, long* outNodeId, RefPtr<InspectorArray>* listenersArray);
diff --git a/WebCore/inspector/InspectorDebuggerAgent.h b/WebCore/inspector/InspectorDebuggerAgent.h
index fe533c7..6db6267 100644
--- a/WebCore/inspector/InspectorDebuggerAgent.h
+++ b/WebCore/inspector/InspectorDebuggerAgent.h
@@ -35,6 +35,7 @@
 #include "ScriptDebugListener.h"
 #include "ScriptState.h"
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassOwnPtr.h>
 
@@ -43,7 +44,6 @@ class InjectedScriptHost;
 class InspectorController;
 class InspectorValue;
 class RemoteInspectorFrontend;
-class String;
 
 class InspectorDebuggerAgent : public ScriptDebugListener, public Noncopyable {
 public:
diff --git a/WebCore/inspector/InspectorFrontendClient.h b/WebCore/inspector/InspectorFrontendClient.h
index c20eb10..cbbbc53 100644
--- a/WebCore/inspector/InspectorFrontendClient.h
+++ b/WebCore/inspector/InspectorFrontendClient.h
@@ -31,13 +31,13 @@
 #ifndef InspectorFrontendClient_h
 #define InspectorFrontendClient_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
 class ContextMenuItem;
 class Event;
-class String;
 
 class InspectorFrontendClient {
 public:
diff --git a/WebCore/inspector/InspectorValues.h b/WebCore/inspector/InspectorValues.h
index 642f093..f6556d7 100644
--- a/WebCore/inspector/InspectorValues.h
+++ b/WebCore/inspector/InspectorValues.h
@@ -36,6 +36,7 @@
 #include "PlatformString.h"
 #include "StringHash.h"
 
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
@@ -44,7 +45,6 @@ namespace WebCore {
 
 class InspectorArray;
 class InspectorObject;
-class String;
 
 class InspectorValue : public RefCounted<InspectorValue> {
 public:
diff --git a/WebCore/inspector/ScriptDebugListener.h b/WebCore/inspector/ScriptDebugListener.h
index 539b000..5973402 100644
--- a/WebCore/inspector/ScriptDebugListener.h
+++ b/WebCore/inspector/ScriptDebugListener.h
@@ -33,11 +33,10 @@
 #if ENABLE(JAVASCRIPT_DEBUGGER)
 
 #include "ScriptState.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class String;
-
 enum ScriptWorldType {
 MAIN_WORLD = 0,
 EXTENSIONS_WORLD
diff --git a/WebCore/loader/CachedResourceClient.h b/WebCore/loader/CachedResourceClient.h
index be3f87e..40a6a06 100644
--- a/WebCore/loader/CachedResourceClient.h
+++ b/WebCore/loader/CachedResourceClient.h
@@ -26,6 +26,7 @@
 #define CachedResourceClient_h
 
 #include <wtf/FastAllocBase.h>
+#include <wtf/Forward.h>
 
 #if ENABLE(XBL)
 namespace XBL {
@@ -39,7 +40,6 @@ namespace WebCore {
     class CachedFont;
     class CachedResource;
     class CachedImage;
-    class String;
     class Image;
     class IntRect;
     class KURL;
diff --git a/WebCore/loader/CrossOriginAccessControl.h b/WebCore/loader/CrossOriginAccessControl.h
index 4a904d6..c44963b 100644
--- a/WebCore/loader/CrossOriginAccessControl.h
+++ b/WebCore/loader/CrossOriginAccessControl.h
@@ -24,12 +24,13 @@
  *
  */
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
     class HTTPHeaderMap;
     class ResourceResponse;
     class SecurityOrigin;
-    class String;
 
     bool isSimpleCrossOriginAccessRequest(const String& method, const HTTPHeaderMap&);
     bool isOnAccessControlSimpleRequestMethodWhitelist(const String&);
diff --git a/WebCore/loader/DocumentThreadableLoader.h b/WebCore/loader/DocumentThreadableLoader.h
index 9800b9a..ebf3a25 100644
--- a/WebCore/loader/DocumentThreadableLoader.h
+++ b/WebCore/loader/DocumentThreadableLoader.h
@@ -34,6 +34,7 @@
 #include "FrameLoaderTypes.h"
 #include "SubresourceLoaderClient.h"
 #include "ThreadableLoader.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -43,7 +44,6 @@ namespace WebCore {
     class Document;
     class KURL;
     class ResourceRequest;
-    class String;
     class ThreadableLoaderClient;
 
     class DocumentThreadableLoader : public RefCounted<DocumentThreadableLoader>, public ThreadableLoader, private SubresourceLoaderClient  {
diff --git a/WebCore/loader/FrameLoaderClient.h b/WebCore/loader/FrameLoaderClient.h
index 7ef1dbc..35eee32 100644
--- a/WebCore/loader/FrameLoaderClient.h
+++ b/WebCore/loader/FrameLoaderClient.h
@@ -75,7 +75,6 @@ namespace WebCore {
     class SecurityOrigin;
     class SharedBuffer;
     class SubstituteData;
-    class String;
     class Widget;
 
     typedef void (PolicyChecker::*FramePolicyFunction)(PolicyAction);
diff --git a/WebCore/loader/RedirectScheduler.h b/WebCore/loader/RedirectScheduler.h
index e9d04dc..0203e08 100644
--- a/WebCore/loader/RedirectScheduler.h
+++ b/WebCore/loader/RedirectScheduler.h
@@ -33,6 +33,7 @@
 
 #include "Event.h"
 #include "Timer.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -42,7 +43,6 @@ namespace WebCore {
 class FormState;
 class FormSubmission;
 class Frame;
-class String;
 
 struct FrameLoadRequest;
 class ScheduledNavigation;
diff --git a/WebCore/loader/SubframeLoader.h b/WebCore/loader/SubframeLoader.h
index 4bdb787..df08870 100644
--- a/WebCore/loader/SubframeLoader.h
+++ b/WebCore/loader/SubframeLoader.h
@@ -40,7 +40,6 @@
 
 namespace WebCore {
 
-class AtomicString;
 class Frame;
 class FrameLoaderClient;
 class HTMLAppletElement;
diff --git a/WebCore/loader/appcache/DOMApplicationCache.h b/WebCore/loader/appcache/DOMApplicationCache.h
index b398756..de0614a 100644
--- a/WebCore/loader/appcache/DOMApplicationCache.h
+++ b/WebCore/loader/appcache/DOMApplicationCache.h
@@ -33,6 +33,7 @@
 #include "EventListener.h"
 #include "EventNames.h"
 #include "EventTarget.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -40,10 +41,8 @@
 
 namespace WebCore {
 
-class AtomicStringImpl;
 class Frame;
 class KURL;
-class String;
 
 class DOMApplicationCache : public RefCounted<DOMApplicationCache>, public EventTarget {
 public:
diff --git a/WebCore/loader/archive/ArchiveFactory.h b/WebCore/loader/archive/ArchiveFactory.h
index bf1d5c6..c3b9464 100644
--- a/WebCore/loader/archive/ArchiveFactory.h
+++ b/WebCore/loader/archive/ArchiveFactory.h
@@ -31,12 +31,12 @@
 
 #include "Archive.h"
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
 class SharedBuffer;
-class String;
 
 class ArchiveFactory {
 public:
diff --git a/WebCore/loader/icon/IconDatabaseClient.h b/WebCore/loader/icon/IconDatabaseClient.h
index 1811214..c210d7d 100644
--- a/WebCore/loader/icon/IconDatabaseClient.h
+++ b/WebCore/loader/icon/IconDatabaseClient.h
@@ -29,6 +29,7 @@
 #ifndef IconDatabaseClient_h
 #define IconDatabaseClient_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 // All of these client methods will be called from a non-main thread
@@ -36,8 +37,6 @@
  
 namespace WebCore {
 
-class String;
-
 class IconDatabaseClient : public Noncopyable {
 public:
     virtual ~IconDatabaseClient() { }
diff --git a/WebCore/notifications/NotificationPresenter.h b/WebCore/notifications/NotificationPresenter.h
index e3e7ee2..9602199 100644
--- a/WebCore/notifications/NotificationPresenter.h
+++ b/WebCore/notifications/NotificationPresenter.h
@@ -42,7 +42,6 @@ namespace WebCore {
     class Notification;
     class KURL;
     class ScriptExecutionContext;
-    class String;
 
     class NotificationPresenter {
 
diff --git a/WebCore/page/Chrome.h b/WebCore/page/Chrome.h
index 30edf28..5ee8897 100644
--- a/WebCore/page/Chrome.h
+++ b/WebCore/page/Chrome.h
@@ -48,7 +48,6 @@ namespace WebCore {
     class Node;
     class Page;
     class PopupMenuClient;
-    class String;
 #if ENABLE(NOTIFICATIONS)
     class NotificationPresenter;
 #endif
diff --git a/WebCore/page/ChromeClient.h b/WebCore/page/ChromeClient.h
index 28e0b4f..d0bdd1e 100644
--- a/WebCore/page/ChromeClient.h
+++ b/WebCore/page/ChromeClient.h
@@ -46,7 +46,6 @@ class NSResponder;
 
 namespace WebCore {
 
-    class AtomicString;
     class Element;
     class FileChooser;
     class FloatRect;
@@ -59,7 +58,6 @@ namespace WebCore {
     class Page;
     class SecurityOrigin;
     class PopupMenuClient;
-    class String;
     class Widget;
 
     struct FrameLoadRequest;
diff --git a/WebCore/page/Console.h b/WebCore/page/Console.h
index d057ff9..ab62525 100644
--- a/WebCore/page/Console.h
+++ b/WebCore/page/Console.h
@@ -33,6 +33,7 @@
 #include "PlatformString.h"
 #include "ScriptProfile.h"
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -44,7 +45,6 @@ typedef Vector<RefPtr<ScriptProfile> > ProfilesArray;
 
 class Frame;
 class Page;
-class String;
 class ScriptCallStack;
 
 // Keep in sync with inspector/front-end/Console.js
diff --git a/WebCore/page/ContextMenuClient.h b/WebCore/page/ContextMenuClient.h
index 1997cd0..f91536b 100644
--- a/WebCore/page/ContextMenuClient.h
+++ b/WebCore/page/ContextMenuClient.h
@@ -27,6 +27,7 @@
 #define ContextMenuClient_h
 
 #include "PlatformMenuDescription.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
     class ContextMenu;
@@ -34,7 +35,6 @@ namespace WebCore {
     class Frame;
     class HitTestResult;
     class KURL;
-    class String;
 
     class ContextMenuClient {
     public:
diff --git a/WebCore/page/DOMSelection.h b/WebCore/page/DOMSelection.h
index 0287e44..b0421c7 100644
--- a/WebCore/page/DOMSelection.h
+++ b/WebCore/page/DOMSelection.h
@@ -39,7 +39,6 @@ namespace WebCore {
     class Frame;
     class Range;
     class Node;
-    class String;
     class VisibleSelection;
 
     typedef int ExceptionCode;
diff --git a/WebCore/page/EditorClient.h b/WebCore/page/EditorClient.h
index ff5bf94..93e27ff 100644
--- a/WebCore/page/EditorClient.h
+++ b/WebCore/page/EditorClient.h
@@ -58,7 +58,6 @@ class KeyboardEvent;
 class Node;
 class Range;
 class VisibleSelection;
-class String;
 class VisiblePosition;
 
 struct GrammarDetail {
diff --git a/WebCore/page/EventHandler.h b/WebCore/page/EventHandler.h
index 242601b..ca19a0c 100644
--- a/WebCore/page/EventHandler.h
+++ b/WebCore/page/EventHandler.h
@@ -45,7 +45,6 @@ class NSView;
 
 namespace WebCore {
 
-class AtomicString;
 class Clipboard;
 class Cursor;
 class Event;
@@ -66,7 +65,6 @@ class RenderLayer;
 class RenderObject;
 class RenderWidget;
 class Scrollbar;
-class String;
 class SVGElementInstance;
 class TextEvent;
 class TouchEvent;
diff --git a/WebCore/page/FrameView.h b/WebCore/page/FrameView.h
index 9765c6f..cc32404 100644
--- a/WebCore/page/FrameView.h
+++ b/WebCore/page/FrameView.h
@@ -47,7 +47,6 @@ class RenderObject;
 class RenderEmbeddedObject;
 class RenderScrollbarPart;
 struct ScheduledEvent;
-class String;
 
 template <typename T> class Timer;
 
diff --git a/WebCore/page/GeolocationPositionCache.h b/WebCore/page/GeolocationPositionCache.h
index c7f7e49..dd57180 100644
--- a/WebCore/page/GeolocationPositionCache.h
+++ b/WebCore/page/GeolocationPositionCache.h
@@ -26,6 +26,7 @@
 #ifndef GeolocationPositionCache_h
 #define GeolocationPositionCache_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 
@@ -33,7 +34,6 @@
 namespace WebCore {
 
 class Geoposition;
-class String;
 
 class GeolocationPositionCache {
   public:
diff --git a/WebCore/page/History.h b/WebCore/page/History.h
index 66a6a03..e885847 100644
--- a/WebCore/page/History.h
+++ b/WebCore/page/History.h
@@ -27,6 +27,7 @@
 #define History_h
 
 #include "KURL.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -34,7 +35,6 @@ namespace WebCore {
 
 class Frame;
 class SerializedScriptValue;
-class String;
 typedef int ExceptionCode;
 
 class History : public RefCounted<History> {
diff --git a/WebCore/page/Location.h b/WebCore/page/Location.h
index 065bde1..808eff9 100644
--- a/WebCore/page/Location.h
+++ b/WebCore/page/Location.h
@@ -29,6 +29,7 @@
 #ifndef Location_h
 #define Location_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -36,7 +37,6 @@ namespace WebCore {
 
     class Frame;
     class KURL;
-    class String;
 
     class Location : public RefCounted<Location> {
     public:
diff --git a/WebCore/page/Navigator.h b/WebCore/page/Navigator.h
index 3a07126..d44a0d8 100644
--- a/WebCore/page/Navigator.h
+++ b/WebCore/page/Navigator.h
@@ -21,6 +21,7 @@
 #define Navigator_h
 
 #include "NavigatorBase.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -32,7 +33,6 @@ class DOMPluginArray;
 class Frame;
 class Geolocation;
 class PluginData;
-class String;
 
 class Navigator : public NavigatorBase, public RefCounted<Navigator> {
 public:
diff --git a/WebCore/page/NavigatorBase.h b/WebCore/page/NavigatorBase.h
index 4c09f47..8f576e3 100644
--- a/WebCore/page/NavigatorBase.h
+++ b/WebCore/page/NavigatorBase.h
@@ -26,9 +26,9 @@
 #ifndef NavigatorBase_h
 #define NavigatorBase_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-    class String;
+namespace WebCore {
 
     class NavigatorBase {
     public:
diff --git a/WebCore/page/PluginHalterClient.h b/WebCore/page/PluginHalterClient.h
index 0251547..12d37cc 100644
--- a/WebCore/page/PluginHalterClient.h
+++ b/WebCore/page/PluginHalterClient.h
@@ -26,10 +26,11 @@
 #ifndef PluginHalterClient_h
 #define PluginHalterClient_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class Node;
-class String;
 
 class PluginHalterClient {
 public:
diff --git a/WebCore/page/PrintContext.h b/WebCore/page/PrintContext.h
index ed1cfa4..ceda892 100644
--- a/WebCore/page/PrintContext.h
+++ b/WebCore/page/PrintContext.h
@@ -21,6 +21,7 @@
 #ifndef PrintContext_h
 #define PrintContext_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
@@ -31,7 +32,6 @@ class FloatRect;
 class FloatSize;
 class GraphicsContext;
 class IntRect;
-class String;
 
 class PrintContext {
 public:
diff --git a/WebCore/page/SpeechInput.h b/WebCore/page/SpeechInput.h
index 2ce0eea..58f4efe 100644
--- a/WebCore/page/SpeechInput.h
+++ b/WebCore/page/SpeechInput.h
@@ -34,13 +34,13 @@
 #if ENABLE(INPUT_SPEECH)
 
 #include "SpeechInputListener.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class SpeechInputClient;
 class SpeechInputListener;
-class String;
 
 // This class connects the input elements requiring speech input with the platform specific
 // speech recognition engine. It provides methods for the input elements to activate speech
diff --git a/WebCore/page/SpeechInputListener.h b/WebCore/page/SpeechInputListener.h
index 1b21a11..143984d 100644
--- a/WebCore/page/SpeechInputListener.h
+++ b/WebCore/page/SpeechInputListener.h
@@ -33,9 +33,9 @@
 
 #if ENABLE(INPUT_SPEECH)
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-class String;
+namespace WebCore {
 
 // Interface to be implemented by the element which invokes SpeechInput.
 class SpeechInputListener {
diff --git a/WebCore/page/animation/AnimationController.h b/WebCore/page/animation/AnimationController.h
index d184b45..4528dae 100644
--- a/WebCore/page/animation/AnimationController.h
+++ b/WebCore/page/animation/AnimationController.h
@@ -36,14 +36,12 @@ namespace WebCore {
 
 class AnimationBase;
 class AnimationControllerPrivate;
-class AtomicString;
 class Document;
 class Element;
 class Frame;
 class Node;
 class RenderObject;
 class RenderStyle;
-class String;
 
 class AnimationController {
 public:
diff --git a/WebCore/platform/CookieJar.h b/WebCore/platform/CookieJar.h
index fb1abee..4793708 100644
--- a/WebCore/platform/CookieJar.h
+++ b/WebCore/platform/CookieJar.h
@@ -26,13 +26,13 @@
 #ifndef CookieJar_h
 #define CookieJar_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
     class Document;
     class KURL;
-    class String;
 
     struct Cookie;
 
diff --git a/WebCore/platform/CrossThreadCopier.h b/WebCore/platform/CrossThreadCopier.h
index 80805c4..6f7bb25 100644
--- a/WebCore/platform/CrossThreadCopier.h
+++ b/WebCore/platform/CrossThreadCopier.h
@@ -31,6 +31,7 @@
 #ifndef CrossThreadCopier_h
 #define CrossThreadCopier_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
@@ -43,7 +44,6 @@ namespace WebCore {
     class ResourceError;
     class ResourceRequest;
     class ResourceResponse;
-    class String;
     struct CrossThreadResourceResponseData;
     struct CrossThreadResourceRequestData;
     struct ThreadableLoaderOptions;
diff --git a/WebCore/platform/DragImage.h b/WebCore/platform/DragImage.h
index aafc09a..483e2d0 100644
--- a/WebCore/platform/DragImage.h
+++ b/WebCore/platform/DragImage.h
@@ -28,6 +28,7 @@
 
 #include "IntSize.h"
 #include "FloatSize.h"
+#include <wtf/Forward.h>
 
 #if PLATFORM(MAC)
 #include <wtf/RetainPtr.h>
@@ -64,8 +65,7 @@ namespace WebCore {
     class Image;
     class KURL;
     class Range;
-    class String;
-    
+
 #if PLATFORM(MAC)
     typedef RetainPtr<NSImage> DragImageRef;
 #elif PLATFORM(QT)
diff --git a/WebCore/platform/FileSystem.h b/WebCore/platform/FileSystem.h
index 42aaaef..617470b 100644
--- a/WebCore/platform/FileSystem.h
+++ b/WebCore/platform/FileSystem.h
@@ -47,6 +47,7 @@
 
 #include "PlatformString.h"
 #include <time.h>
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 typedef const struct __CFData* CFDataRef;
@@ -63,11 +64,6 @@ typedef HINSTANCE HMODULE;
 typedef struct _IFile IFile;
 #endif
 
-namespace WTF {
-class CString;
-}
-using WTF::CString;
-
 namespace WebCore {
 
 // PlatformModule
@@ -155,12 +151,12 @@ String directoryName(const String&);
 
 Vector<String> listDirectory(const String& path, const String& filter = String());
 
-WTF::CString fileSystemRepresentation(const String&);
+CString fileSystemRepresentation(const String&);
 
 inline bool isHandleValid(const PlatformFileHandle& handle) { return handle != invalidPlatformFileHandle; }
 
 // Prefix is what the filename should be prefixed with, not the full path.
-WTF::CString openTemporaryFile(const char* prefix, PlatformFileHandle&);
+CString openTemporaryFile(const char* prefix, PlatformFileHandle&);
 PlatformFileHandle openFile(const String& path, FileOpenMode);
 void closeFile(PlatformFileHandle&);
 // Returns the resulting offset from the beginning of the file if successful, -1 otherwise.
diff --git a/WebCore/platform/KURLHash.h b/WebCore/platform/KURLHash.h
index 7448a49..283170b 100644
--- a/WebCore/platform/KURLHash.h
+++ b/WebCore/platform/KURLHash.h
@@ -52,7 +52,7 @@ namespace WTF {
 
     template<> struct HashTraits<WebCore::KURL> : GenericHashTraits<WebCore::KURL> {
         static const bool emptyValueIsZero = true;
-        static void constructDeletedValue(WebCore::KURL& slot) { new (&slot) WebCore::KURL(WebCore::ParsedURLString, WebCore::String(HashTableDeletedValue)); }
+        static void constructDeletedValue(WebCore::KURL& slot) { new (&slot) WebCore::KURL(WebCore::ParsedURLString, WTF::String(HashTableDeletedValue)); }
         static bool isDeletedValue(const WebCore::KURL& slot) { return slot.string().isHashTableDeletedValue(); }
     };
 
diff --git a/WebCore/platform/Language.h b/WebCore/platform/Language.h
index 1d59c21..4c92755 100644
--- a/WebCore/platform/Language.h
+++ b/WebCore/platform/Language.h
@@ -26,9 +26,9 @@
 #ifndef Language_h
 #define Language_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-    class String;
+namespace WebCore {
 
     String defaultLanguage();
 
diff --git a/WebCore/platform/Length.h b/WebCore/platform/Length.h
index 4f36577..a3b1eda 100644
--- a/WebCore/platform/Length.h
+++ b/WebCore/platform/Length.h
@@ -23,12 +23,11 @@
 
 #include <wtf/Assertions.h>
 #include <wtf/FastAllocBase.h>
+#include <wtf/Forward.h>
 #include <wtf/MathExtras.h>
 
 namespace WebCore {
 
-class String;
-
 const int undefinedLength = -1;
 const int percentScaleFactor = 128;
 
diff --git a/WebCore/platform/LinkHash.h b/WebCore/platform/LinkHash.h
index 2756654..a499a8e 100644
--- a/WebCore/platform/LinkHash.h
+++ b/WebCore/platform/LinkHash.h
@@ -27,10 +27,10 @@
 #define LinkHash_h
 
 #include "StringHash.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class AtomicString;
 class KURL;
 
 typedef uint64_t LinkHash;
diff --git a/WebCore/platform/LocalizationStrategy.h b/WebCore/platform/LocalizationStrategy.h
index 741fbbd..178cfa2 100644
--- a/WebCore/platform/LocalizationStrategy.h
+++ b/WebCore/platform/LocalizationStrategy.h
@@ -28,9 +28,10 @@
 
 #if USE(PLATFORM_STRATEGIES)
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
-class String;
 class IntSize;
 
 class LocalizationStrategy {
diff --git a/WebCore/platform/LocalizedStrings.h b/WebCore/platform/LocalizedStrings.h
index ddc4869..04042b6 100644
--- a/WebCore/platform/LocalizedStrings.h
+++ b/WebCore/platform/LocalizedStrings.h
@@ -26,9 +26,10 @@
 #ifndef LocalizedStrings_h
 #define LocalizedStrings_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
-    class String;
     class IntSize;
     
     String inputElementAltText();
diff --git a/WebCore/platform/Logging.h b/WebCore/platform/Logging.h
index 45b6d23..df3c6fd 100644
--- a/WebCore/platform/Logging.h
+++ b/WebCore/platform/Logging.h
@@ -27,6 +27,7 @@
 #define Logging_h
 
 #include <wtf/Assertions.h>
+#include <wtf/Forward.h>
 
 #ifndef LOG_CHANNEL_PREFIX
 #define LOG_CHANNEL_PREFIX Log
@@ -34,8 +35,6 @@
 
 namespace WebCore {
 
-    class String;
-
     extern WTFLogChannel LogNotYetImplemented;
     extern WTFLogChannel LogFrames;
     extern WTFLogChannel LogLoading;
diff --git a/WebCore/platform/Pasteboard.h b/WebCore/platform/Pasteboard.h
index 7ee8e81..7773624 100644
--- a/WebCore/platform/Pasteboard.h
+++ b/WebCore/platform/Pasteboard.h
@@ -63,11 +63,6 @@ typedef struct HWND__* HWND;
 #include "PasteboardPrivate.h"
 #endif
 
-namespace WTF {
-class CString;
-}
-using WTF::CString;
-
 namespace WebCore {
 
 #if PLATFORM(MAC)
@@ -84,7 +79,6 @@ class HitTestResult;
 class KURL;
 class Node;
 class Range;
-class String;
     
 class Pasteboard : public Noncopyable {
 public:
diff --git a/WebCore/platform/PopupMenuClient.h b/WebCore/platform/PopupMenuClient.h
index 976f28c..2b41380 100644
--- a/WebCore/platform/PopupMenuClient.h
+++ b/WebCore/platform/PopupMenuClient.h
@@ -24,6 +24,7 @@
 
 #include "PopupMenuStyle.h"
 #include "ScrollTypes.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
@@ -32,7 +33,6 @@ class FontSelector;
 class HostWindow;
 class Scrollbar;
 class ScrollbarClient;
-class String;
 
 class PopupMenuClient {
 public:
diff --git a/WebCore/platform/SearchPopupMenu.h b/WebCore/platform/SearchPopupMenu.h
index d1ecd0f..f199fab 100644
--- a/WebCore/platform/SearchPopupMenu.h
+++ b/WebCore/platform/SearchPopupMenu.h
@@ -22,13 +22,12 @@
 #define SearchPopupMenu_h
 
 #include "PopupMenu.h"
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 #include <wtf/text/WTFString.h>
 
 namespace WebCore {
 
-class AtomicString;
-
 class SearchPopupMenu : public RefCounted<SearchPopupMenu> {
 public:
     virtual ~SearchPopupMenu() {}
diff --git a/WebCore/platform/Widget.h b/WebCore/platform/Widget.h
index e118ccb..0eb0c69 100644
--- a/WebCore/platform/Widget.h
+++ b/WebCore/platform/Widget.h
@@ -94,6 +94,7 @@ typedef PlatformWidget PlatformPageClient;
 #include "IntRect.h"
 #include "IntSize.h"
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
@@ -105,9 +106,6 @@ class GraphicsContext;
 class PlatformMouseEvent;
 class ScrollView;
 class WidgetPrivate;
-#if PLATFORM(EFL)
-class String;
-#endif
 
 // The Widget class serves as a base class for three kinds of objects:
 // (1) Scrollable areas (ScrollView)
diff --git a/WebCore/platform/android/TemporaryLinkStubs.cpp b/WebCore/platform/android/TemporaryLinkStubs.cpp
index 514c622..29bcc95 100644
--- a/WebCore/platform/android/TemporaryLinkStubs.cpp
+++ b/WebCore/platform/android/TemporaryLinkStubs.cpp
@@ -313,12 +313,12 @@ void* WebCore::Frame::dragImageForSelection()
 }
 
 
-WebCore::String WebCore::MIMETypeRegistry::getMIMETypeForExtension(WebCore::String const&)
+WTF::String WebCore::MIMETypeRegistry::getMIMETypeForExtension(WTF::String const&)
 {
-    return WebCore::String();
+    return WTF::String();
 }
 
-void WebCore::Pasteboard::writeImage(WebCore::Node*, WebCore::KURL const&, WebCore::String const&) {}
+void WebCore::Pasteboard::writeImage(WebCore::Node*, WebCore::KURL const&, WTF::String const&) {}
 
 namespace WebCore {
 
diff --git a/WebCore/platform/cf/BinaryPropertyList.h b/WebCore/platform/cf/BinaryPropertyList.h
index a930b43..8cbb2e1 100644
--- a/WebCore/platform/cf/BinaryPropertyList.h
+++ b/WebCore/platform/cf/BinaryPropertyList.h
@@ -28,12 +28,11 @@
 
 #include <CoreFoundation/CoreFoundation.h>
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class String;
-
 // Writes a limited subset of binary property lists.
 // Covers only what's needed for writing browser history as of this writing.
 class BinaryPropertyListObjectStream {
diff --git a/WebCore/platform/chromium/ChromiumBridge.h b/WebCore/platform/chromium/ChromiumBridge.h
index 7662c72..fc1345e 100644
--- a/WebCore/platform/chromium/ChromiumBridge.h
+++ b/WebCore/platform/chromium/ChromiumBridge.h
@@ -38,6 +38,7 @@
 #include "PasteboardPrivate.h"
 #include "PluginData.h"
 
+#include <wtf/Forward.h>
 #include <wtf/HashSet.h>
 #include <wtf/Vector.h>
 
@@ -73,7 +74,6 @@ namespace WebCore {
     class IDBFactoryBackendInterface;
     class IntRect;
     class KURL;
-    class String;
     class Widget;
 
     struct Cookie;
diff --git a/WebCore/platform/chromium/ClipboardUtilitiesChromium.h b/WebCore/platform/chromium/ClipboardUtilitiesChromium.h
index 7514280..9fdad42 100644
--- a/WebCore/platform/chromium/ClipboardUtilitiesChromium.h
+++ b/WebCore/platform/chromium/ClipboardUtilitiesChromium.h
@@ -28,10 +28,11 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class KURL;
-class String;
 
 #if OS(WINDOWS)
 void replaceNewlinesWithWindowsStyleNewlines(String&);
diff --git a/WebCore/platform/cocoa/KeyEventCocoa.h b/WebCore/platform/cocoa/KeyEventCocoa.h
index 8d486ad..d6e206e 100644
--- a/WebCore/platform/cocoa/KeyEventCocoa.h
+++ b/WebCore/platform/cocoa/KeyEventCocoa.h
@@ -26,9 +26,9 @@
 #ifndef KeyEventCocoa_h
 #define KeyEventCocoa_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-class String;
+namespace WebCore {
 
 String keyIdentifierForCharCode(unichar charCode);
 
diff --git a/WebCore/platform/efl/ClipboardEfl.cpp b/WebCore/platform/efl/ClipboardEfl.cpp
index 1633ccb..60146b5 100644
--- a/WebCore/platform/efl/ClipboardEfl.cpp
+++ b/WebCore/platform/efl/ClipboardEfl.cpp
@@ -53,7 +53,7 @@ void ClipboardEfl::clearData(const String&)
     notImplemented();
 }
 
-void ClipboardEfl::writePlainText(const WebCore::String&)
+void ClipboardEfl::writePlainText(const WTF::String&)
 {
     notImplemented();
 }
diff --git a/WebCore/platform/efl/ClipboardEfl.h b/WebCore/platform/efl/ClipboardEfl.h
index c8de431..d5b17c0 100644
--- a/WebCore/platform/efl/ClipboardEfl.h
+++ b/WebCore/platform/efl/ClipboardEfl.h
@@ -52,7 +52,7 @@ public:
 
     virtual bool hasData();
 
-    virtual void writePlainText(const WebCore::String&);
+    virtual void writePlainText(const WTF::String&);
 };
 }
 
diff --git a/WebCore/platform/graphics/Color.h b/WebCore/platform/graphics/Color.h
index d41e361..b4efcb5 100644
--- a/WebCore/platform/graphics/Color.h
+++ b/WebCore/platform/graphics/Color.h
@@ -27,6 +27,7 @@
 #define Color_h
 
 #include <wtf/FastAllocBase.h>
+#include <wtf/Forward.h>
 #include <wtf/unicode/Unicode.h>
 
 #if PLATFORM(CG)
@@ -55,7 +56,6 @@ struct rgb_color;
 namespace WebCore {
 
 class Color;
-class String;
 
 typedef unsigned RGBA32;        // RGBA quadruplet
 
diff --git a/WebCore/platform/graphics/FontCache.h b/WebCore/platform/graphics/FontCache.h
index 1a3ba69..e6845d9 100644
--- a/WebCore/platform/graphics/FontCache.h
+++ b/WebCore/platform/graphics/FontCache.h
@@ -31,6 +31,7 @@
 #define FontCache_h
 
 #include <limits.h>
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 #include <wtf/unicode/Unicode.h>
 
@@ -42,7 +43,6 @@
 namespace WebCore
 {
 
-class AtomicString;
 class Font;
 class FontPlatformData;
 class FontData;
diff --git a/WebCore/platform/graphics/FontData.h b/WebCore/platform/graphics/FontData.h
index 76927f5..ee94a98 100644
--- a/WebCore/platform/graphics/FontData.h
+++ b/WebCore/platform/graphics/FontData.h
@@ -26,13 +26,13 @@
 #ifndef FontData_h
 #define FontData_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WebCore {
 
 class SimpleFontData;
-class String;
 
 class FontData : public Noncopyable {
 public:
diff --git a/WebCore/platform/graphics/FontSelector.h b/WebCore/platform/graphics/FontSelector.h
index 9b520b9..156bf10 100644
--- a/WebCore/platform/graphics/FontSelector.h
+++ b/WebCore/platform/graphics/FontSelector.h
@@ -26,11 +26,11 @@
 #ifndef FontSelector_h
 #define FontSelector_h
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-class AtomicString;
 class FontData;
 class FontDescription;
 
diff --git a/WebCore/platform/graphics/GraphicsLayer.cpp b/WebCore/platform/graphics/GraphicsLayer.cpp
index c1e2ed6..5003907 100644
--- a/WebCore/platform/graphics/GraphicsLayer.cpp
+++ b/WebCore/platform/graphics/GraphicsLayer.cpp
@@ -526,7 +526,7 @@ void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer)
     if (!layer)
         return;
 
-    WebCore::String output = layer->layerTreeAsText(LayerTreeAsTextDebug);
+    WTF::String output = layer->layerTreeAsText(LayerTreeAsTextDebug);
     fprintf(stderr, "%s\n", output.utf8().data());
 }
 #endif
diff --git a/WebCore/platform/graphics/GraphicsTypes.h b/WebCore/platform/graphics/GraphicsTypes.h
index 769207a..1e73f25 100644
--- a/WebCore/platform/graphics/GraphicsTypes.h
+++ b/WebCore/platform/graphics/GraphicsTypes.h
@@ -26,9 +26,9 @@
 #ifndef GraphicsTypes_h
 #define GraphicsTypes_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-    class String;
+namespace WebCore {
 
     // Note: These constants exactly match the NSCompositeOperator constants of
     // AppKit on Mac OS X Tiger. If these ever change, we'll need to change the
diff --git a/WebCore/platform/graphics/Icon.h b/WebCore/platform/graphics/Icon.h
index 3390679..c83685f 100644
--- a/WebCore/platform/graphics/Icon.h
+++ b/WebCore/platform/graphics/Icon.h
@@ -49,7 +49,6 @@ namespace WebCore {
 
 class GraphicsContext;
 class IntRect;
-class String;
     
 class Icon : public RefCounted<Icon> {
 public:
diff --git a/WebCore/platform/graphics/ImageBuffer.h b/WebCore/platform/graphics/ImageBuffer.h
index cb5d63f..a54c721 100644
--- a/WebCore/platform/graphics/ImageBuffer.h
+++ b/WebCore/platform/graphics/ImageBuffer.h
@@ -32,6 +32,7 @@
 #include "Image.h"
 #include "IntSize.h"
 #include "ImageBufferData.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -42,7 +43,6 @@ namespace WebCore {
     class ImageData;
     class IntPoint;
     class IntRect;
-    class String;
     
     enum ImageColorSpace {
         Unknown,
diff --git a/WebCore/platform/graphics/ImageSource.h b/WebCore/platform/graphics/ImageSource.h
index 5f0cc26..b7efb99 100644
--- a/WebCore/platform/graphics/ImageSource.h
+++ b/WebCore/platform/graphics/ImageSource.h
@@ -27,6 +27,7 @@
 #ifndef ImageSource_h
 #define ImageSource_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
 
@@ -60,7 +61,6 @@ namespace WebCore {
 class IntPoint;
 class IntSize;
 class SharedBuffer;
-class String;
 
 #if PLATFORM(CG)
 typedef CGImageSourceRef NativeImageSourcePtr;
diff --git a/WebCore/platform/graphics/MediaPlayer.h b/WebCore/platform/graphics/MediaPlayer.h
index be4f672..9277671 100644
--- a/WebCore/platform/graphics/MediaPlayer.h
+++ b/WebCore/platform/graphics/MediaPlayer.h
@@ -35,6 +35,7 @@
 #include "Document.h"
 #include "IntRect.h"
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashSet.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/Noncopyable.h>
@@ -88,7 +89,6 @@ class GraphicsContext;
 class IntRect;
 class IntSize;
 class MediaPlayer;
-class String;
 class TimeRanges;
 
 class MediaPlayerClient {
diff --git a/WebCore/platform/graphics/MediaPlayerPrivate.h b/WebCore/platform/graphics/MediaPlayerPrivate.h
index 37e3ced..a8d9b86 100644
--- a/WebCore/platform/graphics/MediaPlayerPrivate.h
+++ b/WebCore/platform/graphics/MediaPlayerPrivate.h
@@ -29,12 +29,12 @@
 #if ENABLE(VIDEO)
 
 #include "MediaPlayer.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class IntRect;
 class IntSize;
-class String;
 
 class MediaPlayerPrivateInterface : public Noncopyable {
 public:
diff --git a/WebCore/platform/graphics/Path.h b/WebCore/platform/graphics/Path.h
index 86b77f8..43ba889 100644
--- a/WebCore/platform/graphics/Path.h
+++ b/WebCore/platform/graphics/Path.h
@@ -30,6 +30,7 @@
 
 #include <algorithm>
 #include <wtf/FastAllocBase.h>
+#include <wtf/Forward.h>
 
 #if PLATFORM(CG)
 typedef struct CGPath PlatformPath;
@@ -78,7 +79,6 @@ namespace WebCore {
     class FloatRect;
     class FloatSize;
     class GraphicsContext;
-    class String;
     class StrokeStyleApplier;
 
     enum WindRule {
diff --git a/WebCore/platform/graphics/StringTruncator.h b/WebCore/platform/graphics/StringTruncator.h
index 0a8532b..6791d38 100644
--- a/WebCore/platform/graphics/StringTruncator.h
+++ b/WebCore/platform/graphics/StringTruncator.h
@@ -29,10 +29,11 @@
 #ifndef StringTruncator_h
 #define StringTruncator_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
     
     class Font;
-    class String;
     
     class StringTruncator {
     public:
diff --git a/WebCore/platform/graphics/cairo/FontCustomPlatformData.h b/WebCore/platform/graphics/cairo/FontCustomPlatformData.h
index 2816427..a72a6a4 100644
--- a/WebCore/platform/graphics/cairo/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/cairo/FontCustomPlatformData.h
@@ -22,6 +22,7 @@
 #define FontCustomPlatformData_h
 
 #include "FontRenderingMode.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 typedef struct _cairo_font_face cairo_font_face_t;
@@ -30,7 +31,6 @@ namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformData : Noncopyable {
     FontCustomPlatformData(cairo_font_face_t* fontFace)
diff --git a/WebCore/platform/graphics/cairo/FontPlatformData.h b/WebCore/platform/graphics/cairo/FontPlatformData.h
index d271f5b..fc6b9f1 100644
--- a/WebCore/platform/graphics/cairo/FontPlatformData.h
+++ b/WebCore/platform/graphics/cairo/FontPlatformData.h
@@ -28,6 +28,7 @@
 #ifndef FontPlatformData_h
 #define FontPlatformData_h
 
+#include <wtf/Forward.h>
 #include <cairo.h>
 #include "FontDescription.h"
 #include "GlyphBuffer.h"
@@ -50,8 +51,6 @@ typedef struct HFONT__* HFONT;
 #endif
 namespace WebCore {
 
-class String;
-
 class FontPlatformData {
 public:
     FontPlatformData(WTF::HashTableDeletedValueType)
diff --git a/WebCore/platform/graphics/cg/FontPlatformData.h b/WebCore/platform/graphics/cg/FontPlatformData.h
index 1da8916..b261f87 100644
--- a/WebCore/platform/graphics/cg/FontPlatformData.h
+++ b/WebCore/platform/graphics/cg/FontPlatformData.h
@@ -26,6 +26,7 @@
 
 #include "RefCountedGDIHandle.h"
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RetainPtr.h>
@@ -36,7 +37,6 @@ typedef struct CGFont* CGFontRef;
 namespace WebCore {
 
 class FontDescription;
-class String;
 
 class FontPlatformData {
 public:
diff --git a/WebCore/platform/graphics/cg/ImageSourceCG.h b/WebCore/platform/graphics/cg/ImageSourceCG.h
index 76b4160..bff8162 100644
--- a/WebCore/platform/graphics/cg/ImageSourceCG.h
+++ b/WebCore/platform/graphics/cg/ImageSourceCG.h
@@ -27,11 +27,10 @@
 #define ImageSourceCG_h
 
 #include "ImageSource.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class String;
-
 String preferredExtensionForImageSourceType(const String& type);
 
 String MIMETypeForImageSourceType(const String& type);
diff --git a/WebCore/platform/graphics/chromium/FontCustomPlatformData.h b/WebCore/platform/graphics/chromium/FontCustomPlatformData.h
index 03e1b8c..d451c9c 100644
--- a/WebCore/platform/graphics/chromium/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/chromium/FontCustomPlatformData.h
@@ -33,6 +33,7 @@
 #define FontCustomPlatformData_h
 
 #include "FontRenderingMode.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 #if OS(WINDOWS)
@@ -46,7 +47,6 @@ namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformData : Noncopyable {
 #if OS(WINDOWS)
diff --git a/WebCore/platform/graphics/chromium/FontPlatformDataChromiumWin.h b/WebCore/platform/graphics/chromium/FontPlatformDataChromiumWin.h
index 40e7bcf..1d6cc8e 100644
--- a/WebCore/platform/graphics/chromium/FontPlatformDataChromiumWin.h
+++ b/WebCore/platform/graphics/chromium/FontPlatformDataChromiumWin.h
@@ -35,6 +35,7 @@
 #include "config.h"
 
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 
@@ -45,7 +46,6 @@ typedef struct HFONT__ *HFONT;
 namespace WebCore {
 
 class FontDescription;
-class String;
 
 class FontPlatformData {
 public:
diff --git a/WebCore/platform/graphics/chromium/FontPlatformDataLinux.h b/WebCore/platform/graphics/chromium/FontPlatformDataLinux.h
index e2abe2e..de12832 100644
--- a/WebCore/platform/graphics/chromium/FontPlatformDataLinux.h
+++ b/WebCore/platform/graphics/chromium/FontPlatformDataLinux.h
@@ -33,6 +33,7 @@
 
 #include "FontRenderStyle.h"
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include <wtf/text/CString.h>
 #include <SkPaint.h>
@@ -45,7 +46,6 @@ struct HB_FaceRec_;
 namespace WebCore {
 
 class FontDescription;
-class String;
 
 // -----------------------------------------------------------------------------
 // FontPlatformData is the handle which WebKit has on a specific face. A face
diff --git a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
index d65bdbc..f2f684b 100644
--- a/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
+++ b/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h
@@ -25,6 +25,7 @@
 
 #if ENABLE(VIDEO)
 
+#include <wtf/Forward.h>
 #include "MediaPlayerPrivate.h"
 #include "Timer.h"
 
@@ -42,7 +43,6 @@ namespace WebCore {
 class GraphicsContext;
 class IntSize;
 class IntRect;
-class String;
 class GStreamerGWorld;
 
 gboolean mediaPlayerPrivateMessageCallback(GstBus* bus, GstMessage* message, gpointer data);
diff --git a/WebCore/platform/graphics/haiku/FontCustomPlatformData.h b/WebCore/platform/graphics/haiku/FontCustomPlatformData.h
index 9db6cc6..a7dfe37 100644
--- a/WebCore/platform/graphics/haiku/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/haiku/FontCustomPlatformData.h
@@ -22,13 +22,13 @@
 #define FontCustomPlatformData_h
 
 #include "FontRenderingMode.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
     class FontPlatformData;
     class SharedBuffer;
-    class String;
 
     struct FontCustomPlatformData : Noncopyable {
     public:
diff --git a/WebCore/platform/graphics/mac/FontCustomPlatformData.h b/WebCore/platform/graphics/mac/FontCustomPlatformData.h
index f2cd2cc..90440d5 100644
--- a/WebCore/platform/graphics/mac/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/mac/FontCustomPlatformData.h
@@ -23,6 +23,7 @@
 
 #include "FontRenderingMode.h"
 #include <CoreFoundation/CFBase.h>
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 typedef struct CGFont* CGFontRef;
@@ -33,7 +34,6 @@ namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformData : Noncopyable {
     FontCustomPlatformData(ATSFontContainerRef container, ATSFontRef atsFont, CGFontRef cgFont)
diff --git a/WebCore/platform/graphics/mac/FontPlatformData.h b/WebCore/platform/graphics/mac/FontPlatformData.h
index 96c6efd..07ae4f8 100644
--- a/WebCore/platform/graphics/mac/FontPlatformData.h
+++ b/WebCore/platform/graphics/mac/FontPlatformData.h
@@ -39,14 +39,13 @@ typedef const struct __CTFont* CTFontRef;
 
 #include <CoreFoundation/CFBase.h>
 #include <objc/objc-auto.h>
+#include <wtf/Forward.h>
 #include <wtf/RetainPtr.h>
 
 typedef UInt32 ATSUFontID;
 
 namespace WebCore {
 
-class String;
-
 #ifndef BUILDING_ON_TIGER
 inline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast<CTFontRef>(nsFont); }
 #endif
diff --git a/WebCore/platform/graphics/qt/FontCustomPlatformData.h b/WebCore/platform/graphics/qt/FontCustomPlatformData.h
index 6837059..019a6bc 100644
--- a/WebCore/platform/graphics/qt/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/qt/FontCustomPlatformData.h
@@ -23,13 +23,13 @@
 #define FontCustomPlatformData_h
 
 #include "FontRenderingMode.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformData : Noncopyable {
     ~FontCustomPlatformData();
diff --git a/WebCore/platform/graphics/qt/FontPlatformData.h b/WebCore/platform/graphics/qt/FontPlatformData.h
index 9355142..79daa6b 100644
--- a/WebCore/platform/graphics/qt/FontPlatformData.h
+++ b/WebCore/platform/graphics/qt/FontPlatformData.h
@@ -24,13 +24,13 @@
 #ifndef FontPlatformData_h
 #define FontPlatformData_h
 
+#include <wtf/Forward.h>
 #include "FontDescription.h"
 #include <QFont>
 #include <QHash>
 
 namespace WebCore {
 
-class String;
 class FontPlatformDataPrivate : public Noncopyable {
 public:
     FontPlatformDataPrivate()
diff --git a/WebCore/platform/graphics/win/FontCustomPlatformData.h b/WebCore/platform/graphics/win/FontCustomPlatformData.h
index 46ddbb5..d19a8a5 100644
--- a/WebCore/platform/graphics/win/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/win/FontCustomPlatformData.h
@@ -23,6 +23,7 @@
 
 #include "FontRenderingMode.h"
 #include "PlatformString.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 typedef struct CGFont* CGFontRef;
@@ -31,7 +32,6 @@ namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformData : Noncopyable {
     FontCustomPlatformData(HANDLE fontReference, const String& name)
diff --git a/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.h b/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.h
index 75fe3d1..2dbea51 100644
--- a/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.h
+++ b/WebCore/platform/graphics/win/FontCustomPlatformDataCairo.h
@@ -21,6 +21,7 @@
 #ifndef FontCustomPlatformDataCairo_h
 #define FontCustomPlatformDataCairo_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 #include <cairo.h>
@@ -29,7 +30,6 @@ namespace WebCore {
 
 class FontPlatformData;
 class SharedBuffer;
-class String;
 
 struct FontCustomPlatformDataCairo : Noncopyable {
     FontCustomPlatformDataCairo(cairo_font_face_t* fontFace)
diff --git a/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h b/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h
index 7bf796c..9c449dd 100644
--- a/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h
+++ b/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeVisualContext.h
@@ -31,6 +31,7 @@
 #include "GraphicsLayer.h"
 #include "MediaPlayerPrivate.h"
 #include "Timer.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/RetainPtr.h>
 
@@ -47,7 +48,6 @@ namespace WebCore {
 class GraphicsContext;
 class IntSize;
 class IntRect;
-class String;
 
 #if USE(ACCELERATED_COMPOSITING)
 class WKCAImageQueue;
diff --git a/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h b/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h
index ecdb9da..ab9b1f0 100644
--- a/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h
+++ b/WebCore/platform/graphics/win/MediaPlayerPrivateQuickTimeWin.h
@@ -32,6 +32,7 @@
 #include "Timer.h"
 #include <QTMovie.h>
 #include <QTMovieGWorld.h>
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/RetainPtr.h>
 
@@ -50,7 +51,6 @@ namespace WebCore {
 class GraphicsContext;
 class IntSize;
 class IntRect;
-class String;
 
 class MediaPlayerPrivate : public MediaPlayerPrivateInterface, public QTMovieClient, public QTMovieGWorldClient 
 #if USE(ACCELERATED_COMPOSITING)
diff --git a/WebCore/platform/graphics/wince/FontPlatformData.h b/WebCore/platform/graphics/wince/FontPlatformData.h
index bb49f75..0b973b8 100644
--- a/WebCore/platform/graphics/wince/FontPlatformData.h
+++ b/WebCore/platform/graphics/wince/FontPlatformData.h
@@ -27,6 +27,7 @@
 
 #include "FontDescription.h"
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 typedef struct tagTEXTMETRICW TEXTMETRIC;
@@ -35,7 +36,6 @@ typedef struct tagLOGFONTW LOGFONT;
 namespace WebCore {
 
     class FontPlatformPrivateData;
-    class String;
 
     class FontPlatformData {
 
diff --git a/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h b/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h
index a657e3e..e86b8a9 100644
--- a/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h
+++ b/WebCore/platform/graphics/wince/MediaPlayerPrivateWince.h
@@ -29,6 +29,7 @@
 
 #if ENABLE(VIDEO)
 
+#include <wtf/Forward.h>
 #include "MediaPlayerPrivate.h"
 #include "Timer.h"
 #include <wtf/OwnPtr.h>
@@ -38,7 +39,6 @@ namespace WebCore {
     class GraphicsContext;
     class IntSize;
     class IntRect;
-    class String;
 
     class MediaPlayerPrivate : public MediaPlayerPrivateInterface {
     public:
diff --git a/WebCore/platform/graphics/wince/MediaPlayerProxy.h b/WebCore/platform/graphics/wince/MediaPlayerProxy.h
index 05f9b21..b02e0f4 100644
--- a/WebCore/platform/graphics/wince/MediaPlayerProxy.h
+++ b/WebCore/platform/graphics/wince/MediaPlayerProxy.h
@@ -23,13 +23,13 @@
 
 #if ENABLE(VIDEO)
 
+#include <wtf/Forward.h>
 #include "ScriptInstance.h"
 
 namespace WebCore {
 
     class IntRect;
     class IntSize;
-    class String;
     class MediaPlayer;
     class PluginView;
     class HTMLMediaElement;
diff --git a/WebCore/platform/graphics/wx/FontCustomPlatformData.h b/WebCore/platform/graphics/wx/FontCustomPlatformData.h
index 9db6cc6..a7dfe37 100644
--- a/WebCore/platform/graphics/wx/FontCustomPlatformData.h
+++ b/WebCore/platform/graphics/wx/FontCustomPlatformData.h
@@ -22,13 +22,13 @@
 #define FontCustomPlatformData_h
 
 #include "FontRenderingMode.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 namespace WebCore {
 
     class FontPlatformData;
     class SharedBuffer;
-    class String;
 
     struct FontCustomPlatformData : Noncopyable {
     public:
diff --git a/WebCore/platform/graphics/wx/FontPlatformData.h b/WebCore/platform/graphics/wx/FontPlatformData.h
index db74821..4f8d740 100644
--- a/WebCore/platform/graphics/wx/FontPlatformData.h
+++ b/WebCore/platform/graphics/wx/FontPlatformData.h
@@ -32,6 +32,7 @@
 #include "FontDescription.h"
 #include "AtomicString.h"
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include <wtf/text/CString.h>
 
@@ -56,8 +57,6 @@ inline CTFontRef toCTFontRef(NSFont *nsFont) { return reinterpret_cast<CTFontRef
 
 namespace WebCore {
 
-class String;
-
 class FontHolder: public WTF::RefCounted<FontHolder>
 {
 public:
diff --git a/WebCore/platform/mac/PasteboardHelper.h b/WebCore/platform/mac/PasteboardHelper.h
index 0e241bb..7bd62e5 100644
--- a/WebCore/platform/mac/PasteboardHelper.h
+++ b/WebCore/platform/mac/PasteboardHelper.h
@@ -42,7 +42,6 @@ class DOMDocumentFragment;
 
 namespace WebCore {
 
-    class String;
     class Document;
     
     class PasteboardHelper {
diff --git a/WebCore/platform/network/DNS.h b/WebCore/platform/network/DNS.h
index 1eeec3c..21d9c80 100644
--- a/WebCore/platform/network/DNS.h
+++ b/WebCore/platform/network/DNS.h
@@ -26,9 +26,9 @@
 #ifndef DNS_h
 #define DNS_h
 
-namespace WebCore {
+#include <wtf/Forward.h>
 
-    class String;
+namespace WebCore {
 
 #if !USE(SOUP)
     void prefetchDNS(const String& hostname);
diff --git a/WebCore/platform/network/FormData.h b/WebCore/platform/network/FormData.h
index fdb27f2..a1964e3 100644
--- a/WebCore/platform/network/FormData.h
+++ b/WebCore/platform/network/FormData.h
@@ -21,6 +21,7 @@
 #define FormData_h
 
 #include "PlatformString.h"
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
@@ -87,7 +88,7 @@ class FormData : public RefCounted<FormData> {
 public:
     static PassRefPtr<FormData> create();
     static PassRefPtr<FormData> create(const void*, size_t);
-    static PassRefPtr<FormData> create(const WTF::CString&);
+    static PassRefPtr<FormData> create(const CString&);
     static PassRefPtr<FormData> create(const Vector<char>&);
     static PassRefPtr<FormData> create(const BlobItemList&, const TextEncoding&);
     static PassRefPtr<FormData> createMultiPart(const BlobItemList&, const TextEncoding&, Document*);
diff --git a/WebCore/platform/network/FormDataBuilder.h b/WebCore/platform/network/FormDataBuilder.h
index 26b90af..87d0ef3 100644
--- a/WebCore/platform/network/FormDataBuilder.h
+++ b/WebCore/platform/network/FormDataBuilder.h
@@ -22,13 +22,9 @@
 #define FormDataBuilder_h
 
 #include "PlatformString.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
-namespace WTF {
-class CString;
-}
-using WTF::CString;
-
 namespace WebCore {
 
 class Document;
@@ -40,15 +36,15 @@ public:
 
     // Helper functions used by HTMLFormElement/WMLGoElement for multi-part form data
     static Vector<char> generateUniqueBoundaryString();
-    static void beginMultiPartHeader(Vector<char>&, const WTF::CString& boundary, const WTF::CString& name);
-    static void addBoundaryToMultiPartHeader(Vector<char>&, const WTF::CString& boundary, bool isLastBoundary = false);
+    static void beginMultiPartHeader(Vector<char>&, const CString& boundary, const CString& name);
+    static void addBoundaryToMultiPartHeader(Vector<char>&, const CString& boundary, bool isLastBoundary = false);
     static void addFilenameToMultiPartHeader(Vector<char>&, const TextEncoding&, const String& filename);
-    static void addContentTypeToMultiPartHeader(Vector<char>&, const WTF::CString& mimeType);
+    static void addContentTypeToMultiPartHeader(Vector<char>&, const CString& mimeType);
     static void finishMultiPartHeader(Vector<char>&);
 
     // Helper functions used by HTMLFormElement/WMLGoElement for non multi-part form data
-    static void addKeyValuePairAsFormData(Vector<char>&, const WTF::CString& key, const WTF::CString& value);
-    static void encodeStringAsFormData(Vector<char>&, const WTF::CString&);
+    static void addKeyValuePairAsFormData(Vector<char>&, const CString& key, const CString& value);
+    static void encodeStringAsFormData(Vector<char>&, const CString&);
 
 private:
     FormDataBuilder() {}
diff --git a/WebCore/platform/network/HTTPParsers.h b/WebCore/platform/network/HTTPParsers.h
index bb2a9e5..9d6971b 100644
--- a/WebCore/platform/network/HTTPParsers.h
+++ b/WebCore/platform/network/HTTPParsers.h
@@ -30,9 +30,10 @@
 #ifndef HTTPParsers_h
 #define HTTPParsers_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
-class String;
 class ResourceResponseBase;
 
 enum XSSProtectionDisposition {
diff --git a/WebCore/platform/network/qt/QNetworkReplyHandler.cpp b/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
index fd172e0..915dc9a 100644
--- a/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
+++ b/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
@@ -294,9 +294,9 @@ void QNetworkReplyHandler::sendResponseIfNeeded()
     if (!client)
         return;
 
-    WebCore::String contentType = m_reply->header(QNetworkRequest::ContentTypeHeader).toString();
-    WebCore::String encoding = extractCharsetFromMediaType(contentType);
-    WebCore::String mimeType = extractMIMETypeFromMediaType(contentType);
+    WTF::String contentType = m_reply->header(QNetworkRequest::ContentTypeHeader).toString();
+    WTF::String encoding = extractCharsetFromMediaType(contentType);
+    WTF::String mimeType = extractMIMETypeFromMediaType(contentType);
 
     if (mimeType.isEmpty()) {
         // let's try to guess from the extension
diff --git a/WebCore/platform/text/AtomicStringHash.h b/WebCore/platform/text/AtomicStringHash.h
index 67a45de..d13332b 100644
--- a/WebCore/platform/text/AtomicStringHash.h
+++ b/WebCore/platform/text/AtomicStringHash.h
@@ -53,10 +53,10 @@ namespace WebCore {
 namespace WTF {
 
     // WebCore::AtomicStringHash is the default hash for AtomicString
-    template<> struct HashTraits<WebCore::AtomicString> : GenericHashTraits<WebCore::AtomicString> {
+    template<> struct HashTraits<WTF::AtomicString> : GenericHashTraits<WTF::AtomicString> {
         static const bool emptyValueIsZero = true;
-        static void constructDeletedValue(WebCore::AtomicString& slot) { new (&slot) WebCore::AtomicString(HashTableDeletedValue); }
-        static bool isDeletedValue(const WebCore::AtomicString& slot) { return slot.isHashTableDeletedValue(); }
+        static void constructDeletedValue(WTF::AtomicString& slot) { new (&slot) WTF::AtomicString(HashTableDeletedValue); }
+        static bool isDeletedValue(const WTF::AtomicString& slot) { return slot.isHashTableDeletedValue(); }
     };
 
 }
diff --git a/WebCore/platform/text/Hyphenation.h b/WebCore/platform/text/Hyphenation.h
index 4ef852b..a99bff0 100644
--- a/WebCore/platform/text/Hyphenation.h
+++ b/WebCore/platform/text/Hyphenation.h
@@ -26,12 +26,11 @@
 #ifndef Hyphenation_h
 #define Hyphenation_h
 
+#include <wtf/Forward.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WebCore {
 
-class AtomicString;
-
 bool canHyphenate(const AtomicString& localeIdentifier);
 size_t lastHyphenLocation(const UChar*, size_t length, size_t beforeIndex, const AtomicString& localeIdentifier);
 
diff --git a/WebCore/platform/text/LineEnding.h b/WebCore/platform/text/LineEnding.h
index 9c3e2aa..ab8d6ee 100644
--- a/WebCore/platform/text/LineEnding.h
+++ b/WebCore/platform/text/LineEnding.h
@@ -32,6 +32,8 @@
 #ifndef LineEnding_h
 #define LineEnding_h
 
+#include <wtf/Forward.h>
+
 namespace WTF {
 class CString;
 }
diff --git a/WebCore/platform/text/StringBuffer.h b/WebCore/platform/text/StringBuffer.h
index 353a44a..3a753b4 100644
--- a/WebCore/platform/text/StringBuffer.h
+++ b/WebCore/platform/text/StringBuffer.h
@@ -26,52 +26,10 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef StringBuffer_h
-#define StringBuffer_h
+#ifndef WebCoreStringBuffer_h
+#define WebCoreStringBuffer_h
 
-#include <wtf/Assertions.h>
-#include <wtf/Noncopyable.h>
-#include <wtf/unicode/Unicode.h>
+// FIXME: remove this header, use the forward from wtf directly.
+#include <wtf/text/StringBuffer.h>
 
-namespace WebCore {
-
-class StringBuffer : public Noncopyable {
-public:
-    explicit StringBuffer(unsigned length)
-        : m_length(length)
-        , m_data(static_cast<UChar*>(fastMalloc(length * sizeof(UChar))))
-    {
-    }
-    ~StringBuffer()
-    {
-        fastFree(m_data);
-    }
-
-    void shrink(unsigned newLength)
-    {
-        ASSERT(newLength <= m_length);
-        m_length = newLength;
-    }
-
-    void resize(unsigned newLength)
-    {
-        if (newLength > m_length)
-            m_data = static_cast<UChar*>(fastRealloc(m_data, newLength * sizeof(UChar)));
-        m_length = newLength;
-    }
-
-    unsigned length() const { return m_length; }
-    UChar* characters() { return m_data; }
-
-    UChar& operator[](unsigned i) { ASSERT(i < m_length); return m_data[i]; }
-
-    UChar* release() { UChar* data = m_data; m_data = 0; return data; }
-
-private:
-    unsigned m_length;
-    UChar* m_data;
-};
-
-}
-
-#endif
+#endif // StringBuffer_h
diff --git a/WebCore/platform/text/TextCodec.h b/WebCore/platform/text/TextCodec.h
index 591e3a6..c6af38a 100644
--- a/WebCore/platform/text/TextCodec.h
+++ b/WebCore/platform/text/TextCodec.h
@@ -28,6 +28,7 @@
 #define TextCodec_h
 
 #include <memory>
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/Vector.h>
@@ -67,7 +68,7 @@ namespace WebCore {
         }
         
         virtual String decode(const char*, size_t length, bool flush, bool stopOnError, bool& sawError) = 0;
-        virtual WTF::CString encode(const UChar*, size_t length, UnencodableHandling) = 0;
+        virtual CString encode(const UChar*, size_t length, UnencodableHandling) = 0;
 
         // Fills a null-terminated string representation of the given
         // unencodable character into the given replacement buffer. 
diff --git a/WebCore/platform/text/TextEncoding.h b/WebCore/platform/text/TextEncoding.h
index 3429bb5..675625b 100644
--- a/WebCore/platform/text/TextEncoding.h
+++ b/WebCore/platform/text/TextEncoding.h
@@ -27,17 +27,11 @@
 #define TextEncoding_h
 
 #include "TextCodec.h"
+#include <wtf/Forward.h>
 #include <wtf/unicode/Unicode.h>
 
-namespace WTF {
-class CString;
-}
-using WTF::CString;
-
 namespace WebCore {
 
-    class String;
-
     class TextEncoding {
     public:
         TextEncoding() : m_name(0) { }
@@ -75,7 +69,7 @@ namespace WebCore {
             return decode(str, length, false, ignored);
         }
         String decode(const char*, size_t length, bool stopOnError, bool& sawError) const;
-        WTF::CString encode(const UChar*, size_t length, UnencodableHandling) const;
+        CString encode(const UChar*, size_t length, UnencodableHandling) const;
 
         UChar backslashAsCurrencySymbol() const;
 
diff --git a/WebCore/platform/text/TextStream.h b/WebCore/platform/text/TextStream.h
index f5e512c..e7e4cc0 100644
--- a/WebCore/platform/text/TextStream.h
+++ b/WebCore/platform/text/TextStream.h
@@ -26,13 +26,12 @@
 #ifndef TextStream_h
 #define TextStream_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 #include <wtf/unicode/Unicode.h>
 
 namespace WebCore {
 
-class String;
-
 class TextStream {
 public:
     TextStream& operator<<(bool);
diff --git a/WebCore/platform/text/cf/StringCF.cpp b/WebCore/platform/text/cf/StringCF.cpp
index 97691e5..dcaf8fb 100644
--- a/WebCore/platform/text/cf/StringCF.cpp
+++ b/WebCore/platform/text/cf/StringCF.cpp
@@ -25,7 +25,7 @@
 
 #include <CoreFoundation/CoreFoundation.h>
 
-namespace WebCore {
+namespace WTF {
 
 String::String(CFStringRef str)
 {
diff --git a/WebCore/platform/text/cf/StringImplCF.cpp b/WebCore/platform/text/cf/StringImplCF.cpp
index aff45b3..18e137f 100644
--- a/WebCore/platform/text/cf/StringImplCF.cpp
+++ b/WebCore/platform/text/cf/StringImplCF.cpp
@@ -32,7 +32,7 @@
 #include <objc/objc-auto.h>
 #endif
 
-namespace WebCore {
+namespace WTF {
 
 namespace StringWrapperCFAllocator {
 
@@ -50,7 +50,7 @@ namespace StringWrapperCFAllocator {
 
     static CFStringRef copyDescription(const void*)
     {
-        return CFSTR("WebCore::String-based allocator");
+        return CFSTR("WTF::String-based allocator");
     }
 
     static void* allocate(CFIndex size, CFOptionFlags, void*)
diff --git a/WebCore/platform/text/haiku/StringHaiku.cpp b/WebCore/platform/text/haiku/StringHaiku.cpp
index 7436ce2..96d6676 100644
--- a/WebCore/platform/text/haiku/StringHaiku.cpp
+++ b/WebCore/platform/text/haiku/StringHaiku.cpp
@@ -29,7 +29,7 @@
 
 #include <String.h>
 
-namespace WebCore {
+namespace WTF {
 
 // String conversions
 String::String(const BString& string)
diff --git a/WebCore/platform/text/mac/StringImplMac.mm b/WebCore/platform/text/mac/StringImplMac.mm
index d14c6d8..843f396 100644
--- a/WebCore/platform/text/mac/StringImplMac.mm
+++ b/WebCore/platform/text/mac/StringImplMac.mm
@@ -23,7 +23,7 @@
 
 #include "FoundationExtras.h"
 
-namespace WebCore {
+namespace WTF {
 
 StringImpl::operator NSString *()
 {
diff --git a/WebCore/platform/text/mac/StringMac.mm b/WebCore/platform/text/mac/StringMac.mm
index 758ae1d..7e98b2b 100644
--- a/WebCore/platform/text/mac/StringMac.mm
+++ b/WebCore/platform/text/mac/StringMac.mm
@@ -22,7 +22,7 @@
 #include "PlatformString.h"
 #include <CoreFoundation/CFString.h>
 
-namespace WebCore {
+namespace WTF {
 
 String::String(NSString* str)
 {
diff --git a/WebCore/platform/text/wx/StringWx.cpp b/WebCore/platform/text/wx/StringWx.cpp
index 5302a85..7302edc 100644
--- a/WebCore/platform/text/wx/StringWx.cpp
+++ b/WebCore/platform/text/wx/StringWx.cpp
@@ -32,7 +32,7 @@
 #include <wx/defs.h>
 #include <wx/string.h>
 
-namespace WebCore {
+namespace WTF {
 
 // String conversions
 String::String(const wxString& wxstr)
diff --git a/WebCore/platform/win/BString.h b/WebCore/platform/win/BString.h
index c32a49d..bdbf189 100644
--- a/WebCore/platform/win/BString.h
+++ b/WebCore/platform/win/BString.h
@@ -26,6 +26,8 @@
 #ifndef BString_h
 #define BString_h
 
+#include <wtf/Forward.h>
+
 #if PLATFORM(CF)
 typedef const struct __CFString * CFStringRef;
 #endif
@@ -38,9 +40,7 @@ namespace JSC {
 
 namespace WebCore {
 
-    class AtomicString;
     class KURL;
-    class String;
 
     class BString {
     public:
diff --git a/WebCore/platform/win/ClipboardUtilitiesWin.h b/WebCore/platform/win/ClipboardUtilitiesWin.h
index fe01499..1a29e7e 100644
--- a/WebCore/platform/win/ClipboardUtilitiesWin.h
+++ b/WebCore/platform/win/ClipboardUtilitiesWin.h
@@ -28,12 +28,12 @@
 
 #include "DragData.h"
 #include <windows.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class Document;
 class KURL;
-class String;
 
 HGLOBAL createGlobalData(const String&);
 HGLOBAL createGlobalData(const Vector<char>&);
diff --git a/WebCore/platform/win/WCDataObject.h b/WebCore/platform/win/WCDataObject.h
index bdfb013..133115d 100644
--- a/WebCore/platform/win/WCDataObject.h
+++ b/WebCore/platform/win/WCDataObject.h
@@ -26,14 +26,13 @@
 #ifndef WCDataObject_h
 #define WCDataObject_h
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 #include <ShlObj.h>
 #include <objidl.h>
 
 namespace WebCore {
 
-class String;
-
 class WCDataObject : public IDataObject {
 public:
     void CopyMedium(STGMEDIUM* pMedDest, STGMEDIUM* pMedSrc, FORMATETC* pFmtSrc);
diff --git a/WebCore/platform/win/WebCoreTextRenderer.h b/WebCore/platform/win/WebCoreTextRenderer.h
index 7b72946..7efc1f3 100644
--- a/WebCore/platform/win/WebCoreTextRenderer.h
+++ b/WebCore/platform/win/WebCoreTextRenderer.h
@@ -23,13 +23,14 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
     class Color;
     class Font;
     class GraphicsContext;
     class IntPoint;
-    class String;
 
     void WebCoreDrawTextAtPoint(GraphicsContext&, const String&, const IntPoint&, const Font&, const Color&, int underlinedIndex = -1);
     void WebCoreDrawDoubledTextAtPoint(GraphicsContext&, const String&, const IntPoint&, const Font&, const Color& topColor, const Color& bottomColor, int underlinedIndex = -1);
diff --git a/WebCore/platform/wx/ClipboardWx.cpp b/WebCore/platform/wx/ClipboardWx.cpp
index 25bef55..336881d 100644
--- a/WebCore/platform/wx/ClipboardWx.cpp
+++ b/WebCore/platform/wx/ClipboardWx.cpp
@@ -138,7 +138,7 @@ bool ClipboardWx::hasData()
     return false;
 }
 
-void ClipboardWx::writePlainText(const WebCore::String& text)
+void ClipboardWx::writePlainText(const WTF::String& text)
 {
     Pasteboard::generalPasteboard()->writePlainText(text);
 }
diff --git a/WebCore/platform/wx/ClipboardWx.h b/WebCore/platform/wx/ClipboardWx.h
index b0c520b..45d1cf3 100644
--- a/WebCore/platform/wx/ClipboardWx.h
+++ b/WebCore/platform/wx/ClipboardWx.h
@@ -59,7 +59,7 @@ namespace WebCore {
         virtual void declareAndWriteDragImage(Element*, const KURL&, const String& title, Frame*);
         virtual void writeURL(const KURL&, const String&, Frame*);
         virtual void writeRange(Range*, Frame*);
-        virtual void writePlainText(const WebCore::String&);
+        virtual void writePlainText(const WTF::String&);
 
 
         virtual bool hasData();
diff --git a/WebCore/plugins/DOMMimeType.h b/WebCore/plugins/DOMMimeType.h
index a010e33..cefdb48 100644
--- a/WebCore/plugins/DOMMimeType.h
+++ b/WebCore/plugins/DOMMimeType.h
@@ -20,6 +20,7 @@
 #ifndef DOMMimeType_h
 #define DOMMimeType_h
 
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 #include <wtf/RefCounted.h>
@@ -29,7 +30,6 @@
 namespace WebCore {
 
 class DOMPlugin;
-class String;
 
 class DOMMimeType : public RefCounted<DOMMimeType> {
 public:
diff --git a/WebCore/plugins/DOMMimeTypeArray.h b/WebCore/plugins/DOMMimeTypeArray.h
index 2ccbfa0..ed078bb 100644
--- a/WebCore/plugins/DOMMimeTypeArray.h
+++ b/WebCore/plugins/DOMMimeTypeArray.h
@@ -22,13 +22,13 @@
 #define DOMMimeTypeArray_h
 
 #include "DOMMimeType.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class AtomicString;
 class Frame;
 class PluginData;
 
diff --git a/WebCore/plugins/DOMPlugin.h b/WebCore/plugins/DOMPlugin.h
index f86234a..9700ab5 100644
--- a/WebCore/plugins/DOMPlugin.h
+++ b/WebCore/plugins/DOMPlugin.h
@@ -21,15 +21,14 @@
 #define DOMPlugin_h
 
 #include "DOMMimeType.h"
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-class AtomicString;
 class Plugin;
 class PluginData;
-class String;
 
 class DOMPlugin : public RefCounted<DOMPlugin> {
 public:
diff --git a/WebCore/plugins/DOMPluginArray.h b/WebCore/plugins/DOMPluginArray.h
index 0adb70a..cc70572 100644
--- a/WebCore/plugins/DOMPluginArray.h
+++ b/WebCore/plugins/DOMPluginArray.h
@@ -22,13 +22,13 @@
 #define DOMPluginArray_h
 
 #include "DOMPlugin.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class AtomicString;
 class Frame;
 class PluginData;
 
diff --git a/WebCore/rendering/CounterNode.h b/WebCore/rendering/CounterNode.h
index 15f2eb8..e35fb61 100644
--- a/WebCore/rendering/CounterNode.h
+++ b/WebCore/rendering/CounterNode.h
@@ -22,6 +22,7 @@
 #ifndef CounterNode_h
 #define CounterNode_h
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 
 // This implements a counter tree that is used for finding parents in counters() lookup,
@@ -35,7 +36,6 @@
 
 namespace WebCore {
 
-class AtomicString;
 class RenderObject;
 
 class CounterNode : public Noncopyable {
diff --git a/WebCore/rendering/HitTestResult.h b/WebCore/rendering/HitTestResult.h
index e0ffe54..3a42719 100644
--- a/WebCore/rendering/HitTestResult.h
+++ b/WebCore/rendering/HitTestResult.h
@@ -24,6 +24,7 @@
 #include "IntRect.h"
 #include "IntSize.h"
 #include "TextDirection.h"
+#include <wtf/Forward.h>
 #include <wtf/ListHashSet.h>
 #include <wtf/RefPtr.h>
 
@@ -36,7 +37,6 @@ class IntRect;
 class KURL;
 class Node;
 class Scrollbar;
-class String;
 
 class HitTestResult {
 public:
diff --git a/WebCore/rendering/RenderLayer.cpp b/WebCore/rendering/RenderLayer.cpp
index e12cb8b..668b1ca 100644
--- a/WebCore/rendering/RenderLayer.cpp
+++ b/WebCore/rendering/RenderLayer.cpp
@@ -3871,7 +3871,7 @@ void showLayerTree(const WebCore::RenderLayer* layer)
         return;
 
     if (WebCore::Frame* frame = layer->renderer()->frame()) {
-        WebCore::String output = externalRepresentation(frame, WebCore::RenderAsTextShowAllLayers | WebCore::RenderAsTextShowLayerNesting | WebCore::RenderAsTextShowCompositedLayers | WebCore::RenderAsTextShowAddresses | WebCore::RenderAsTextShowIDAndClass);
+        WTF::String output = externalRepresentation(frame, WebCore::RenderAsTextShowAllLayers | WebCore::RenderAsTextShowLayerNesting | WebCore::RenderAsTextShowCompositedLayers | WebCore::RenderAsTextShowAddresses | WebCore::RenderAsTextShowIDAndClass);
         fprintf(stderr, "%s\n", output.utf8().data());
     }
 }
diff --git a/WebCore/rendering/RenderObjectChildList.h b/WebCore/rendering/RenderObjectChildList.h
index ba73c50..8b80f37 100644
--- a/WebCore/rendering/RenderObjectChildList.h
+++ b/WebCore/rendering/RenderObjectChildList.h
@@ -27,10 +27,10 @@
 #define RenderObjectChildList_h
 
 #include "RenderStyleConstants.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class AtomicString;
 class RenderObject;
 
 class RenderObjectChildList {
diff --git a/WebCore/rendering/RenderText.h b/WebCore/rendering/RenderText.h
index 92c82e1..f46f053 100644
--- a/WebCore/rendering/RenderText.h
+++ b/WebCore/rendering/RenderText.h
@@ -24,11 +24,11 @@
 #define RenderText_h
 
 #include "RenderObject.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class InlineTextBox;
-class StringImpl;
 
 class RenderText : public RenderObject {
 public:
diff --git a/WebCore/rendering/RenderTreeAsText.h b/WebCore/rendering/RenderTreeAsText.h
index 645ccc0..722736b 100644
--- a/WebCore/rendering/RenderTreeAsText.h
+++ b/WebCore/rendering/RenderTreeAsText.h
@@ -26,12 +26,13 @@
 #ifndef RenderTreeAsText_h
 #define RenderTreeAsText_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class Element;
 class Frame;
 class RenderObject;
-class String;
 class TextStream;
 
 enum RenderAsTextBehaviorFlags {
diff --git a/WebCore/rendering/TextControlInnerElements.h b/WebCore/rendering/TextControlInnerElements.h
index 66aca9a..2859bd5 100644
--- a/WebCore/rendering/TextControlInnerElements.h
+++ b/WebCore/rendering/TextControlInnerElements.h
@@ -29,11 +29,11 @@
 
 #include "HTMLDivElement.h"
 #include "SpeechInputListener.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class SpeechInput;
-class String;
 
 class TextControlInnerElement : public HTMLDivElement {
 public:
diff --git a/WebCore/rendering/style/ContentData.h b/WebCore/rendering/style/ContentData.h
index 2c261f8..5c3565e 100644
--- a/WebCore/rendering/style/ContentData.h
+++ b/WebCore/rendering/style/ContentData.h
@@ -26,13 +26,13 @@
 #define ContentData_h
 
 #include "RenderStyleConstants.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
 class CounterContent;
-class StringImpl;
 class StyleImage;
 
 struct ContentData : Noncopyable {
diff --git a/WebCore/rendering/style/RenderStyle.h b/WebCore/rendering/style/RenderStyle.h
index ac82b1c..df1b341 100644
--- a/WebCore/rendering/style/RenderStyle.h
+++ b/WebCore/rendering/style/RenderStyle.h
@@ -73,6 +73,7 @@
 #include "ThemeTypes.h"
 #include "TimingFunction.h"
 #include "TransformOperations.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/StdLibExtras.h>
@@ -108,7 +109,6 @@ class CSSStyleSelector;
 class CSSValueList;
 class CachedImage;
 class Pair;
-class StringImpl;
 class StyleImage;
 
 typedef Vector<RefPtr<RenderStyle>, 4> PseudoStyleCache;
diff --git a/WebCore/storage/DatabaseAuthorizer.h b/WebCore/storage/DatabaseAuthorizer.h
index af6e016..66bc5d8 100644
--- a/WebCore/storage/DatabaseAuthorizer.h
+++ b/WebCore/storage/DatabaseAuthorizer.h
@@ -36,8 +36,6 @@
 
 namespace WebCore {
 
-class String;
-
 extern const int SQLAuthAllow;
 extern const int SQLAuthIgnore;
 extern const int SQLAuthDeny;
diff --git a/WebCore/storage/DatabaseTrackerClient.h b/WebCore/storage/DatabaseTrackerClient.h
index b43123c..2e0497f 100644
--- a/WebCore/storage/DatabaseTrackerClient.h
+++ b/WebCore/storage/DatabaseTrackerClient.h
@@ -30,10 +30,11 @@
 
 #if ENABLE(DATABASE)
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class SecurityOrigin;
-class String;
 
 class DatabaseTrackerClient {
 public:
diff --git a/WebCore/storage/SQLTransaction.h b/WebCore/storage/SQLTransaction.h
index 2eb200b..3eb1fd5 100644
--- a/WebCore/storage/SQLTransaction.h
+++ b/WebCore/storage/SQLTransaction.h
@@ -48,7 +48,6 @@ class SQLTransaction;
 class SQLTransactionCallback;
 class SQLTransactionErrorCallback;
 class SQLValue;
-class String;
 class VoidCallback;
 
 class SQLTransactionWrapper : public ThreadSafeShared<SQLTransactionWrapper> {
diff --git a/WebCore/storage/SQLTransactionSync.h b/WebCore/storage/SQLTransactionSync.h
index 025215b..e66c876 100644
--- a/WebCore/storage/SQLTransactionSync.h
+++ b/WebCore/storage/SQLTransactionSync.h
@@ -46,7 +46,6 @@ class SQLTransactionClient;
 class SQLTransactionSyncCallback;
 class SQLValue;
 class SQLiteTransaction;
-class String;
 
 // Instances of this class should be created and used only on the worker's context thread.
 class SQLTransactionSync : public RefCounted<SQLTransactionSync> {
diff --git a/WebCore/storage/Storage.h b/WebCore/storage/Storage.h
index 06cc97b..c81481a 100644
--- a/WebCore/storage/Storage.h
+++ b/WebCore/storage/Storage.h
@@ -36,7 +36,6 @@ namespace WebCore {
 
     class Frame;
     class StorageArea;
-    class String;
     typedef int ExceptionCode;
 
     class Storage : public RefCounted<Storage> {
diff --git a/WebCore/storage/chromium/DatabaseObserver.h b/WebCore/storage/chromium/DatabaseObserver.h
index 96b5972..deb8036 100644
--- a/WebCore/storage/chromium/DatabaseObserver.h
+++ b/WebCore/storage/chromium/DatabaseObserver.h
@@ -33,11 +33,12 @@
 
 #if ENABLE(DATABASE)
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 
 class AbstractDatabase;
 class ScriptExecutionContext;
-class String;
 
 // The implementation of this class is in the WebKit API (Chromium source tree)
 // in WebKit/chromium/src/DatabaseObserver.cpp.
diff --git a/WebCore/svg/SVGAnimatedTemplate.h b/WebCore/svg/SVGAnimatedTemplate.h
index 216882c..307c66a 100644
--- a/WebCore/svg/SVGAnimatedTemplate.h
+++ b/WebCore/svg/SVGAnimatedTemplate.h
@@ -23,6 +23,7 @@
 
 #if ENABLE(SVG)
 #include "SVGAnimatedPropertyTraits.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 
 namespace WebCore {
@@ -33,7 +34,6 @@ namespace WebCore {
     class SVGNumberList;
     class SVGPreserveAspectRatio;
     class SVGTransformList;
-    class String;
     class QualifiedName;
 
     struct SVGAnimatedTypeWrapperKey {            
diff --git a/WebCore/svg/SVGDocumentExtensions.h b/WebCore/svg/SVGDocumentExtensions.h
index e0f7170..ad2fb60 100644
--- a/WebCore/svg/SVGDocumentExtensions.h
+++ b/WebCore/svg/SVGDocumentExtensions.h
@@ -25,6 +25,7 @@
 #include "AtomicStringHash.h"
 #include "SVGResourcesCache.h"
 #include "StringImpl.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
 #include <wtf/PassOwnPtr.h>
@@ -33,7 +34,6 @@ namespace WebCore {
 
 class Document;
 class RenderSVGResourceContainer;
-class String;
 class SVGStyledElement;
 class SVGSMILElement;
 class SVGSVGElement;
diff --git a/WebCore/svg/SVGGlyphElement.h b/WebCore/svg/SVGGlyphElement.h
index ef6a715..5b5408d 100644
--- a/WebCore/svg/SVGGlyphElement.h
+++ b/WebCore/svg/SVGGlyphElement.h
@@ -24,13 +24,13 @@
 
 #if ENABLE(SVG_FONTS)
 #include "SVGStyledElement.h"
+#include <wtf/Forward.h>
 
 #include <limits>
 #include "Path.h"
 
 namespace WebCore {
 
-    class AtomicString;
     class SVGFontData;
 
     // Describe a SVG <glyph> element
diff --git a/WebCore/svg/SVGHKernElement.h b/WebCore/svg/SVGHKernElement.h
index fdc34be..bd893d8 100644
--- a/WebCore/svg/SVGHKernElement.h
+++ b/WebCore/svg/SVGHKernElement.h
@@ -26,12 +26,12 @@
 #include "SVGFontElement.h"
 #include "SVGParserUtilities.h"
 #include "SVGStyledElement.h"
+#include <wtf/Forward.h>
 
 #include <limits>
 
 namespace WebCore {
 
-    class AtomicString;
     class SVGFontData;
 
     class SVGHKernElement : public SVGElement {
diff --git a/WebCore/svg/SVGNumberList.h b/WebCore/svg/SVGNumberList.h
index 75e58dc..fa29356 100644
--- a/WebCore/svg/SVGNumberList.h
+++ b/WebCore/svg/SVGNumberList.h
@@ -23,12 +23,11 @@
 
 #if ENABLE(SVG)
 #include "SVGList.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
-    class String;
-
     class SVGNumberList : public SVGPODList<float> {
     public:
         static PassRefPtr<SVGNumberList> create(const QualifiedName& attributeName) { return adoptRef(new SVGNumberList(attributeName)); }
diff --git a/WebCore/svg/SVGPathSeg.h b/WebCore/svg/SVGPathSeg.h
index 5532d0f..0616e3a 100644
--- a/WebCore/svg/SVGPathSeg.h
+++ b/WebCore/svg/SVGPathSeg.h
@@ -22,6 +22,7 @@
 #define SVGPathSeg_h
 
 #if ENABLE(SVG)
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
@@ -49,7 +50,6 @@ enum SVGPathSegType {
     PathSegCurveToQuadraticSmoothRel = 19
 };
 
-class String;
 class SVGPathElement;
 class SVGStyledElement;
 class QualifiedName;
diff --git a/WebCore/svg/SVGPointList.h b/WebCore/svg/SVGPointList.h
index 649654f..853c7b1 100644
--- a/WebCore/svg/SVGPointList.h
+++ b/WebCore/svg/SVGPointList.h
@@ -24,12 +24,11 @@
 #if ENABLE(SVG)
 #include "SVGList.h"
 #include "FloatPoint.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
-    class String;
-
     class SVGPointList : public SVGPODList<FloatPoint> {
     public:
         static PassRefPtr<SVGPointList> create(const QualifiedName& attributeName) { return adoptRef(new SVGPointList(attributeName)); }
diff --git a/WebCore/svg/SVGPreserveAspectRatio.h b/WebCore/svg/SVGPreserveAspectRatio.h
index 4c28a19..9ed27fe 100644
--- a/WebCore/svg/SVGPreserveAspectRatio.h
+++ b/WebCore/svg/SVGPreserveAspectRatio.h
@@ -25,10 +25,10 @@
 #include "FloatRect.h"
 #include "PlatformString.h"
 #include "SVGNames.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-    class String;
     class AffineTransform;
 
     class SVGPreserveAspectRatio {
diff --git a/WebCore/svg/SVGStylable.h b/WebCore/svg/SVGStylable.h
index e1bed99..37148f9 100644
--- a/WebCore/svg/SVGStylable.h
+++ b/WebCore/svg/SVGStylable.h
@@ -22,13 +22,13 @@
 #define SVGStylable_h
 
 #if ENABLE(SVG)
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
     class CSSValue;
     class CSSStyleDeclaration;
-    class String;
     class QualifiedName;
 
     class SVGStylable {
diff --git a/WebCore/svg/SVGTests.h b/WebCore/svg/SVGTests.h
index 7204e8e..b638c0a 100644
--- a/WebCore/svg/SVGTests.h
+++ b/WebCore/svg/SVGTests.h
@@ -22,6 +22,7 @@
 #define SVGTests_h
 
 #if ENABLE(SVG)
+#include <wtf/Forward.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
@@ -29,7 +30,6 @@ namespace WebCore {
     class Attribute;
     class QualifiedName;
     class SVGStringList;
-    class String;
 
     class SVGTests {
     public:
diff --git a/WebCore/svg/SVGTransformList.h b/WebCore/svg/SVGTransformList.h
index 27ed924..5bb5e85 100644
--- a/WebCore/svg/SVGTransformList.h
+++ b/WebCore/svg/SVGTransformList.h
@@ -24,12 +24,11 @@
 #if ENABLE(SVG)
 #include "SVGList.h"
 #include "SVGTransform.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace WebCore {
 
-    class String;
-
     class SVGTransformList : public SVGPODList<SVGTransform> {
     public:
         static PassRefPtr<SVGTransformList> create(const QualifiedName& attributeName) { return adoptRef(new SVGTransformList(attributeName)); }
diff --git a/WebCore/svg/SVGTransformable.h b/WebCore/svg/SVGTransformable.h
index 2972c8b..8979eb1 100644
--- a/WebCore/svg/SVGTransformable.h
+++ b/WebCore/svg/SVGTransformable.h
@@ -25,11 +25,11 @@
 #include "PlatformString.h"
 #include "SVGLocatable.h"
 #include "SVGTransformList.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
     
 class AffineTransform;
-class AtomicString;
 class SVGTransform;
 class QualifiedName;
 
diff --git a/WebCore/svg/SVGVKernElement.h b/WebCore/svg/SVGVKernElement.h
index 50da27e..c4bc90f 100644
--- a/WebCore/svg/SVGVKernElement.h
+++ b/WebCore/svg/SVGVKernElement.h
@@ -24,12 +24,12 @@
 #include "SVGFontElement.h"
 #include "SVGParserUtilities.h"
 #include "SVGStyledElement.h"
+#include <wtf/Forward.h>
 
 #include <limits>
 
 namespace WebCore {
 
-class AtomicString;
 class SVGFontData;
 
 class SVGVKernElement : public SVGElement {
diff --git a/WebCore/websockets/ThreadableWebSocketChannel.h b/WebCore/websockets/ThreadableWebSocketChannel.h
index cbe6e14..05b3767 100644
--- a/WebCore/websockets/ThreadableWebSocketChannel.h
+++ b/WebCore/websockets/ThreadableWebSocketChannel.h
@@ -33,6 +33,7 @@
 
 #if ENABLE(WEB_SOCKETS)
 
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassRefPtr.h>
 
@@ -40,7 +41,6 @@ namespace WebCore {
 
 class KURL;
 class ScriptExecutionContext;
-class String;
 class WebSocketChannelClient;
 
 class ThreadableWebSocketChannel : public Noncopyable {
diff --git a/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h b/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h
index bc36c1b..4099615 100644
--- a/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h
+++ b/WebCore/websockets/ThreadableWebSocketChannelClientWrapper.h
@@ -35,14 +35,13 @@
 
 #include "PlatformString.h"
 #include "WebSocketChannelClient.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/Threading.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
-class String;
-
 class ThreadableWebSocketChannelClientWrapper : public ThreadSafeShared<ThreadableWebSocketChannelClientWrapper> {
 public:
     static PassRefPtr<ThreadableWebSocketChannelClientWrapper> create(WebSocketChannelClient* client)
diff --git a/WebCore/websockets/WebSocket.h b/WebCore/websockets/WebSocket.h
index 2c95ff9..15508b4 100644
--- a/WebCore/websockets/WebSocket.h
+++ b/WebCore/websockets/WebSocket.h
@@ -40,12 +40,12 @@
 #include "EventTarget.h"
 #include "KURL.h"
 #include "WebSocketChannelClient.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-    class String;
     class ThreadableWebSocketChannel;
 
     class WebSocket : public RefCounted<WebSocket>, public EventTarget, public ActiveDOMObject, public WebSocketChannelClient {
diff --git a/WebCore/websockets/WebSocketChannel.h b/WebCore/websockets/WebSocketChannel.h
index a90c6dc..893b4c6 100644
--- a/WebCore/websockets/WebSocketChannel.h
+++ b/WebCore/websockets/WebSocketChannel.h
@@ -37,13 +37,13 @@
 #include "ThreadableWebSocketChannel.h"
 #include "Timer.h"
 #include "WebSocketHandshake.h"
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
     class ScriptExecutionContext;
-    class String;
     class SocketStreamHandle;
     class SocketStreamError;
     class WebSocketChannelClient;
diff --git a/WebCore/websockets/WebSocketHandshakeResponse.h b/WebCore/websockets/WebSocketHandshakeResponse.h
index c385a1b..fe435ee 100644
--- a/WebCore/websockets/WebSocketHandshakeResponse.h
+++ b/WebCore/websockets/WebSocketHandshakeResponse.h
@@ -35,11 +35,10 @@
 
 #include "HTTPHeaderMap.h"
 #include "PlatformString.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
-class AtomicString;
-
 class WebSocketHandshakeResponse {
 public:
     WebSocketHandshakeResponse();
diff --git a/WebCore/wml/WMLErrorHandling.h b/WebCore/wml/WMLErrorHandling.h
index 8277be4..c75c975 100644
--- a/WebCore/wml/WMLErrorHandling.h
+++ b/WebCore/wml/WMLErrorHandling.h
@@ -21,11 +21,12 @@
 #ifndef WMLErrorHandling_h
 #define WMLErrorHandling_h
 
+#include <wtf/Forward.h>
+
 #if ENABLE(WML)
 namespace WebCore {
 
     class Document;
-    class String;
 
     enum WMLErrorCode {
         WMLErrorUnknown = 0,
diff --git a/WebCore/wml/WMLPageState.h b/WebCore/wml/WMLPageState.h
index ed1ce8e..614bc94 100644
--- a/WebCore/wml/WMLPageState.h
+++ b/WebCore/wml/WMLPageState.h
@@ -25,12 +25,12 @@
 
 #if ENABLE(WML)
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 
 namespace WebCore {
 
 class Page;
-class String;
 class WMLCardElement;
 
 typedef HashMap<String, String> WMLVariableMap;
diff --git a/WebCore/wml/WMLVariables.h b/WebCore/wml/WMLVariables.h
index 18c6ba4..3bd0f81 100644
--- a/WebCore/wml/WMLVariables.h
+++ b/WebCore/wml/WMLVariables.h
@@ -21,11 +21,12 @@
 #ifndef WMLVariables_h
 #define WMLVariables_h
 
+#include <wtf/Forward.h>
+
 #if ENABLE(WML)
 namespace WebCore {
 
     class Document;
-    class String;
 
     enum WMLVariableEscapingMode {
         WMLVariableEscapingNone = 0,
diff --git a/WebCore/workers/DefaultSharedWorkerRepository.h b/WebCore/workers/DefaultSharedWorkerRepository.h
index c2eaff4..2ce4422 100644
--- a/WebCore/workers/DefaultSharedWorkerRepository.h
+++ b/WebCore/workers/DefaultSharedWorkerRepository.h
@@ -35,6 +35,7 @@
 
 #include "ExceptionCode.h"
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
@@ -50,7 +51,6 @@ namespace WebCore {
     class ScriptExecutionContext;
     class SharedWorker;
     class SharedWorkerProxy;
-    class String;
 
     // Platform-specific implementation of the SharedWorkerRepository static interface.
     class DefaultSharedWorkerRepository : public Noncopyable {
diff --git a/WebCore/workers/SharedWorkerRepository.h b/WebCore/workers/SharedWorkerRepository.h
index 49f3941..d654070 100644
--- a/WebCore/workers/SharedWorkerRepository.h
+++ b/WebCore/workers/SharedWorkerRepository.h
@@ -34,6 +34,7 @@
 #if ENABLE(SHARED_WORKERS)
 
 #include "ExceptionCode.h"
+#include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
 
@@ -43,7 +44,6 @@ namespace WebCore {
     class KURL;
     class MessagePortChannel;
     class SharedWorker;
-    class String;
 
     // Interface to a repository which manages references to the set of active shared workers.
     class SharedWorkerRepository {
diff --git a/WebCore/workers/Worker.h b/WebCore/workers/Worker.h
index 69ae92e..2470b71 100644
--- a/WebCore/workers/Worker.h
+++ b/WebCore/workers/Worker.h
@@ -37,6 +37,7 @@
 #include "EventTarget.h"
 #include "MessagePort.h"
 #include "WorkerScriptLoaderClient.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -45,7 +46,6 @@
 namespace WebCore {
 
     class ScriptExecutionContext;
-    class String;
     class WorkerContextProxy;
     class WorkerScriptLoader;
 
diff --git a/WebCore/workers/WorkerContextProxy.h b/WebCore/workers/WorkerContextProxy.h
index e1ca139..4420c78 100644
--- a/WebCore/workers/WorkerContextProxy.h
+++ b/WebCore/workers/WorkerContextProxy.h
@@ -34,12 +34,12 @@
 #if ENABLE(WORKERS)
 
 #include "MessagePort.h"
+#include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 
 namespace WebCore {
 
     class KURL;
-    class String;
     class Worker;
 
     // A proxy to talk to the worker context.
diff --git a/WebCore/workers/WorkerLoaderProxy.h b/WebCore/workers/WorkerLoaderProxy.h
index fe1bf51..219dab4 100644
--- a/WebCore/workers/WorkerLoaderProxy.h
+++ b/WebCore/workers/WorkerLoaderProxy.h
@@ -34,12 +34,11 @@
 #if ENABLE(WORKERS)
 
 #include "ScriptExecutionContext.h"
+#include <wtf/Forward.h>
 #include <wtf/PassOwnPtr.h>
 
 namespace WebCore {
 
-    class String;
-
     // A proxy to talk to the loader context. Normally, the document on the main thread
     // provides loading services for the subordinate workers. This interface provides 2-way
     // communications to the Document context and back to the worker.
diff --git a/WebCore/workers/WorkerLocation.h b/WebCore/workers/WorkerLocation.h
index 52c31ad..5200e35 100644
--- a/WebCore/workers/WorkerLocation.h
+++ b/WebCore/workers/WorkerLocation.h
@@ -30,14 +30,13 @@
 #if ENABLE(WORKERS)
 
 #include "KURL.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
 
-    class String;
-
     class WorkerLocation : public RefCounted<WorkerLocation> {
     public:
         static PassRefPtr<WorkerLocation> create(const KURL& url)
diff --git a/WebCore/workers/WorkerMessagingProxy.h b/WebCore/workers/WorkerMessagingProxy.h
index 296fa42..33937ce 100644
--- a/WebCore/workers/WorkerMessagingProxy.h
+++ b/WebCore/workers/WorkerMessagingProxy.h
@@ -33,6 +33,7 @@
 #include "WorkerContextProxy.h"
 #include "WorkerLoaderProxy.h"
 #include "WorkerObjectProxy.h"
+#include <wtf/Forward.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -43,7 +44,6 @@ namespace WebCore {
 
     class DedicatedWorkerThread;
     class ScriptExecutionContext;
-    class String;
     class Worker;
 
     class WorkerMessagingProxy : public WorkerContextProxy, public WorkerObjectProxy, public WorkerLoaderProxy, public Noncopyable {
diff --git a/WebCore/workers/WorkerReportingProxy.h b/WebCore/workers/WorkerReportingProxy.h
index 063dc81..6a8fcef 100644
--- a/WebCore/workers/WorkerReportingProxy.h
+++ b/WebCore/workers/WorkerReportingProxy.h
@@ -33,12 +33,12 @@
 
 #if ENABLE(WORKERS)
 
+#include <wtf/Forward.h>
+
 #include "Console.h"
 
 namespace WebCore {
 
-    class String;
-
     // APIs used by workers to report console activity.
     class WorkerReportingProxy {
     public:
diff --git a/WebCore/workers/WorkerThread.h b/WebCore/workers/WorkerThread.h
index cb33308..e44afce 100644
--- a/WebCore/workers/WorkerThread.h
+++ b/WebCore/workers/WorkerThread.h
@@ -30,6 +30,7 @@
 #if ENABLE(WORKERS)
 
 #include "WorkerRunLoop.h"
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
@@ -38,7 +39,6 @@ namespace WebCore {
 
     class KURL;
     class NotificationPresenter;
-    class String;
     class WorkerContext;
     class WorkerLoaderProxy;
     class WorkerReportingProxy;
diff --git a/WebCore/xml/DOMParser.h b/WebCore/xml/DOMParser.h
index 5036d22..744bae8 100644
--- a/WebCore/xml/DOMParser.h
+++ b/WebCore/xml/DOMParser.h
@@ -19,13 +19,12 @@
 #ifndef DOMParser_h
 #define DOMParser_h
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include "Document.h"
 
 namespace WebCore {
 
-    class String;
-    
     class DOMParser : public RefCounted<DOMParser> {
     public:
         static PassRefPtr<DOMParser> create() { return adoptRef(new DOMParser); }
diff --git a/WebCore/xml/XMLHttpRequest.h b/WebCore/xml/XMLHttpRequest.h
index ca308cc..363fdf8 100644
--- a/WebCore/xml/XMLHttpRequest.h
+++ b/WebCore/xml/XMLHttpRequest.h
@@ -164,7 +164,7 @@ private:
 
     RefPtr<TextResourceDecoder> m_decoder;
 
-    // Unlike most strings in the DOM, we keep this as a ScriptString, not a WebCore::String.
+    // Unlike most strings in the DOM, we keep this as a ScriptString, not a WTF::String.
     // That's because these strings can easily get huge (they are filled from the network with
     // no parsing) and because JS can easily observe many intermediate states, so it's very useful
     // to be able to share the buffer with JavaScript versions of the whole or partial string.
diff --git a/WebCore/xml/XMLHttpRequestUpload.h b/WebCore/xml/XMLHttpRequestUpload.h
index 7640643..7a605fb 100644
--- a/WebCore/xml/XMLHttpRequestUpload.h
+++ b/WebCore/xml/XMLHttpRequestUpload.h
@@ -30,6 +30,7 @@
 #include "EventListener.h"
 #include "EventNames.h"
 #include "EventTarget.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -38,7 +39,6 @@
 
 namespace WebCore {
 
-    class AtomicStringImpl;
     class ScriptExecutionContext;
     class XMLHttpRequest;
 
diff --git a/WebCore/xml/XPathEvaluator.h b/WebCore/xml/XPathEvaluator.h
index c8e456e..70322a4 100644
--- a/WebCore/xml/XPathEvaluator.h
+++ b/WebCore/xml/XPathEvaluator.h
@@ -29,6 +29,7 @@
 
 #if ENABLE(XPATH)
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/PassRefPtr.h>
 
@@ -37,7 +38,6 @@ namespace WebCore {
     typedef int ExceptionCode;
 
     class Node;
-    class String;
     class XPathExpression;
     class XPathNSResolver;
     class XPathResult;
diff --git a/WebCore/xml/XPathExpression.h b/WebCore/xml/XPathExpression.h
index a2b75d7..633ec80 100644
--- a/WebCore/xml/XPathExpression.h
+++ b/WebCore/xml/XPathExpression.h
@@ -29,6 +29,7 @@
 
 #if ENABLE(XPATH)
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 #include <wtf/PassRefPtr.h>
 
@@ -37,7 +38,6 @@ namespace WebCore {
     typedef int ExceptionCode;
 
     class Node;
-    class String;
     class XPathNSResolver;
     class XPathResult;
 
diff --git a/WebCore/xml/XPathNSResolver.h b/WebCore/xml/XPathNSResolver.h
index 04b5f80..7b7fd2e 100644
--- a/WebCore/xml/XPathNSResolver.h
+++ b/WebCore/xml/XPathNSResolver.h
@@ -29,12 +29,11 @@
 
 #if ENABLE(XPATH)
 
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
 
-    class String;
-
     class XPathNSResolver : public RefCounted<XPathNSResolver> {
     public:
         virtual ~XPathNSResolver();
diff --git a/WebCore/xml/XPathResult.h b/WebCore/xml/XPathResult.h
index 3b91d66..cbb51f5 100644
--- a/WebCore/xml/XPathResult.h
+++ b/WebCore/xml/XPathResult.h
@@ -30,6 +30,7 @@
 #if ENABLE(XPATH)
 
 #include "XPathValue.h"
+#include <wtf/Forward.h>
 #include <wtf/RefCounted.h>
 
 namespace WebCore {
@@ -38,7 +39,6 @@ namespace WebCore {
 
     class Document;
     class Node;
-    class String;
 
     class XPathResult : public RefCounted<XPathResult> {
     public:
diff --git a/WebCore/xml/XPathUtil.h b/WebCore/xml/XPathUtil.h
index 30f21ae..cfb34dc 100644
--- a/WebCore/xml/XPathUtil.h
+++ b/WebCore/xml/XPathUtil.h
@@ -29,12 +29,12 @@
 
 #if ENABLE(XPATH)
 
+#include <wtf/Forward.h>
 #include <wtf/Vector.h>
 
 namespace WebCore {
 
     class Node;
-    class String;
 
     namespace XPath {
 
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index bf131ab..92976db 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,13 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebKit.xcodeproj/project.pbxproj:
+
 2010-08-06  Jessie Berlin  <jberlin at apple.com>
 
         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
diff --git a/WebKit/WebKit.xcodeproj/project.pbxproj b/WebKit/WebKit.xcodeproj/project.pbxproj
index 52d5b6c..bad03b6 100644
--- a/WebKit/WebKit.xcodeproj/project.pbxproj
+++ b/WebKit/WebKit.xcodeproj/project.pbxproj
@@ -1616,6 +1616,7 @@
 			isa = PBXProject;
 			buildConfigurationList = 149C283208902B0F008A9EFC /* Build configuration list for PBXProject "WebKit" */;
 			compatibilityVersion = "Xcode 2.4";
+			developmentRegion = English;
 			hasScannedForEncodings = 1;
 			knownRegions = (
 				English,
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index c42e63b..a1defdb 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,20 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * public/WebCString.h:
+        * public/WebString.h:
+        * src/DOMUtilitiesPrivate.h:
+        * src/DebuggerAgentImpl.h:
+        * src/DebuggerAgentManager.h:
+        * src/WebDevToolsAgentImpl.h:
+        * src/WebDevToolsFrontendImpl.h:
+        * src/WebPageSerializerImpl.h:
+
 2010-08-09  Vangelis Kokkevis  <vangelis at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebKit/chromium/public/WebCString.h b/WebKit/chromium/public/WebCString.h
index 2c1e137..d5c47ab 100644
--- a/WebKit/chromium/public/WebCString.h
+++ b/WebKit/chromium/public/WebCString.h
@@ -34,7 +34,7 @@
 #include "WebCommon.h"
 
 #if WEBKIT_IMPLEMENTATION
-namespace WTF { class CString; }
+#include <wtf/Forward.h>
 #else
 #include <string>
 #endif
diff --git a/WebKit/chromium/public/WebString.h b/WebKit/chromium/public/WebString.h
index 2c9664e..4d5e502 100644
--- a/WebKit/chromium/public/WebString.h
+++ b/WebKit/chromium/public/WebString.h
@@ -34,10 +34,7 @@
 #include "WebCommon.h"
 
 #if WEBKIT_IMPLEMENTATION
-namespace WebCore {
-class String;
-class AtomicString;
-}
+#include <wtf/Forward.h>
 #else
 #include <base/nullable_string16.h>
 #include <base/string16.h>
@@ -102,13 +99,13 @@ public:
     }
 
 #if WEBKIT_IMPLEMENTATION
-    WebString(const WebCore::String&);
-    WebString& operator=(const WebCore::String&);
-    operator WebCore::String() const;
+    WebString(const WTF::String&);
+    WebString& operator=(const WTF::String&);
+    operator WTF::String() const;
 
-    WebString(const WebCore::AtomicString&);
-    WebString& operator=(const WebCore::AtomicString&);
-    operator WebCore::AtomicString() const;
+    WebString(const WTF::AtomicString&);
+    WebString& operator=(const WTF::AtomicString&);
+    operator WTF::AtomicString() const;
 #else
 
     WebString(const string16& s) : m_private(0)
diff --git a/WebKit/chromium/src/AutoFillPopupMenuClient.h b/WebKit/chromium/src/AutoFillPopupMenuClient.h
index 223cf16..a946e34 100644
--- a/WebKit/chromium/src/AutoFillPopupMenuClient.h
+++ b/WebKit/chromium/src/AutoFillPopupMenuClient.h
@@ -73,11 +73,11 @@ public:
     virtual void valueChanged(unsigned listIndex, bool fireEvents = true);
     virtual void selectionChanged(unsigned, bool);
     virtual void selectionCleared();
-    virtual WebCore::String itemText(unsigned listIndex) const;
-    virtual WebCore::String itemLabel(unsigned listIndex) const;
-    virtual WebCore::String itemIcon(unsigned listIndex) const;
-    virtual WebCore::String itemToolTip(unsigned lastIndex) const { return WebCore::String(); }
-    virtual WebCore::String itemAccessibilityText(unsigned lastIndex) const { return WebCore::String(); }
+    virtual WTF::String itemText(unsigned listIndex) const;
+    virtual WTF::String itemLabel(unsigned listIndex) const;
+    virtual WTF::String itemIcon(unsigned listIndex) const;
+    virtual WTF::String itemToolTip(unsigned lastIndex) const { return WTF::String(); }
+    virtual WTF::String itemAccessibilityText(unsigned lastIndex) const { return WTF::String(); }
     virtual bool itemIsEnabled(unsigned listIndex) const { return true; }
     virtual WebCore::PopupMenuStyle itemStyle(unsigned listIndex) const;
     virtual WebCore::PopupMenuStyle menuStyle() const;
@@ -131,9 +131,9 @@ private:
     void setSelectedIndex(int index) { m_selectedIndex = index; }
 
     // The names, labels and icons that make up the contents of the menu items.
-    Vector<WebCore::String> m_names;
-    Vector<WebCore::String> m_labels;
-    Vector<WebCore::String> m_icons;
+    Vector<WTF::String> m_names;
+    Vector<WTF::String> m_labels;
+    Vector<WTF::String> m_icons;
     Vector<int> m_uniqueIDs;
 
     // The index of the separator.  -1 if there is no separator.
diff --git a/WebKit/chromium/src/ChromeClientImpl.cpp b/WebKit/chromium/src/ChromeClientImpl.cpp
index 2a5c32e..405fbf6 100644
--- a/WebKit/chromium/src/ChromeClientImpl.cpp
+++ b/WebKit/chromium/src/ChromeClientImpl.cpp
@@ -616,7 +616,7 @@ void ChromeClientImpl::runOpenPanel(Frame* frame, PassRefPtr<FileChooser> fileCh
     chooserCompletion->didChooseFile(WebVector<WebString>());
 }
 
-void ChromeClientImpl::chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*)
+void ChromeClientImpl::chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*)
 {
     notImplemented();
 }
diff --git a/WebKit/chromium/src/ChromeClientImpl.h b/WebKit/chromium/src/ChromeClientImpl.h
index 7f3febf..8763def 100644
--- a/WebKit/chromium/src/ChromeClientImpl.h
+++ b/WebKit/chromium/src/ChromeClientImpl.h
@@ -86,18 +86,18 @@ public:
     virtual void setResizable(bool);
     virtual void addMessageToConsole(
         WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel,
-        const WebCore::String& message, unsigned lineNumber,
-        const WebCore::String& sourceID);
+        const WTF::String& message, unsigned lineNumber,
+        const WTF::String& sourceID);
     virtual bool canRunBeforeUnloadConfirmPanel();
     virtual bool runBeforeUnloadConfirmPanel(
-        const WebCore::String& message, WebCore::Frame*);
+        const WTF::String& message, WebCore::Frame*);
     virtual void closeWindowSoon();
-    virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
+    virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
     virtual bool runJavaScriptPrompt(
-        WebCore::Frame*, const WebCore::String& message,
-        const WebCore::String& defaultValue, WebCore::String& result);
-    virtual void setStatusbarText(const WebCore::String& message);
+        WebCore::Frame*, const WTF::String& message,
+        const WTF::String& defaultValue, WTF::String& result);
+    virtual void setStatusbarText(const WTF::String& message);
     virtual bool shouldInterruptJavaScript();
     virtual bool tabsToLinks() const;
     virtual WebCore::IntRect windowResizerRect() const;
@@ -116,10 +116,10 @@ public:
     virtual void scrollbarsModeDidChange() const;
     virtual void mouseDidMoveOverElement(
         const WebCore::HitTestResult& result, unsigned modifierFlags);
-    virtual void setToolTip(const WebCore::String& tooltipText, WebCore::TextDirection);
+    virtual void setToolTip(const WTF::String& tooltipText, WebCore::TextDirection);
     virtual void print(WebCore::Frame*);
     virtual void exceededDatabaseQuota(
-        WebCore::Frame*, const WebCore::String& databaseName);
+        WebCore::Frame*, const WTF::String& databaseName);
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
     virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
@@ -130,7 +130,7 @@ public:
     virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
     virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
-    virtual void chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*);
+    virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
     virtual void setCursor(const WebCore::Cursor&) { }
     virtual void formStateDidChange(const WebCore::Node*);
     virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
diff --git a/WebKit/chromium/src/ContextMenuClientImpl.h b/WebKit/chromium/src/ContextMenuClientImpl.h
index 4191fad..97ea967 100644
--- a/WebKit/chromium/src/ContextMenuClientImpl.h
+++ b/WebKit/chromium/src/ContextMenuClientImpl.h
@@ -51,7 +51,7 @@ public:
     virtual void lookUpInDictionary(WebCore::Frame*) {}
     virtual void searchWithGoogle(const WebCore::Frame*) {}
     virtual bool shouldIncludeInspectElementItem() { return false; }
-    virtual void speak(const WebCore::String&) {}
+    virtual void speak(const WTF::String&) {}
     virtual void stopSpeaking() {}
 private:
     void populateCustomMenuItems(WebCore::ContextMenu*, WebContextMenuData*);
diff --git a/WebKit/chromium/src/DOMUtilitiesPrivate.h b/WebKit/chromium/src/DOMUtilitiesPrivate.h
index 253ab3f..f5d03a5 100644
--- a/WebKit/chromium/src/DOMUtilitiesPrivate.h
+++ b/WebKit/chromium/src/DOMUtilitiesPrivate.h
@@ -31,6 +31,8 @@
 #ifndef DOMUtilitiesPrivate_h
 #define DOMUtilitiesPrivate_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
 class Element;
 class HTMLInputElement;
@@ -39,7 +41,6 @@ class HTMLMetaElement;
 class HTMLOptionElement;
 class Node;
 class QualifiedName;
-class String;
 }
 
 // This file is an aggregate of useful WebCore operations.
@@ -53,7 +54,7 @@ WebCore::HTMLMetaElement* toHTMLMetaElement(WebCore::Node*);
 WebCore::HTMLOptionElement* toHTMLOptionElement(WebCore::Node*);
 
 // FIXME: Deprecate. Use WebInputElement::nameForAutofill instead.
-WebCore::String nameOfInputElement(WebCore::HTMLInputElement*);
+WTF::String nameOfInputElement(WebCore::HTMLInputElement*);
 
 // For img, script, iframe, frame element, when attribute name is src,
 // for link, a, area element, when attribute name is href,
diff --git a/WebKit/chromium/src/DebuggerAgentImpl.cpp b/WebKit/chromium/src/DebuggerAgentImpl.cpp
index 4dc40a8..52e87e7 100644
--- a/WebKit/chromium/src/DebuggerAgentImpl.cpp
+++ b/WebKit/chromium/src/DebuggerAgentImpl.cpp
@@ -48,7 +48,7 @@ using WebCore::DOMWindow;
 using WebCore::Document;
 using WebCore::Frame;
 using WebCore::Page;
-using WebCore::String;
+using WTF::String;
 
 namespace WebKit {
 
diff --git a/WebKit/chromium/src/DebuggerAgentImpl.h b/WebKit/chromium/src/DebuggerAgentImpl.h
index d8b13fd..699d6de 100644
--- a/WebKit/chromium/src/DebuggerAgentImpl.h
+++ b/WebKit/chromium/src/DebuggerAgentImpl.h
@@ -32,6 +32,7 @@
 #define DebuggerAgentImpl_h
 
 #include <v8.h>
+#include <wtf/Forward.h>
 #include <wtf/HashSet.h>
 #include <wtf/Noncopyable.h>
 
@@ -40,7 +41,6 @@ class Document;
 class Frame;
 class Node;
 class Page;
-class String;
 }
 
 namespace WebKit {
@@ -56,7 +56,7 @@ public:
                       WebDevToolsAgentClient* webdevtoolsAgentClient);
     virtual ~DebuggerAgentImpl();
 
-    void debuggerOutput(const WebCore::String& out);
+    void debuggerOutput(const WTF::String& out);
 
     void setAutoContinueOnException(bool autoContinue) { m_autoContinueOnException = autoContinue; }
 
@@ -65,14 +65,14 @@ public:
     // Executes function with the given name in the utility context. Passes node
     // and json args as parameters. Note that the function called must be
     // implemented in the inject_dispatch.js file.
-    WebCore::String executeUtilityFunction(
+    WTF::String executeUtilityFunction(
         v8::Handle<v8::Context> context,
         int callId,
         const char* object,
-        const WebCore::String& functionName,
-        const WebCore::String& jsonArgs,
+        const WTF::String& functionName,
+        const WTF::String& jsonArgs,
         bool async,
-        WebCore::String* exception);
+        WTF::String* exception);
 
 
     WebCore::Page* page();
diff --git a/WebKit/chromium/src/DebuggerAgentManager.cpp b/WebKit/chromium/src/DebuggerAgentManager.cpp
index 23cbd73..1df7172 100644
--- a/WebKit/chromium/src/DebuggerAgentManager.cpp
+++ b/WebKit/chromium/src/DebuggerAgentManager.cpp
@@ -157,7 +157,7 @@ void DebuggerAgentManager::debugDetach(DebuggerAgentImpl* debuggerAgent)
         }
     } else {
       // Remove all breakpoints set by the agent.
-      WebCore::String clearBreakpointGroupCmd = WebCore::String::format(
+      WTF::String clearBreakpointGroupCmd = WTF::String::format(
           "{\"seq\":1,\"type\":\"request\",\"command\":\"clearbreakpointgroup\","
               "\"arguments\":{\"groupId\":%d}}",
           hostId);
@@ -176,7 +176,7 @@ void DebuggerAgentManager::onV8DebugMessage(const v8::Debug::Message& message)
 {
     v8::HandleScope scope;
     v8::String::Value value(message.GetJSON());
-    WebCore::String out(reinterpret_cast<const UChar*>(*value), value.length());
+    WTF::String out(reinterpret_cast<const UChar*>(*value), value.length());
 
     // If callerData is not 0 the message is a response to a debugger command.
     if (v8::Debug::ClientData* callerData = message.GetClientData()) {
@@ -248,7 +248,7 @@ void DebuggerAgentManager::pauseScript()
         v8::Debug::DebugBreak();
 }
 
-void DebuggerAgentManager::executeDebuggerCommand(const WebCore::String& command, int callerId)
+void DebuggerAgentManager::executeDebuggerCommand(const WTF::String& command, int callerId)
 {
     sendCommandToV8(command, new CallerIdWrapper(callerId));
 }
@@ -286,14 +286,14 @@ void DebuggerAgentManager::onNavigate()
         DebuggerAgentManager::sendContinueCommandToV8();
 }
 
-void DebuggerAgentManager::sendCommandToV8(const WebCore::String& cmd, v8::Debug::ClientData* data)
+void DebuggerAgentManager::sendCommandToV8(const WTF::String& cmd, v8::Debug::ClientData* data)
 {
     v8::Debug::SendCommand(reinterpret_cast<const uint16_t*>(cmd.characters()), cmd.length(), data);
 }
 
 void DebuggerAgentManager::sendContinueCommandToV8()
 {
-    WebCore::String continueCmd("{\"seq\":1,\"type\":\"request\",\"command\":\"continue\"}");
+    WTF::String continueCmd("{\"seq\":1,\"type\":\"request\",\"command\":\"continue\"}");
     sendCommandToV8(continueCmd, new CallerIdWrapper());
 }
 
diff --git a/WebKit/chromium/src/DebuggerAgentManager.h b/WebKit/chromium/src/DebuggerAgentManager.h
index dbb600a..300cada 100644
--- a/WebKit/chromium/src/DebuggerAgentManager.h
+++ b/WebKit/chromium/src/DebuggerAgentManager.h
@@ -34,6 +34,7 @@
 #include "WebCString.h"
 #include "WebDevToolsAgent.h"
 #include <v8-debug.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/Vector.h>
@@ -41,7 +42,6 @@
 namespace WebCore {
 class Page;
 class PageGroupLoadDeferrer;
-class String;
 }
 
 namespace WebKit {
@@ -68,7 +68,7 @@ public:
     static void debugAttach(DebuggerAgentImpl* debuggerAgent);
     static void debugDetach(DebuggerAgentImpl* debuggerAgent);
     static void pauseScript();
-    static void executeDebuggerCommand(const WebCore::String& command, int callerId);
+    static void executeDebuggerCommand(const WTF::String& command, int callerId);
     static void setMessageLoopDispatchHandler(WebDevToolsAgent::MessageLoopDispatchHandler handler);
     static void setExposeV8DebuggerProtocol(bool);
 
@@ -103,7 +103,7 @@ private:
 
     static void debugHostDispatchHandler();
     static void onV8DebugMessage(const v8::Debug::Message& message);
-    static void sendCommandToV8(const WebCore::String& cmd,
+    static void sendCommandToV8(const WTF::String& cmd,
                                 v8::Debug::ClientData* data);
     static void sendContinueCommandToV8();
 
diff --git a/WebKit/chromium/src/DragClientImpl.h b/WebKit/chromium/src/DragClientImpl.h
index fc4c608..dac7acd 100644
--- a/WebKit/chromium/src/DragClientImpl.h
+++ b/WebKit/chromium/src/DragClientImpl.h
@@ -63,7 +63,7 @@ public:
         WebCore::Frame* frame,
         bool isLinkDrag = false);
     virtual WebCore::DragImageRef createDragImageForLink(
-        WebCore::KURL&, const WebCore::String& label, WebCore::Frame*);
+        WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
     virtual void dragControllerDestroyed();
 
 private:
diff --git a/WebKit/chromium/src/EditorClientImpl.h b/WebKit/chromium/src/EditorClientImpl.h
index 549a512..b05a592 100644
--- a/WebKit/chromium/src/EditorClientImpl.h
+++ b/WebKit/chromium/src/EditorClientImpl.h
@@ -61,7 +61,7 @@ public:
     virtual bool shouldBeginEditing(WebCore::Range*);
     virtual bool shouldEndEditing(WebCore::Range*);
     virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
-    virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction);
+    virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
     virtual bool shouldDeleteRange(WebCore::Range*);
     virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange,
                                            WebCore::Range* toRange,
@@ -92,8 +92,8 @@ public:
     virtual bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*);
     virtual void textWillBeDeletedInTextField(WebCore::Element*);
     virtual void textDidChangeInTextArea(WebCore::Element*);
-    virtual void ignoreWordInSpellDocument(const WebCore::String&);
-    virtual void learnWord(const WebCore::String&);
+    virtual void ignoreWordInSpellDocument(const WTF::String&);
+    virtual void learnWord(const WTF::String&);
     virtual void checkSpellingOfString(const UChar*, int length,
                                        int* misspellingLocation,
                                        int* misspellingLength);
@@ -101,13 +101,13 @@ public:
                                       WTF::Vector<WebCore::GrammarDetail>&,
                                       int* badGrammarLocation,
                                       int* badGrammarLength);
-    virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
-    virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail&);
-    virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
+    virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
+    virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&);
+    virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
     virtual void showSpellingUI(bool show);
     virtual bool spellingUIIsShowing();
-    virtual void getGuessesForWord(const WebCore::String& word,
-                                   WTF::Vector<WebCore::String>& guesses);
+    virtual void getGuessesForWord(const WTF::String& word,
+                                   WTF::Vector<WTF::String>& guesses);
     virtual void willSetInputMethodState();
     virtual void setInputMethodState(bool enabled);
 
diff --git a/WebKit/chromium/src/FrameLoaderClientImpl.h b/WebKit/chromium/src/FrameLoaderClientImpl.h
index 25be623..3a8a714 100644
--- a/WebKit/chromium/src/FrameLoaderClientImpl.h
+++ b/WebKit/chromium/src/FrameLoaderClientImpl.h
@@ -99,7 +99,7 @@ public:
     virtual void dispatchWillClose();
     virtual void dispatchDidReceiveIcon();
     virtual void dispatchDidStartProvisionalLoad();
-    virtual void dispatchDidReceiveTitle(const WebCore::String& title);
+    virtual void dispatchDidReceiveTitle(const WTF::String& title);
     virtual void dispatchDidChangeIcons();
     virtual void dispatchDidCommitLoad();
     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
@@ -110,8 +110,8 @@ public:
     virtual void dispatchDidFirstVisuallyNonEmptyLayout();
     virtual WebCore::Frame* dispatchCreatePage();
     virtual void dispatchShow();
-    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction function, const WebCore::String& mime_type, const WebCore::ResourceRequest&);
-    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state, const WebCore::String& frame_name);
+    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction function, const WTF::String& mime_type, const WebCore::ResourceRequest&);
+    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state, const WTF::String& frame_name);
     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState> form_state);
     virtual void cancelPolicyCheck();
     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
@@ -148,9 +148,9 @@ public:
     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
     virtual bool shouldFallBack(const WebCore::ResourceError&);
     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
-    virtual bool canShowMIMEType(const WebCore::String& MIMEType) const;
-    virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const;
-    virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const;
+    virtual bool canShowMIMEType(const WTF::String& MIMEType) const;
+    virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const;
+    virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const;
     virtual void frameLoadCompleted();
     virtual void saveViewStateToItem(WebCore::HistoryItem*);
     virtual void restoreViewState();
@@ -159,8 +159,8 @@ public:
     virtual void prepareForDataSourceReplacement();
     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(
         const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
-    virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
-    virtual WebCore::String userAgent(const WebCore::KURL&);
+    virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
+    virtual WTF::String userAgent(const WebCore::KURL&);
     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedForNewPage();
@@ -170,25 +170,25 @@ public:
         const WebCore::ResourceRequest& initialRequest,
         const WebCore::ResourceResponse&);
     virtual PassRefPtr<WebCore::Frame> createFrame(
-        const WebCore::KURL& url, const WebCore::String& name,
+        const WebCore::KURL& url, const WTF::String& name,
         WebCore::HTMLFrameOwnerElement* ownerElement,
-        const WebCore::String& referrer, bool allowsScrolling,
+        const WTF::String& referrer, bool allowsScrolling,
         int marginWidth, int marginHeight);
     virtual void didTransferChildFrameToNewDocument();
     virtual PassRefPtr<WebCore::Widget> createPlugin(
         const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&,
-        const Vector<WebCore::String>&, const Vector<WebCore::String>&,
-        const WebCore::String&, bool loadManually);
+        const Vector<WTF::String>&, const Vector<WTF::String>&,
+        const WTF::String&, bool loadManually);
     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(
         const WebCore::IntSize&,
         WebCore::HTMLAppletElement*,
         const WebCore::KURL& /* base_url */,
-        const Vector<WebCore::String>& paramNames,
-        const Vector<WebCore::String>& paramValues);
+        const Vector<WTF::String>& paramNames,
+        const Vector<WTF::String>& paramValues);
     virtual WebCore::ObjectContentType objectContentType(
-        const WebCore::KURL& url, const WebCore::String& mimeType);
-    virtual WebCore::String overrideMediaType() const;
+        const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WTF::String overrideMediaType() const;
     virtual void didPerformFirstNavigation() const;
     virtual void registerForIconNotification(bool listen = true);
     virtual void didChangeScrollOffset();
diff --git a/WebKit/chromium/src/InspectorClientImpl.cpp b/WebKit/chromium/src/InspectorClientImpl.cpp
index a747dbd..76acbb2 100644
--- a/WebKit/chromium/src/InspectorClientImpl.cpp
+++ b/WebKit/chromium/src/InspectorClientImpl.cpp
@@ -93,7 +93,7 @@ void InspectorClientImpl::storeSetting(const String& key, const String& value)
         agent->storeSetting(key, value);
 }
 
-bool InspectorClientImpl::sendMessageToFrontend(const WebCore::String& message)
+bool InspectorClientImpl::sendMessageToFrontend(const WTF::String& message)
 {
     if (WebDevToolsAgentImpl* agent = devToolsAgent())
         return agent->sendMessageToFrontend(message);
diff --git a/WebKit/chromium/src/InspectorClientImpl.h b/WebKit/chromium/src/InspectorClientImpl.h
index 0605ccd..34fcdc3 100644
--- a/WebKit/chromium/src/InspectorClientImpl.h
+++ b/WebKit/chromium/src/InspectorClientImpl.h
@@ -53,10 +53,10 @@ public:
     virtual void highlight(WebCore::Node*);
     virtual void hideHighlight();
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+    virtual void populateSetting(const WTF::String& key, WTF::String* value);
+    virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-    virtual bool sendMessageToFrontend(const WebCore::String&);
+    virtual bool sendMessageToFrontend(const WTF::String&);
 
     virtual void resourceTrackingWasEnabled();
     virtual void resourceTrackingWasDisabled();
diff --git a/WebKit/chromium/src/InspectorFrontendClientImpl.h b/WebKit/chromium/src/InspectorFrontendClientImpl.h
index f7174ce..1507bf2 100644
--- a/WebKit/chromium/src/InspectorFrontendClientImpl.h
+++ b/WebKit/chromium/src/InspectorFrontendClientImpl.h
@@ -56,8 +56,8 @@ public:
 
     virtual void moveWindowBy(float x, float y);
 
-    virtual WebCore::String localizedStringsURL();
-    virtual WebCore::String hiddenPanels();
+    virtual WTF::String localizedStringsURL();
+    virtual WTF::String hiddenPanels();
 
     virtual void bringToFront();
     virtual void closeWindow();
@@ -66,9 +66,9 @@ public:
     virtual void requestDetachWindow();
     virtual void changeAttachedWindowHeight(unsigned);
 
-    virtual void inspectedURLChanged(const WebCore::String&);
+    virtual void inspectedURLChanged(const WTF::String&);
 
-    virtual void sendMessageToBackend(const WebCore::String&);
+    virtual void sendMessageToBackend(const WTF::String&);
 private:
     WebCore::Page* m_frontendPage;
     WebDevToolsFrontendClient* m_client;
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
index 159fe58..2708e8c 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.cpp
@@ -87,7 +87,7 @@ using WebCore::SafeAllocation;
 using WebCore::ScriptObject;
 using WebCore::ScriptState;
 using WebCore::ScriptValue;
-using WebCore::String;
+using WTF::String;
 using WebCore::V8DOMWrapper;
 using WebCore::V8Proxy;
 
@@ -347,7 +347,7 @@ void WebDevToolsAgentImpl::createInspectorFrontendProxy()
     initDevToolsAgentHost();
     WebCString debuggerScriptJs = m_client->debuggerScriptSource();
     WebCore::ScriptDebugServer::shared().setDebuggerScriptSource(
-        WebCore::String(debuggerScriptJs.data(), debuggerScriptJs.length()));
+        WTF::String(debuggerScriptJs.data(), debuggerScriptJs.length()));
 }
 
 void WebDevToolsAgentImpl::setApuAgentEnabled(bool enabled)
@@ -494,7 +494,7 @@ void WebDevToolsAgentImpl::storeSetting(const String& key, const String& value)
     m_webViewImpl->setInspectorSetting(key, value);
 }
 
-bool WebDevToolsAgentImpl::sendMessageToFrontend(const WebCore::String& message)
+bool WebDevToolsAgentImpl::sendMessageToFrontend(const WTF::String& message)
 {
     WebDevToolsAgentImpl* devToolsAgent = static_cast<WebDevToolsAgentImpl*>(m_webViewImpl->devToolsAgent());
     if (!devToolsAgent)
diff --git a/WebKit/chromium/src/WebDevToolsAgentImpl.h b/WebKit/chromium/src/WebDevToolsAgentImpl.h
index fb8eb70..911316e 100644
--- a/WebKit/chromium/src/WebDevToolsAgentImpl.h
+++ b/WebKit/chromium/src/WebDevToolsAgentImpl.h
@@ -36,6 +36,7 @@
 #include "WebDevToolsAgentPrivate.h"
 
 #include <v8.h>
+#include <wtf/Forward.h>
 #include <wtf/OwnPtr.h>
 
 namespace WebCore {
@@ -43,7 +44,6 @@ class Document;
 class InspectorClient;
 class InspectorController;
 class Node;
-class String;
 }
 
 namespace WebKit {
@@ -91,13 +91,13 @@ public:
     virtual void openInspectorFrontend(WebCore::InspectorController*);
     virtual void highlight(WebCore::Node*);
     virtual void hideHighlight();
-    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+    virtual void populateSetting(const WTF::String& key, WTF::String* value);
+    virtual void storeSetting(const WTF::String& key, const WTF::String& value);
     virtual void resourceTrackingWasEnabled();
     virtual void resourceTrackingWasDisabled();
     virtual void timelineProfilerWasStarted();
     virtual void timelineProfilerWasStopped();
-    virtual bool sendMessageToFrontend(const WebCore::String&);
+    virtual bool sendMessageToFrontend(const WTF::String&);
 
     void forceRepaint();
 
diff --git a/WebKit/chromium/src/WebDevToolsFrontendImpl.h b/WebKit/chromium/src/WebDevToolsFrontendImpl.h
index f03c54e..e4f22fe 100644
--- a/WebKit/chromium/src/WebDevToolsFrontendImpl.h
+++ b/WebKit/chromium/src/WebDevToolsFrontendImpl.h
@@ -34,6 +34,7 @@
 #include "PlatformString.h"
 #include "WebDevToolsFrontend.h"
 #include <v8.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Noncopyable.h>
 #include <wtf/OwnPtr.h>
@@ -44,7 +45,6 @@ namespace WebCore {
 class ContextMenuItem;
 class Node;
 class Page;
-class String;
 }
 
 namespace WebKit {
@@ -53,7 +53,7 @@ class WebDevToolsClientDelegate;
 class WebViewImpl;
 struct WebDevToolsMessageData;
 
-using WebCore::String;
+using WTF::String;
 
 class WebDevToolsFrontendImpl : public WebKit::WebDevToolsFrontend
                               , public Noncopyable {
diff --git a/WebKit/chromium/src/WebEntities.cpp b/WebKit/chromium/src/WebEntities.cpp
index 665d8d9..30b619b 100644
--- a/WebKit/chromium/src/WebEntities.cpp
+++ b/WebKit/chromium/src/WebEntities.cpp
@@ -52,7 +52,7 @@ namespace {
 
 namespace WebKit {
 
-void populateMap(WTF::HashMap<int, WebCore::String>& map,
+void populateMap(WTF::HashMap<int, WTF::String>& map,
                  const Entity* entities,
                  size_t entitiesCount,
                  bool standardHTML)
diff --git a/WebKit/chromium/src/WebEntities.h b/WebKit/chromium/src/WebEntities.h
index ad3c310..a01cc5d 100644
--- a/WebKit/chromium/src/WebEntities.h
+++ b/WebKit/chromium/src/WebEntities.h
@@ -59,12 +59,12 @@ public:
     // entity name. If yes, return the entity notation. If not, returns an
     // empty string. Parameter isHTML indicates check the code in html entity
     // map or in xml entity map.
-    WebCore::String entityNameByCode(int code) const;
+    WTF::String entityNameByCode(int code) const;
 
     // Returns a new string with corresponding entity names replaced.
-    WebCore::String convertEntitiesInString(const WebCore::String&) const;
+    WTF::String convertEntitiesInString(const WTF::String&) const;
 private:
-    typedef HashMap<int, WebCore::String> EntitiesMapType;
+    typedef HashMap<int, WTF::String> EntitiesMapType;
     // An internal object that maps the Unicode character to corresponding
     // entity notation.
     EntitiesMapType m_entitiesMap;
diff --git a/WebKit/chromium/src/WebFileChooserCompletionImpl.cpp b/WebKit/chromium/src/WebFileChooserCompletionImpl.cpp
index 4152dc5..ef2409c 100644
--- a/WebKit/chromium/src/WebFileChooserCompletionImpl.cpp
+++ b/WebKit/chromium/src/WebFileChooserCompletionImpl.cpp
@@ -48,7 +48,7 @@ void WebFileChooserCompletionImpl::didChooseFile(const WebVector<WebString>& fil
         m_fileChooser->chooseFile(fileNames[0]);
     else {
         // This clause handles a case of file_names.size()==0 too.
-        Vector<WebCore::String> paths;
+        Vector<WTF::String> paths;
         for (size_t i = 0; i < fileNames.size(); ++i)
             paths.append(fileNames[i]);
         m_fileChooser->chooseFiles(paths);
diff --git a/WebKit/chromium/src/WebFrameImpl.h b/WebKit/chromium/src/WebFrameImpl.h
index 2511fce..00e8ecb 100644
--- a/WebKit/chromium/src/WebFrameImpl.h
+++ b/WebKit/chromium/src/WebFrameImpl.h
@@ -285,7 +285,7 @@ private:
     // It is not necessary if the frame is invisible, for example, or if this
     // is a repeat search that already returned nothing last time the same prefix
     // was searched.
-    bool shouldScopeMatches(const WebCore::String& searchText);
+    bool shouldScopeMatches(const WTF::String& searchText);
 
     // Queue up a deferred call to scopeStringMatches.
     void scopeStringMatchesSoon(
@@ -336,7 +336,7 @@ private:
     // short-circuiting searches in the following scenarios: When a frame has
     // been searched and returned 0 results, we don't need to search that frame
     // again if the user is just adding to the search (making it more specific).
-    WebCore::String m_lastSearchString;
+    WTF::String m_lastSearchString;
 
     // Keeps track of how many matches this frame has found so far, so that we
     // don't loose count between scoping efforts, and is also used (in conjunction
diff --git a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
index 265ef4f..3c3a1db 100644
--- a/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
+++ b/WebKit/chromium/src/WebGeolocationServiceBridgeImpl.cpp
@@ -58,7 +58,7 @@ using WebCore::GeolocationServiceClient;
 using WebCore::Geoposition;
 using WebCore::PositionError;
 using WebCore::PositionOptions;
-using WebCore::String;
+using WTF::String;
 
 namespace WebKit {
 
diff --git a/WebKit/chromium/src/WebGeolocationServiceMock.cpp b/WebKit/chromium/src/WebGeolocationServiceMock.cpp
index 00d819b..2a10c96 100644
--- a/WebKit/chromium/src/WebGeolocationServiceMock.cpp
+++ b/WebKit/chromium/src/WebGeolocationServiceMock.cpp
@@ -50,7 +50,7 @@ using WebCore::GeolocationServiceMock;
 using WebCore::Geoposition;
 using WebCore::PositionError;
 using WebCore::PositionOptions;
-using WebCore::String;
+using WTF::String;
 
 namespace WebCore {
 class GeolocationServiceChromiumMock : public GeolocationServiceChromium, public GeolocationServiceClient {
diff --git a/WebKit/chromium/src/WebKit.cpp b/WebKit/chromium/src/WebKit.cpp
index 8346ef8..1d717ea 100644
--- a/WebKit/chromium/src/WebKit.cpp
+++ b/WebKit/chromium/src/WebKit.cpp
@@ -57,7 +57,7 @@ void initialize(WebKitClient* webKitClient)
 
     WTF::initializeThreading();
     WTF::initializeMainThread();
-    WebCore::AtomicString::init();
+    WTF::AtomicString::init();
 
     // Chromium sets the minimum interval timeout to 4ms, overriding the
     // default of 10ms.  We'd like to go lower, however there are poorly
diff --git a/WebKit/chromium/src/WebMediaPlayerClientImpl.h b/WebKit/chromium/src/WebMediaPlayerClientImpl.h
index 0faac26..df179a8 100644
--- a/WebKit/chromium/src/WebMediaPlayerClientImpl.h
+++ b/WebKit/chromium/src/WebMediaPlayerClientImpl.h
@@ -70,7 +70,7 @@ public:
     virtual float volume() const;
 
     // MediaPlayerPrivateInterface methods:
-    virtual void load(const WebCore::String& url);
+    virtual void load(const WTF::String& url);
     virtual void cancelLoad();
 #if USE(ACCELERATED_COMPOSITING)
     virtual WebCore::PlatformLayer* platformLayer() const;
@@ -114,9 +114,9 @@ private:
     WebMediaPlayerClientImpl();
 
     static WebCore::MediaPlayerPrivateInterface* create(WebCore::MediaPlayer*);
-    static void getSupportedTypes(WTF::HashSet<WebCore::String>&);
+    static void getSupportedTypes(WTF::HashSet<WTF::String>&);
     static WebCore::MediaPlayer::SupportsType supportsType(
-        const WebCore::String& type, const WebCore::String& codecs);
+        const WTF::String& type, const WTF::String& codecs);
 
     WebCore::MediaPlayer* m_mediaPlayer;
     OwnPtr<WebMediaPlayer> m_webMediaPlayer;
diff --git a/WebKit/chromium/src/WebPageSerializerImpl.h b/WebKit/chromium/src/WebPageSerializerImpl.h
index 8f6a99f..aa8d235 100644
--- a/WebKit/chromium/src/WebPageSerializerImpl.h
+++ b/WebKit/chromium/src/WebPageSerializerImpl.h
@@ -34,6 +34,7 @@
 #include "PlatformString.h"
 #include "StringBuilder.h"
 #include "StringHash.h"
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/Vector.h>
 
@@ -47,7 +48,6 @@ namespace WebCore {
 class Document;
 class Element;
 class Node;
-class String;
 class TextEncoding;
 }
 
@@ -93,12 +93,12 @@ private:
     WebPageSerializerClient* m_client;
     // This hash map is used to map resource URL of original link to its local
     // file path.
-    typedef HashMap<WebCore::String, WebCore::String> LinkLocalPathMap;
+    typedef HashMap<WTF::String, WTF::String> LinkLocalPathMap;
     // local_links_ include all pair of local resource path and corresponding
     // original link.
     LinkLocalPathMap m_localLinks;
     // Data buffer for saving result of serialized DOM data.
-    WebCore::StringBuilder m_dataBuffer;
+    WTF::StringBuilder m_dataBuffer;
     // Passing true to recursive_serialization_ indicates we will serialize not
     // only the specified frame but also all sub-frames in the specific frame.
     // Otherwise we only serialize the specified frame excluded all sub-frames.
@@ -107,7 +107,7 @@ private:
     // serialized or not;
     bool m_framesCollected;
     // Local directory name of all local resource files.
-    WebCore::String m_localDirectoryName;
+    WTF::String m_localDirectoryName;
     // Vector for saving all frames which need to be serialized.
     Vector<WebFrameImpl*> m_frames;
 
@@ -124,7 +124,7 @@ private:
         // Document object of current frame.
         WebCore::Document* doc;
         // Local directory name of all local resource files.
-        const WebCore::String& directoryName;
+        const WTF::String& directoryName;
 
         // Flag indicates current doc is html document or not. It's a cache value
         // of Document.isHTMLDocument().
@@ -151,31 +151,31 @@ private:
         SerializeDomParam(const WebCore::KURL& currentFrameURL,
                           const WebCore::TextEncoding& textEncoding,
                           WebCore::Document* doc,
-                          const WebCore::String& directoryName);
+                          const WTF::String& directoryName);
     };
 
     // Collect all target frames which need to be serialized.
     void collectTargetFrames();
     // Before we begin serializing open tag of a element, we give the target
     // element a chance to do some work prior to add some additional data.
-    WebCore::String preActionBeforeSerializeOpenTag(const WebCore::Element* element,
+    WTF::String preActionBeforeSerializeOpenTag(const WebCore::Element* element,
                                                     SerializeDomParam* param,
                                                     bool* needSkip);
     // After we finish serializing open tag of a element, we give the target
     // element a chance to do some post work to add some additional data.
-    WebCore::String postActionAfterSerializeOpenTag(const WebCore::Element* element,
+    WTF::String postActionAfterSerializeOpenTag(const WebCore::Element* element,
                                                     SerializeDomParam* param);
     // Before we begin serializing end tag of a element, we give the target
     // element a chance to do some work prior to add some additional data.
-    WebCore::String preActionBeforeSerializeEndTag(const WebCore::Element* element,
+    WTF::String preActionBeforeSerializeEndTag(const WebCore::Element* element,
                                                    SerializeDomParam* param,
                                                    bool* needSkip);
     // After we finish serializing end tag of a element, we give the target
     // element a chance to do some post work to add some additional data.
-    WebCore::String postActionAfterSerializeEndTag(const WebCore::Element* element,
+    WTF::String postActionAfterSerializeEndTag(const WebCore::Element* element,
                                                    SerializeDomParam* param);
     // Save generated html content to data buffer.
-    void saveHTMLContentToBuffer(const WebCore::String& content,
+    void saveHTMLContentToBuffer(const WTF::String& content,
                                  SerializeDomParam* param);
     // Flushes the content buffer by encoding and sending the content to the
     // WebPageSerializerClient. Content is not flushed if the buffer is not full
diff --git a/WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp b/WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp
index a782023..6b04320 100644
--- a/WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp
+++ b/WebKit/chromium/src/WebSpeechInputControllerMockImpl.cpp
@@ -63,7 +63,7 @@ void WebSpeechInputControllerMockImpl::didCompleteRecognition()
     m_listener->didCompleteRecognition();
 }
 
-void WebSpeechInputControllerMockImpl::setRecognitionResult(const WebCore::String& result)
+void WebSpeechInputControllerMockImpl::setRecognitionResult(const WTF::String& result)
 {
     m_listener->setRecognitionResult(result);
 }
diff --git a/WebKit/chromium/src/WebSpeechInputControllerMockImpl.h b/WebKit/chromium/src/WebSpeechInputControllerMockImpl.h
index 5ef5109..046abf3 100644
--- a/WebKit/chromium/src/WebSpeechInputControllerMockImpl.h
+++ b/WebKit/chromium/src/WebSpeechInputControllerMockImpl.h
@@ -51,7 +51,7 @@ public:
     // WebCore::SpeechInputListener methods.
     void didCompleteRecording();
     void didCompleteRecognition();
-    void setRecognitionResult(const WebCore::String& result);
+    void setRecognitionResult(const WTF::String& result);
 
     // WebSpeechInputController methods.
     bool startRecognition();
diff --git a/WebKit/chromium/src/WebStorageNamespaceImpl.cpp b/WebKit/chromium/src/WebStorageNamespaceImpl.cpp
index 5fc6e16..53b4a75 100644
--- a/WebKit/chromium/src/WebStorageNamespaceImpl.cpp
+++ b/WebKit/chromium/src/WebStorageNamespaceImpl.cpp
@@ -61,7 +61,7 @@ WebStorageNamespaceImpl::~WebStorageNamespaceImpl()
 
 WebStorageArea* WebStorageNamespaceImpl::createStorageArea(const WebString& originString)
 {
-    WebCore::String originWebCoreString = originString;
+    WTF::String originWebCoreString = originString;
     if (originWebCoreString == "file://") {
         // FIXME: We should really be passing around WebSecurityOrigin objects
         //        to represent security origins instead of strings.  One issue
diff --git a/WebKit/chromium/src/WebString.cpp b/WebKit/chromium/src/WebString.cpp
index a61a059..bbbe9ce 100644
--- a/WebKit/chromium/src/WebString.cpp
+++ b/WebKit/chromium/src/WebString.cpp
@@ -39,7 +39,7 @@
 
 namespace WebKit {
 
-class WebStringPrivate : public WebCore::StringImpl {
+class WebStringPrivate : public WTF::StringImpl {
 };
 
 void WebString::reset()
@@ -58,7 +58,7 @@ void WebString::assign(const WebString& other)
 void WebString::assign(const WebUChar* data, size_t length)
 {
     assign(static_cast<WebStringPrivate*>(
-        WebCore::StringImpl::create(data, length).get()));
+        WTF::StringImpl::create(data, length).get()));
 }
 
 size_t WebString::length() const
@@ -73,17 +73,17 @@ const WebUChar* WebString::data() const
 
 WebCString WebString::utf8() const
 {
-    return WebCore::String(m_private).utf8();
+    return WTF::String(m_private).utf8();
 }
 
 WebString WebString::fromUTF8(const char* data, size_t length)
 {
-    return WebCore::String::fromUTF8(data, length);
+    return WTF::String::fromUTF8(data, length);
 }
 
 WebString WebString::fromUTF8(const char* data)
 {
-    return WebCore::String::fromUTF8(data);
+    return WTF::String::fromUTF8(data);
 }
 
 bool WebString::equals(const WebString& s) const
@@ -91,39 +91,39 @@ bool WebString::equals(const WebString& s) const
     return equal(m_private, s.m_private);
 }
 
-WebString::WebString(const WebCore::String& s)
+WebString::WebString(const WTF::String& s)
     : m_private(static_cast<WebStringPrivate*>(s.impl()))
 {
     if (m_private)
         m_private->ref();
 }
 
-WebString& WebString::operator=(const WebCore::String& s)
+WebString& WebString::operator=(const WTF::String& s)
 {
     assign(static_cast<WebStringPrivate*>(s.impl()));
     return *this;
 }
 
-WebString::operator WebCore::String() const
+WebString::operator WTF::String() const
 {
     return m_private;
 }
 
-WebString::WebString(const WebCore::AtomicString& s)
+WebString::WebString(const WTF::AtomicString& s)
     : m_private(0)
 {
     assign(s.string());
 }
 
-WebString& WebString::operator=(const WebCore::AtomicString& s)
+WebString& WebString::operator=(const WTF::AtomicString& s)
 {
     assign(s.string());
     return *this;
 }
 
-WebString::operator WebCore::AtomicString() const
+WebString::operator WTF::AtomicString() const
 {
-    return WebCore::AtomicString(static_cast<WebCore::StringImpl *>(m_private));
+    return WTF::AtomicString(static_cast<WTF::StringImpl *>(m_private));
 }
 
 void WebString::assign(WebStringPrivate* p)
diff --git a/WebKit/chromium/src/WebViewImpl.h b/WebKit/chromium/src/WebViewImpl.h
index 530fbf5..4f2a60b 100644
--- a/WebKit/chromium/src/WebViewImpl.h
+++ b/WebKit/chromium/src/WebViewImpl.h
@@ -496,7 +496,7 @@ private:
     // Inspector settings.
     WebString m_inspectorSettings;
 
-    typedef HashMap<WebCore::String, WebCore::String> SettingsMap;
+    typedef HashMap<WTF::String, WTF::String> SettingsMap;
     OwnPtr<SettingsMap> m_inspectorSettingsMap;
     OwnPtr<DragScrollTimer> m_dragScrollTimer;
 
diff --git a/WebKit/chromium/src/WebWorkerBase.cpp b/WebKit/chromium/src/WebWorkerBase.cpp
index 9593f5f..42f41d2 100644
--- a/WebKit/chromium/src/WebWorkerBase.cpp
+++ b/WebKit/chromium/src/WebWorkerBase.cpp
@@ -63,7 +63,7 @@ namespace {
 // call back to the worker context.
 class AllowDatabaseMainThreadBridge : public ThreadSafeShared<AllowDatabaseMainThreadBridge> {
 public:
-    static PassRefPtr<AllowDatabaseMainThreadBridge> create(WebWorkerBase* worker, const WebCore::String& mode, WebCommonWorkerClient* commonClient, WebFrame* frame, const WebCore::String& name, const WebCore::String& displayName, unsigned long estimatedSize)
+    static PassRefPtr<AllowDatabaseMainThreadBridge> create(WebWorkerBase* worker, const WTF::String& mode, WebCommonWorkerClient* commonClient, WebFrame* frame, const WTF::String& name, const WTF::String& displayName, unsigned long estimatedSize)
     {
         return adoptRef(new AllowDatabaseMainThreadBridge(worker, mode, commonClient, frame, name, displayName, estimatedSize));
     }
@@ -89,14 +89,14 @@ public:
     }
 
 private:
-    AllowDatabaseMainThreadBridge(WebWorkerBase* worker, const WebCore::String& mode, WebCommonWorkerClient* commonClient, WebFrame* frame, const WebCore::String& name, const WebCore::String& displayName, unsigned long estimatedSize)
+    AllowDatabaseMainThreadBridge(WebWorkerBase* worker, const WTF::String& mode, WebCommonWorkerClient* commonClient, WebFrame* frame, const WTF::String& name, const WTF::String& displayName, unsigned long estimatedSize)
         : m_worker(worker)
         , m_mode(mode)
     {
         worker->dispatchTaskToMainThread(createCallbackTask(&allowDatabaseTask, commonClient, frame, String(name), String(displayName), estimatedSize, this));
     }
 
-    static void allowDatabaseTask(WebCore::ScriptExecutionContext* context, WebCommonWorkerClient* commonClient, WebFrame* frame, const WebCore::String name, const WebCore::String displayName, unsigned long estimatedSize, PassRefPtr<AllowDatabaseMainThreadBridge> bridge)
+    static void allowDatabaseTask(WebCore::ScriptExecutionContext* context, WebCommonWorkerClient* commonClient, WebFrame* frame, const WTF::String name, const WTF::String displayName, unsigned long estimatedSize, PassRefPtr<AllowDatabaseMainThreadBridge> bridge)
     {
         if (!commonClient)
             bridge->signalCompleted(false);
@@ -112,7 +112,7 @@ private:
     bool m_result;
     Mutex m_mutex;
     WebWorkerBase* m_worker;
-    WebCore::String m_mode;
+    WTF::String m_mode;
 };
 }
 
diff --git a/WebKit/chromium/src/WebWorkerBase.h b/WebKit/chromium/src/WebWorkerBase.h
index 15e8013..22711f9 100644
--- a/WebKit/chromium/src/WebWorkerBase.h
+++ b/WebKit/chromium/src/WebWorkerBase.h
@@ -70,10 +70,10 @@ public:
         PassRefPtr<WebCore::SerializedScriptValue>,
         PassOwnPtr<WebCore::MessagePortChannelArray>);
     virtual void postExceptionToWorkerObject(
-        const WebCore::String&, int, const WebCore::String&);
+        const WTF::String&, int, const WTF::String&);
     virtual void postConsoleMessageToWorkerObject(
         WebCore::MessageSource, WebCore::MessageType,
-        WebCore::MessageLevel, const WebCore::String&, int, const WebCore::String&);
+        WebCore::MessageLevel, const WTF::String&, int, const WTF::String&);
     virtual void confirmMessageFromWorkerObject(bool);
     virtual void reportPendingActivity(bool);
     virtual void workerContextClosed();
@@ -82,7 +82,7 @@ public:
     // WebCore::WorkerLoaderProxy methods:
     virtual void postTaskToLoader(PassOwnPtr<WebCore::ScriptExecutionContext::Task>);
     virtual void postTaskForModeToWorkerContext(
-        PassOwnPtr<WebCore::ScriptExecutionContext::Task>, const WebCore::String& mode);
+        PassOwnPtr<WebCore::ScriptExecutionContext::Task>, const WTF::String& mode);
 
     // WebFrameClient methods to support resource loading thru the 'shadow page'.
     virtual void didCreateDataSource(WebFrame*, WebDataSource*);
@@ -115,23 +115,23 @@ private:
     static void postMessageTask(
         WebCore::ScriptExecutionContext* context,
         WebWorkerBase* thisPtr,
-        WebCore::String message,
+        WTF::String message,
         PassOwnPtr<WebCore::MessagePortChannelArray> channels);
     static void postExceptionTask(
         WebCore::ScriptExecutionContext* context,
         WebWorkerBase* thisPtr,
-        const WebCore::String& message,
+        const WTF::String& message,
         int lineNumber,
-        const WebCore::String& sourceURL);
+        const WTF::String& sourceURL);
     static void postConsoleMessageTask(
         WebCore::ScriptExecutionContext* context,
         WebWorkerBase* thisPtr,
         int source,
         int type,
         int level,
-        const WebCore::String& message,
+        const WTF::String& message,
         int lineNumber,
-        const WebCore::String& sourceURL);
+        const WTF::String& sourceURL);
     static void confirmMessageTask(
         WebCore::ScriptExecutionContext* context,
         WebWorkerBase* thisPtr,
diff --git a/WebKit/chromium/src/WebWorkerClientImpl.h b/WebKit/chromium/src/WebWorkerClientImpl.h
index 758c376..741d606 100644
--- a/WebKit/chromium/src/WebWorkerClientImpl.h
+++ b/WebKit/chromium/src/WebWorkerClientImpl.h
@@ -64,8 +64,8 @@ public:
     // process, this will be the main WebKit thread.  In the worker process, this
     // will be the thread of the executing worker (not the main WebKit thread).
     virtual void startWorkerContext(const WebCore::KURL&,
-                                    const WebCore::String&,
-                                    const WebCore::String&);
+                                    const WTF::String&,
+                                    const WTF::String&);
     virtual void terminateWorkerContext();
     virtual void postMessageToWorkerContext(
         PassRefPtr<WebCore::SerializedScriptValue> message,
@@ -108,14 +108,14 @@ private:
     // These tasks are dispatched on the WebKit thread.
     static void startWorkerContextTask(WebCore::ScriptExecutionContext* context,
                                        WebWorkerClientImpl* thisPtr,
-                                       const WebCore::String& scriptURL,
-                                       const WebCore::String& userAgent,
-                                       const WebCore::String& sourceCode);
+                                       const WTF::String& scriptURL,
+                                       const WTF::String& userAgent,
+                                       const WTF::String& sourceCode);
     static void terminateWorkerContextTask(WebCore::ScriptExecutionContext* context,
                                            WebWorkerClientImpl* thisPtr);
     static void postMessageToWorkerContextTask(WebCore::ScriptExecutionContext* context,
                                                WebWorkerClientImpl* thisPtr,
-                                               const WebCore::String& message,
+                                               const WTF::String& message,
                                                PassOwnPtr<WebCore::MessagePortChannelArray> channels);
     static void workerObjectDestroyedTask(WebCore::ScriptExecutionContext* context,
                                           WebWorkerClientImpl* thisPtr);
@@ -125,21 +125,21 @@ private:
     // worker process).
     static void postMessageToWorkerObjectTask(WebCore::ScriptExecutionContext* context,
                                               WebWorkerClientImpl* thisPtr,
-                                              const WebCore::String& message,
+                                              const WTF::String& message,
                                               PassOwnPtr<WebCore::MessagePortChannelArray> channels);
     static void postExceptionToWorkerObjectTask(WebCore::ScriptExecutionContext* context,
                                                 WebWorkerClientImpl* thisPtr,
-                                                const WebCore::String& message,
+                                                const WTF::String& message,
                                                 int lineNumber,
-                                                const WebCore::String& sourceURL);
+                                                const WTF::String& sourceURL);
     static void postConsoleMessageToWorkerObjectTask(WebCore::ScriptExecutionContext* context,
                                                      WebWorkerClientImpl* thisPtr,
                                                      int sourceId,
                                                      int messageType,
                                                      int messageLevel,
-                                                     const WebCore::String& message,
+                                                     const WTF::String& message,
                                                      int lineNumber,
-                                                     const WebCore::String& sourceURL);
+                                                     const WTF::String& sourceURL);
     static void confirmMessageFromWorkerObjectTask(WebCore::ScriptExecutionContext* context,
                                                    WebWorkerClientImpl* thisPtr);
     static void reportPendingActivityTask(WebCore::ScriptExecutionContext* context,
diff --git a/WebKit/chromium/src/WebWorkerImpl.h b/WebKit/chromium/src/WebWorkerImpl.h
index bec96cd..d2fd016 100644
--- a/WebKit/chromium/src/WebWorkerImpl.h
+++ b/WebKit/chromium/src/WebWorkerImpl.h
@@ -69,7 +69,7 @@ private:
     static void postMessageToWorkerContextTask(
         WebCore::ScriptExecutionContext* context,
         WebWorkerImpl* thisPtr,
-        const WebCore::String& message,
+        const WTF::String& message,
         PassOwnPtr<WebCore::MessagePortChannelArray> channels);
 
     WebWorkerClient* m_client;
diff --git a/WebKit/chromium/tests/KURLTest.cpp b/WebKit/chromium/tests/KURLTest.cpp
index 6be4966..cf732b2 100644
--- a/WebKit/chromium/tests/KURLTest.cpp
+++ b/WebKit/chromium/tests/KURLTest.cpp
@@ -40,7 +40,7 @@
 namespace {
 
 // Output stream operator so gTest's macros work with WebCore strings.
-std::ostream& operator<<(std::ostream& out, const WebCore::String& str)
+std::ostream& operator<<(std::ostream& out, const WTF::String& str)
 {
     return str.isEmpty() ? out : out << str.utf8().data();
 }
@@ -95,7 +95,7 @@ TEST(KURLTest, SameGetters)
         EXPECT_EQ(cases[i].hasRef, kurl.hasFragmentIdentifier());
 
         // UTF-16
-        WebCore::String utf16(cases[i].url);
+        WTF::String utf16(cases[i].url);
         kurl = WebCore::KURL(WebCore::ParsedURLString, utf16);
 
         EXPECT_EQ(cases[i].protocol, kurl.protocol());
@@ -144,7 +144,7 @@ TEST(KURLTest, DifferentGetters)
         EXPECT_EQ(cases[i].query, kurl.query());
         // Want to compare UCS-16 refs (or to null).
         if (cases[i].ref)
-            EXPECT_EQ(WebCore::String::fromUTF8(cases[i].ref), kurl.fragmentIdentifier());
+            EXPECT_EQ(WTF::String::fromUTF8(cases[i].ref), kurl.fragmentIdentifier());
         else
             EXPECT_TRUE(kurl.fragmentIdentifier().isNull());
     }
@@ -156,13 +156,13 @@ TEST(KURLTest, UTF8)
 {
     const char asciiURL[] = "http://foo/bar#baz";
     WebCore::KURL asciiKURL(WebCore::ParsedURLString, asciiURL);
-    EXPECT_TRUE(asciiKURL.string() == WebCore::String(asciiURL));
+    EXPECT_TRUE(asciiKURL.string() == WTF::String(asciiURL));
 
     // When the result is ASCII, we should get an ASCII String. Some
     // code depends on being able to compare the result of the .string()
     // getter with another String, and the isASCIIness of the two
     // strings must match for these functions (like equalIgnoringCase).
-    EXPECT_TRUE(WebCore::equalIgnoringCase(asciiKURL, WebCore::String(asciiURL)));
+    EXPECT_TRUE(WebCore::equalIgnoringCase(asciiKURL, WTF::String(asciiURL)));
 
     // Reproduce code path in FrameLoader.cpp -- equalIgnoringCase implicitly
     // expects gkurl.protocol() to have been created as ascii.
@@ -172,7 +172,7 @@ TEST(KURLTest, UTF8)
     const char utf8URL[] = "http://foo/bar#\xe4\xbd\xa0\xe5\xa5\xbd";
     WebCore::KURL utf8KURL(WebCore::ParsedURLString, utf8URL);
 
-    EXPECT_TRUE(utf8KURL.string() == WebCore::String::fromUTF8(utf8URL));
+    EXPECT_TRUE(utf8KURL.string() == WTF::String::fromUTF8(utf8URL));
 }
 
 TEST(KURLTest, Setters)
@@ -281,20 +281,20 @@ TEST(KURLTest, Decode)
     };
 
     for (size_t i = 0; i < ARRAYSIZE_UNSAFE(decodeCases); i++) {
-        WebCore::String input(decodeCases[i].input);
-        WebCore::String str = WebCore::decodeURLEscapeSequences(input);
+        WTF::String input(decodeCases[i].input);
+        WTF::String str = WebCore::decodeURLEscapeSequences(input);
         EXPECT_STREQ(decodeCases[i].output, str.utf8().data());
     }
 
     // Our decode should decode %00
-    WebCore::String zero = WebCore::decodeURLEscapeSequences("%00");
+    WTF::String zero = WebCore::decodeURLEscapeSequences("%00");
     EXPECT_STRNE("%00", zero.utf8().data());
 
     // Test the error behavior for invalid UTF-8 (we differ from WebKit here).
-    WebCore::String invalid = WebCore::decodeURLEscapeSequences(
+    WTF::String invalid = WebCore::decodeURLEscapeSequences(
         "%e4%a0%e5%a5%bd");
     char16 invalidExpectedHelper[4] = { 0x00e4, 0x00a0, 0x597d, 0 };
-    WebCore::String invalidExpected(
+    WTF::String invalidExpected(
         reinterpret_cast<const ::UChar*>(invalidExpectedHelper),
         3);
     EXPECT_EQ(invalidExpected, invalid);
@@ -305,20 +305,20 @@ TEST(KURLTest, Encode)
 {
     // Also test that it gets converted to UTF-8 properly.
     char16 wideInputHelper[3] = { 0x4f60, 0x597d, 0 };
-    WebCore::String wideInput(
+    WTF::String wideInput(
         reinterpret_cast<const ::UChar*>(wideInputHelper), 2);
-    WebCore::String wideReference("\xe4\xbd\xa0\xe5\xa5\xbd", 6);
-    WebCore::String wideOutput =
+    WTF::String wideReference("\xe4\xbd\xa0\xe5\xa5\xbd", 6);
+    WTF::String wideOutput =
         WebCore::encodeWithURLEscapeSequences(wideInput);
     EXPECT_EQ(wideReference, wideOutput);
 
     // Our encode only escapes NULLs for safety (see the implementation for
     // more), so we only bother to test a few cases.
-    WebCore::String input(
+    WTF::String input(
         "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", 16);
-    WebCore::String reference(
+    WTF::String reference(
         "%00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", 18);
-    WebCore::String output = WebCore::encodeWithURLEscapeSequences(input);
+    WTF::String output = WebCore::encodeWithURLEscapeSequences(input);
     EXPECT_EQ(reference, output);
 }
 
@@ -395,7 +395,7 @@ TEST(KURLTest, Path)
     WebCore::KURL kurl(WebCore::ParsedURLString, initial);
 
     // Clear by setting a null string.
-    WebCore::String nullString;
+    WTF::String nullString;
     EXPECT_TRUE(nullString.isNull());
     kurl.setPath(nullString);
     EXPECT_STREQ("http://www.google.com/", kurl.string().utf8().data());
@@ -409,14 +409,14 @@ TEST(KURLTest, Query)
     WebCore::KURL kurl(WebCore::ParsedURLString, initial);
 
     // Clear by setting a null string.
-    WebCore::String nullString;
+    WTF::String nullString;
     EXPECT_TRUE(nullString.isNull());
     kurl.setQuery(nullString);
     EXPECT_STREQ("http://www.google.com/search", kurl.string().utf8().data());
 
     // Clear by setting an empty string.
     kurl = WebCore::KURL(WebCore::ParsedURLString, initial);
-    WebCore::String emptyString("");
+    WTF::String emptyString("");
     EXPECT_FALSE(emptyString.isNull());
     kurl.setQuery(emptyString);
     EXPECT_STREQ("http://www.google.com/search?", kurl.string().utf8().data());
@@ -456,10 +456,10 @@ TEST(KURLTest, Ref)
 
     // Setting the ref to the null string will clear it altogether.
     cur = WebCore::KURL(WebCore::ParsedURLString, "http://foo/bar");
-    cur.setFragmentIdentifier(WebCore::String());
+    cur.setFragmentIdentifier(WTF::String());
     EXPECT_STREQ("http://foo/bar", cur.string().utf8().data());
     cur = kurl;
-    cur.setFragmentIdentifier(WebCore::String());
+    cur.setFragmentIdentifier(WTF::String());
     EXPECT_STREQ("http://foo/bar", cur.string().utf8().data());
 }
 
@@ -485,7 +485,7 @@ TEST(KURLTest, Empty)
     EXPECT_TRUE(kurl2.string().isEmpty());
 
     // Resolve the null URL on a null string.
-    WebCore::KURL kurl22(kurl, WebCore::String());
+    WebCore::KURL kurl22(kurl, WTF::String());
     EXPECT_FALSE(kurl22.isNull());
     EXPECT_TRUE(kurl22.isEmpty());
     EXPECT_FALSE(kurl22.isValid());
diff --git a/WebKit/efl/ChangeLog b/WebKit/efl/ChangeLog
index b97e523..0a627e7 100644
--- a/WebKit/efl/ChangeLog
+++ b/WebKit/efl/ChangeLog
@@ -1,3 +1,13 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebCoreSupport/InspectorClientEfl.h:
+
 2010-08-06  Jessie Berlin  <jberlin at apple.com>
 
         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
diff --git a/WebKit/efl/WebCoreSupport/DragClientEfl.h b/WebKit/efl/WebCoreSupport/DragClientEfl.h
index 40bb6ad..f73116c 100644
--- a/WebKit/efl/WebCoreSupport/DragClientEfl.h
+++ b/WebKit/efl/WebCoreSupport/DragClientEfl.h
@@ -45,7 +45,7 @@ public:
     virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint);
 
     virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false);
-    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WebCore::String& label, WebCore::Frame*);
+    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
 
     virtual void dragControllerDestroyed();
 };
diff --git a/WebKit/efl/WebCoreSupport/InspectorClientEfl.h b/WebKit/efl/WebCoreSupport/InspectorClientEfl.h
index 1ca646d..0c283d8 100644
--- a/WebKit/efl/WebCoreSupport/InspectorClientEfl.h
+++ b/WebKit/efl/WebCoreSupport/InspectorClientEfl.h
@@ -33,11 +33,11 @@
 #define InspectorClientEfl_h
 
 #include "InspectorClient.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 class Node;
 class Page;
-class String;
 
 class InspectorClientEfl : public WebCore::InspectorClient {
 public:
diff --git a/WebKit/efl/ewk/ewk_contextmenu.cpp b/WebKit/efl/ewk/ewk_contextmenu.cpp
index 9daf27c..7461359 100644
--- a/WebKit/efl/ewk/ewk_contextmenu.cpp
+++ b/WebKit/efl/ewk/ewk_contextmenu.cpp
@@ -112,7 +112,7 @@ Eina_Bool ewk_context_menu_item_select(Ewk_Context_Menu* menu, Ewk_Context_Menu_
     WebCore::ContextMenuItemType type = static_cast<WebCore::ContextMenuItemType>(item->type);
 
     // Don't care about title and submenu as they're not used after this point.
-    WebCore::ContextMenuItem core(type, action, WebCore::String());
+    WebCore::ContextMenuItem core(type, action, WTF::String());
     menu->controller->contextMenuItemSelected(&core);
     return EINA_TRUE;
 }
diff --git a/WebKit/efl/ewk/ewk_frame.cpp b/WebKit/efl/ewk/ewk_frame.cpp
index ca76f02..fcf5ed3 100644
--- a/WebKit/efl/ewk/ewk_frame.cpp
+++ b/WebKit/efl/ewk/ewk_frame.cpp
@@ -335,7 +335,7 @@ void ewk_frame_theme_set(Evas_Object* o, const char* path)
     if (!eina_stringshare_replace(&sd->theme, path))
         return;
     if (sd->frame && sd->frame->view()) {
-        sd->frame->view()->setEdjeTheme(WebCore::String(path));
+        sd->frame->view()->setEdjeTheme(WTF::String(path));
         sd->frame->page()->theme()->themeChanged();
     }
 }
@@ -406,8 +406,8 @@ Evas_Object* ewk_frame_child_find(Evas_Object* o, const char* name)
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, 0);
     EINA_SAFETY_ON_NULL_RETURN_VAL(name, 0);
     EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, 0);
-    WebCore::String s = WebCore::String::fromUTF8(name);
-    return kit(sd->frame->tree()->find(WebCore::AtomicString(s)));
+    WTF::String s = WTF::String::fromUTF8(name);
+    return kit(sd->frame->tree()->find(WTF::AtomicString(s)));
 }
 
 /**
@@ -419,7 +419,7 @@ Evas_Object* ewk_frame_child_find(Evas_Object* o, const char* name)
 Eina_Bool ewk_frame_uri_set(Evas_Object* o, const char* uri)
 {
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
-    WebCore::KURL kurl(WebCore::KURL(), WebCore::String::fromUTF8(uri));
+    WebCore::KURL kurl(WebCore::KURL(), WTF::String::fromUTF8(uri));
     WebCore::ResourceRequest req(kurl);
     WebCore::FrameLoader* loader = sd->frame->loader();
     loader->load(req, false);
@@ -474,7 +474,7 @@ const char* ewk_frame_name_get(const Evas_Object* o)
         return 0;
     }
 
-    WebCore::String s = sd->frame->tree()->name();
+    WTF::String s = sd->frame->tree()->name();
     WTF::CString cs = s.utf8();
     sd->name = eina_stringshare_add_length(cs.data(), cs.length());
     return sd->name;
@@ -515,18 +515,18 @@ static Eina_Bool _ewk_frame_contents_set_internal(Ewk_Frame_Smart_Data *sd, cons
     if (!base_uri)
         base_uri = "about:blank";
 
-    WebCore::KURL baseKURL(WebCore::KURL(), WebCore::String::fromUTF8(base_uri));
+    WebCore::KURL baseKURL(WebCore::KURL(), WTF::String::fromUTF8(base_uri));
     WebCore::KURL unreachableKURL;
     if (unreachable_uri)
-        unreachableKURL = WebCore::KURL(WebCore::KURL(), WebCore::String::fromUTF8(unreachable_uri));
+        unreachableKURL = WebCore::KURL(WebCore::KURL(), WTF::String::fromUTF8(unreachable_uri));
     else
         unreachableKURL = WebCore::KURL();
 
     WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(contents, contents_size);
     WebCore::SubstituteData substituteData
         (buffer.release(),
-         WebCore::String::fromUTF8(mime_type),
-         WebCore::String::fromUTF8(encoding),
+         WTF::String::fromUTF8(mime_type),
+         WTF::String::fromUTF8(encoding),
          baseKURL, unreachableKURL);
     WebCore::ResourceRequest request(baseKURL);
 
@@ -601,7 +601,7 @@ Eina_Bool ewk_frame_script_execute(Evas_Object* o, const char* script)
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EINA_SAFETY_ON_FALSE_RETURN_VAL(sd->frame, EINA_FALSE);
     EINA_SAFETY_ON_NULL_RETURN_VAL(script, EINA_FALSE);
-    sd->frame->script()->executeScript(WebCore::String::fromUTF8(script), true);
+    sd->frame->script()->executeScript(WTF::String::fromUTF8(script), true);
     return EINA_TRUE;
 }
 
@@ -658,7 +658,7 @@ char* ewk_frame_selection_get(const Evas_Object* o)
 
 static inline Eina_Bool _ewk_frame_editor_command(Ewk_Frame_Smart_Data* sd, const char* command)
 {
-    return sd->frame->editor()->command(WebCore::String::fromUTF8(command)).execute();
+    return sd->frame->editor()->command(WTF::String::fromUTF8(command)).execute();
 }
 
 /**
@@ -750,7 +750,7 @@ Eina_Bool ewk_frame_text_search(const Evas_Object* o, const char* string, Eina_B
     EINA_SAFETY_ON_NULL_RETURN_VAL(sd->frame, EINA_FALSE);
     EINA_SAFETY_ON_NULL_RETURN_VAL(string, EINA_FALSE);
 
-    return sd->frame->findString(WebCore::String::fromUTF8(string), forward, case_sensitive, wrap, true);
+    return sd->frame->findString(WTF::String::fromUTF8(string), forward, case_sensitive, wrap, true);
 }
 
 /**
@@ -771,7 +771,7 @@ unsigned int ewk_frame_text_matches_mark(Evas_Object* o, const char* string, Ein
     EINA_SAFETY_ON_NULL_RETURN_VAL(string, 0);
 
     sd->frame->setMarkedTextMatchesAreHighlighted(highlight);
-    return sd->frame->markAllMatchesForText(WebCore::String::fromUTF8(string), case_sensitive, limit);
+    return sd->frame->markAllMatchesForText(WTF::String::fromUTF8(string), case_sensitive, limit);
 }
 
 /**
@@ -1560,7 +1560,7 @@ Eina_Bool ewk_frame_init(Evas_Object* o, Evas_Object* view, WebCore::Frame* fram
     return EINA_FALSE;
 }
 
-Evas_Object* ewk_frame_child_add(Evas_Object* o, WTF::PassRefPtr<WebCore::Frame> child, const WebCore::String& name, const WebCore::KURL& url, const WebCore::String& referrer)
+Evas_Object* ewk_frame_child_add(Evas_Object* o, WTF::PassRefPtr<WebCore::Frame> child, const WTF::String& name, const WebCore::KURL& url, const WTF::String& referrer)
 {
     EWK_FRAME_SD_GET_OR_RETURN(o, sd, 0);
     char buf[256];
@@ -1690,8 +1690,8 @@ void ewk_frame_view_state_save(Evas_Object *o, WebCore::HistoryItem* item)
     const char *title = ewk_frame_title_get(o);
     const char *uri = ewk_frame_uri_get(o);
 
-    item->setTitle(WebCore::String::fromUTF8(title));
-    item->setURLString(WebCore::String::fromUTF8(uri));
+    item->setTitle(WTF::String::fromUTF8(title));
+    item->setURLString(WTF::String::fromUTF8(uri));
 
     evas_object_smart_callback_call(o, "state,save", 0);
 }
@@ -1946,7 +1946,7 @@ void ewk_frame_force_layout(Evas_Object* o)
         view->forceLayout(true);
 }
 
-WTF::PassRefPtr<WebCore::Widget> ewk_frame_plugin_create(Evas_Object* o, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues, const WebCore::String& mimeType, bool loadManually)
+WTF::PassRefPtr<WebCore::Widget> ewk_frame_plugin_create(Evas_Object* o, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues, const WTF::StringWTF::String& mimeType, bool loadManually)
 {
     return 0;
 }
diff --git a/WebKit/efl/ewk/ewk_history.cpp b/WebKit/efl/ewk/ewk_history.cpp
index da48c33..8387da1 100644
--- a/WebKit/efl/ewk/ewk_history.cpp
+++ b/WebKit/efl/ewk/ewk_history.cpp
@@ -415,8 +415,8 @@ Eina_Bool ewk_history_limit_set(const Ewk_History* history, int limit)
  */
 Ewk_History_Item* ewk_history_item_new(const char* uri, const char* title)
 {
-    WebCore::String u = WebCore::String::fromUTF8(uri);
-    WebCore::String t = WebCore::String::fromUTF8(title);
+    WTF::String u = WTF::String::fromUTF8(uri);
+    WTF::String t = WTF::String::fromUTF8(title);
     WTF::RefPtr<WebCore::HistoryItem> core = WebCore::HistoryItem::create(u, t, 0);
     Ewk_History_Item* item = _ewk_history_item_new(core.release().releaseRef());
     return item;
@@ -507,7 +507,7 @@ void ewk_history_item_title_alternate_set(Ewk_History_Item* item, const char* ti
     EWK_HISTORY_ITEM_CORE_GET_OR_RETURN(item, core);
     if (!eina_stringshare_replace(&item->alternate_title, title))
         return;
-    core->setAlternateTitle(WebCore::String::fromUTF8(title));
+    core->setAlternateTitle(WTF::String::fromUTF8(title));
 }
 
 /**
diff --git a/WebKit/efl/ewk/ewk_private.h b/WebKit/efl/ewk/ewk_private.h
index 2096e76..f69f46c 100644
--- a/WebKit/efl/ewk/ewk_private.h
+++ b/WebKit/efl/ewk/ewk_private.h
@@ -97,9 +97,9 @@ void ewk_view_repaint(Evas_Object *o, Evas_Coord x, Evas_Coord y, Evas_Coord w,
 void ewk_view_scroll(Evas_Object *o, Evas_Coord dx, Evas_Coord dy, Evas_Coord sx, Evas_Coord sy, Evas_Coord sw, Evas_Coord sh, Evas_Coord cx, Evas_Coord cy, Evas_Coord cw, Evas_Coord ch, Eina_Bool main_frame);
 WebCore::Page *ewk_view_core_page_get(const Evas_Object *o);
 
-WTF::PassRefPtr<WebCore::Frame> ewk_view_frame_create(Evas_Object *o, Evas_Object *frame, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, const WebCore::KURL& url, const WebCore::String& referrer);
+WTF::PassRefPtr<WebCore::Frame> ewk_view_frame_create(Evas_Object *o, Evas_Object *frame, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, const WebCore::KURL& url, const WTF::String& referrer);
 
-WTF::PassRefPtr<WebCore::Widget> ewk_view_plugin_create(Evas_Object* o, Evas_Object* frame, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues, const WebCore::String& mimeType, bool loadManually);
+WTF::PassRefPtr<WebCore::Widget> ewk_view_plugin_create(Evas_Object* o, Evas_Object* frame, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues, const WTF::String& mimeType, bool loadManually);
 
 void ewk_view_popup_new(Evas_Object *o, WebCore::PopupMenuClient* client, int selected, const WebCore::IntRect& rect);
 void ewk_view_viewport_set(Evas_Object *o, float w, float h, float init_scale, float max_scale, float min_scale, float user_scalable);
@@ -119,7 +119,7 @@ Ewk_Window_Features *ewk_window_features_new_from_core(const WebCore::WindowFeat
 
 Evas_Object *ewk_frame_add(Evas *e);
 Eina_Bool ewk_frame_init(Evas_Object *o, Evas_Object *view, WebCore::Frame *frame);
-Evas_Object *ewk_frame_child_add(Evas_Object *o, WTF::PassRefPtr<WebCore::Frame> child, const WebCore::String& name, const WebCore::KURL& url, const WebCore::String& referrer);
+Evas_Object *ewk_frame_child_add(Evas_Object *o, WTF::PassRefPtr<WebCore::Frame> child, const WTF::String& name, const WebCore::KURL& url, const WTF::String& referrer);
 
 WebCore::Frame *ewk_frame_core_get(const Evas_Object *o);
 void ewk_frame_core_gone(Evas_Object *o);
@@ -146,7 +146,7 @@ void ewk_frame_view_create_for_view(Evas_Object *o, Evas_Object *view);
 Eina_Bool ewk_frame_uri_changed(Evas_Object *o);
 void ewk_frame_force_layout(Evas_Object *o);
 
-WTF::PassRefPtr<WebCore::Widget> ewk_frame_plugin_create(Evas_Object* o, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues, const WebCore::String& mimeType, bool loadManually);
+WTF::PassRefPtr<WebCore::Widget> ewk_frame_plugin_create(Evas_Object* o, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues, const WTF::String& mimeType, bool loadManually);
 
 #ifdef __cplusplus
 
diff --git a/WebKit/efl/ewk/ewk_settings.cpp b/WebKit/efl/ewk/ewk_settings.cpp
index e775ac9..6d2be05 100644
--- a/WebKit/efl/ewk/ewk_settings.cpp
+++ b/WebKit/efl/ewk/ewk_settings.cpp
@@ -67,7 +67,7 @@ uint64_t ewk_settings_web_database_default_quota_get()
 void ewk_settings_web_database_path_set(const char *path)
 {
 #if ENABLE(DATABASE)
-    WebCore::String corePath = WebCore::String::fromUTF8(path);
+    WTF::String corePath = WTF::String::fromUTF8(path);
     WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath);
 #endif
 }
@@ -82,7 +82,7 @@ void ewk_settings_web_database_path_set(const char *path)
 const char *ewk_settings_web_database_path_get()
 {
 #if ENABLE(DATABASE)
-    WebCore::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath();
+    WTF::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath();
     return strdup(path.utf8().data());
 #else
     return 0;
@@ -121,7 +121,7 @@ Eina_Bool ewk_settings_icon_database_path_set(const char *directory)
         }
 
         WebCore::iconDatabase()->setEnabled(true);
-        WebCore::iconDatabase()->open(WebCore::String::fromUTF8(directory));
+        WebCore::iconDatabase()->open(WTF::String::fromUTF8(directory));
     } else {
         WebCore::iconDatabase()->setEnabled(false);
         WebCore::iconDatabase()->close();
@@ -144,7 +144,7 @@ char* ewk_settings_icon_database_path_get(void)
     if (!WebCore::iconDatabase()->isOpen())
         return 0;
 
-    WebCore::String path = WebCore::iconDatabase()->databasePath();
+    WTF::String path = WebCore::iconDatabase()->databasePath();
     if (path.isEmpty())
         return 0;
     return strdup(path.utf8().data());
@@ -184,7 +184,7 @@ cairo_surface_t* ewk_settings_icon_database_icon_surface_get(const char *url)
 {
     EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0);
 
-    WebCore::KURL kurl(WebCore::KURL(), WebCore::String::fromUTF8(url));
+    WebCore::KURL kurl(WebCore::KURL(), WTF::String::fromUTF8(url));
     WebCore::Image *icon = WebCore::iconDatabase()->iconForPageURL(kurl.string(), WebCore::IntSize(16, 16));
 
     if (!icon) {
@@ -216,7 +216,7 @@ Evas_Object* ewk_settings_icon_database_icon_object_add(const char* url, Evas* c
     EINA_SAFETY_ON_NULL_RETURN_VAL(url, 0);
     EINA_SAFETY_ON_NULL_RETURN_VAL(canvas, 0);
 
-    WebCore::KURL kurl(WebCore::KURL(), WebCore::String::fromUTF8(url));
+    WebCore::KURL kurl(WebCore::KURL(), WTF::String::fromUTF8(url));
     WebCore::Image* icon = WebCore::iconDatabase()->iconForPageURL(kurl.string(), WebCore::IntSize(16, 16));
     cairo_surface_t* surface;
 
diff --git a/WebKit/efl/ewk/ewk_view.cpp b/WebKit/efl/ewk/ewk_view.cpp
index ed6fb4d..c030c1c 100644
--- a/WebKit/efl/ewk/ewk_view.cpp
+++ b/WebKit/efl/ewk/ewk_view.cpp
@@ -511,7 +511,7 @@ static WTF::PassRefPtr<WebCore::Frame> _ewk_view_core_frame_new(Ewk_View_Smart_D
         CRITICAL("Could not create frame loader client.");
         return 0;
     }
-    flc->setCustomUserAgent(WebCore::String::fromUTF8(priv->settings.user_agent));
+    flc->setCustomUserAgent(WTF::String::fromUTF8(priv->settings.user_agent));
 
     return WebCore::Frame::create(priv->page, owner, flc);
 }
@@ -522,7 +522,7 @@ static Ewk_View_Private_Data* _ewk_view_priv_new(Ewk_View_Smart_Data* sd)
 {
     Ewk_View_Private_Data* priv =
         (Ewk_View_Private_Data*)calloc(1, sizeof(Ewk_View_Private_Data));
-    WebCore::AtomicString s;
+    WTF::AtomicString s;
     WebCore::KURL url;
 
     if (!priv) {
@@ -1331,7 +1331,7 @@ Eina_Bool ewk_view_text_search(const Evas_Object* o, const char* string, Eina_Bo
     else
         direction = WebCore::FindDirectionBackward;
 
-    return priv->page->findString(WebCore::String::fromUTF8(string), sensitive, direction, wrap);
+    return priv->page->findString(WTF::String::fromUTF8(string), sensitive, direction, wrap);
 }
 
 /**
@@ -1357,7 +1357,7 @@ unsigned int ewk_view_text_matches_mark(Evas_Object* o, const char* string, Eina
     else
         sensitive = WebCore::TextCaseInsensitive;
 
-    return priv->page->markAllMatchesForText(WebCore::String::fromUTF8(string), sensitive, highlight, limit);
+    return priv->page->markAllMatchesForText(WTF::String::fromUTF8(string), sensitive, highlight, limit);
 }
 
 /**
@@ -1435,7 +1435,7 @@ char* ewk_view_selection_get(const Evas_Object* o)
 
 static Eina_Bool _ewk_view_editor_command(Ewk_View_Private_Data* priv, const char* command)
 {
-    return priv->page->focusController()->focusedOrMainFrame()->editor()->command(WebCore::String::fromUTF8(command)).execute();
+    return priv->page->focusController()->focusedOrMainFrame()->editor()->command(WTF::String::fromUTF8(command)).execute();
 }
 
 /**
@@ -2190,7 +2190,7 @@ Eina_Bool ewk_view_setting_user_agent_set(Evas_Object* o, const char* user_agent
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.user_agent, user_agent)) {
         WebCore::FrameLoaderClientEfl* client = static_cast<WebCore::FrameLoaderClientEfl*>(priv->main_frame->loader()->client());
-        client->setCustomUserAgent(WebCore::String::fromUTF8(user_agent));
+        client->setCustomUserAgent(WTF::String::fromUTF8(user_agent));
     }
     return EINA_TRUE;
 }
@@ -2207,7 +2207,7 @@ Eina_Bool ewk_view_setting_user_stylesheet_set(Evas_Object* o, const char* uri)
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.user_stylesheet, uri)) {
-        WebCore::KURL kurl(WebCore::KURL(), WebCore::String::fromUTF8(uri));
+        WebCore::KURL kurl(WebCore::KURL(), WTF::String::fromUTF8(uri));
         priv->page_settings->setUserStyleSheetLocation(kurl);
     }
     return EINA_TRUE;
@@ -2380,7 +2380,7 @@ const char* ewk_view_setting_encoding_custom_get(const Evas_Object* o)
     Evas_Object* main_frame = ewk_view_frame_main_get(o);
     WebCore::Frame* core_frame = ewk_frame_core_get(main_frame);
 
-    WebCore::String overrideEncoding = core_frame->loader()->documentLoader()->overrideEncoding();
+    WTF::String overrideEncoding = core_frame->loader()->documentLoader()->overrideEncoding();
 
     if (overrideEncoding.isEmpty())
         return 0;
@@ -2405,7 +2405,7 @@ Eina_Bool ewk_view_setting_encoding_custom_set(Evas_Object* o, const char *encod
     WebCore::Frame* core_frame = ewk_frame_core_get(main_frame);
 DBG("%s", encoding);
     eina_stringshare_replace(&priv->settings.encoding_custom, encoding);
-    core_frame->loader()->reloadWithOverrideEncoding(WebCore::String::fromUTF8(encoding));
+    core_frame->loader()->reloadWithOverrideEncoding(WTF::String::fromUTF8(encoding));
 
     return EINA_TRUE;
 }
@@ -2422,7 +2422,7 @@ Eina_Bool ewk_view_setting_encoding_default_set(Evas_Object* o, const char* enco
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.encoding_default, encoding))
-        priv->page_settings->setDefaultTextEncodingName(WebCore::String::fromUTF8(encoding));
+        priv->page_settings->setDefaultTextEncodingName(WTF::String::fromUTF8(encoding));
     return EINA_TRUE;
 }
 
@@ -2510,7 +2510,7 @@ Eina_Bool ewk_view_setting_font_standard_set(Evas_Object* o, const char* family)
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_standard, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setStandardFontFamily(s);
     }
     return EINA_TRUE;
@@ -2528,7 +2528,7 @@ Eina_Bool ewk_view_setting_font_cursive_set(Evas_Object* o, const char* family)
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_cursive, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicStringWTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setCursiveFontFamily(s);
     }
     return EINA_TRUE;
@@ -2546,7 +2546,7 @@ Eina_Bool ewk_view_setting_font_fantasy_set(Evas_Object* o, const char* family)
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_fantasy, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setFantasyFontFamily(s);
     }
     return EINA_TRUE;
@@ -2564,7 +2564,7 @@ Eina_Bool ewk_view_setting_font_monospace_set(Evas_Object* o, const char* family
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_monospace, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setFixedFontFamily(s);
     }
     return EINA_TRUE;
@@ -2582,7 +2582,7 @@ Eina_Bool ewk_view_setting_font_serif_set(Evas_Object* o, const char* family)
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_serif, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setSerifFontFamily(s);
     }
     return EINA_TRUE;
@@ -2600,7 +2600,7 @@ Eina_Bool ewk_view_setting_font_sans_serif_set(Evas_Object* o, const char* famil
     EWK_VIEW_SD_GET_OR_RETURN(o, sd, EINA_FALSE);
     EWK_VIEW_PRIV_GET_OR_RETURN(sd, priv, EINA_FALSE);
     if (eina_stringshare_replace(&priv->settings.font_sans_serif, family)) {
-        WebCore::AtomicString s = WebCore::String::fromUTF8(family);
+        WTF::AtomicString s = WTF::String::fromUTF8(family);
         priv->page_settings->setSansSerifFontFamily(s);
     }
     return EINA_TRUE;
@@ -3671,7 +3671,7 @@ WebCore::Page* ewk_view_core_page_get(const Evas_Object* o)
  *
  * Emits "frame,created" with the new frame object on success.
  */
-WTF::PassRefPtr<WebCore::Frame> ewk_view_frame_create(Evas_Object* o, Evas_Object* frame, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, const WebCore::KURL& url, const WebCore::String& referrer)
+WTF::PassRefPtr<WebCore::Frame> ewk_view_frame_create(Evas_Object* o, Evas_Object* frame, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement, const WebCore::KURL& url, const WTF::String& referrer)
 {
     DBG("o=%p, frame=%p, name=%s, ownerElement=%p, url=%s, referrer=%s",
         o, frame, name.utf8().data(), ownerElement,
@@ -3703,7 +3703,7 @@ WTF::PassRefPtr<WebCore::Frame> ewk_view_frame_create(Evas_Object* o, Evas_Objec
     return cf.release();
 }
 
-WTF::PassRefPtr<WebCore::Widget> ewk_view_plugin_create(Evas_Object* o, Evas_Object* frame, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues, const WebCore::String& mimeType, bool loadManually)
+WTF::PassRefPtr<WebCore::Widget> ewk_view_plugin_create(Evas_Object* o, Evas_Object* frame, const WebCore::IntSize& pluginSize, WebCore::HTMLPlugInElement* element, const WebCore::KURL& url, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues, const WTF::String& mimeType, bool loadManually)
 {
     DBG("o=%p, frame=%p, size=%dx%d, element=%p, url=%s, mimeType=%s",
         o, frame, pluginSize.width(), pluginSize.height(), element,
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 64d5f0e..dbba4a9 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,13 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebCoreSupport/InspectorClientGtk.h:
+
 2010-08-09  Martin Robinson  <mrobinson at igalia.com>
 
         Reviewed by Xan Lopez.
diff --git a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
index 081c942..a06d637 100644
--- a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
@@ -277,12 +277,12 @@ bool ChromeClient::canRunBeforeUnloadConfirmPanel()
     return true;
 }
 
-bool ChromeClient::runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame)
+bool ChromeClient::runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame)
 {
     return runJavaScriptConfirm(frame, message);
 }
 
-void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WebCore::String& message, unsigned int lineNumber, const WebCore::String& sourceId)
+void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceId)
 {
     gboolean retval;
     g_signal_emit_by_name(m_webView, "console-message", message.utf8().data(), lineNumber, sourceId.utf8().data(), &retval);
@@ -596,7 +596,7 @@ void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser)
     gtk_widget_destroy(dialog);
 }
 
-void ChromeClient::chooseIconForFiles(const Vector<WebCore::String>& filenames, WebCore::FileChooser* chooser)
+void ChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser)
 {
     chooser->iconLoaded(Icon::createIconForFiles(filenames));
 }
diff --git a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
index 8c667c4..e3be1c2 100644
--- a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
@@ -77,18 +77,18 @@ namespace WebKit {
         virtual void setResizable(bool);
 
         virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type,
-                                         WebCore::MessageLevel level, const WebCore::String& message,
-                                         unsigned int lineNumber, const WebCore::String& sourceID);
+                                         WebCore::MessageLevel level, const WTF::String& message,
+                                         unsigned int lineNumber, const WTF::String& sourceID);
 
         virtual bool canRunBeforeUnloadConfirmPanel();
-        virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame);
+        virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
 
         virtual void closeWindowSoon();
 
-        virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
-        virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
-        virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result);
-        virtual void setStatusbarText(const WebCore::String&);
+        virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+        virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
+        virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
+        virtual void setStatusbarText(const WTF::String&);
         virtual bool shouldInterruptJavaScript();
         virtual bool tabsToLinks() const;
 
@@ -107,18 +107,18 @@ namespace WebKit {
         virtual void scrollbarsModeDidChange() const;
         virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
 
-        virtual void setToolTip(const WebCore::String&, WebCore::TextDirection);
+        virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
 
         virtual void print(WebCore::Frame*);
 #if ENABLE(DATABASE)
-        virtual void exceededDatabaseQuota(WebCore::Frame*, const WebCore::String&);
+        virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&);
 #endif
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
         virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
         virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
 #endif
         virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
-        virtual void chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*);
+        virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
 
         virtual void formStateDidChange(const WebCore::Node*) { }
 
diff --git a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
index d320c0e..07a022c 100644
--- a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
@@ -50,7 +50,7 @@ namespace WebKit {
         virtual void copyImageToClipboard(const WebCore::HitTestResult&);
         virtual void searchWithGoogle(const WebCore::Frame*);
         virtual void lookUpInDictionary(WebCore::Frame*);
-        virtual void speak(const WebCore::String&);
+        virtual void speak(const WTF::String&);
         virtual void stopSpeaking();
         virtual bool isSpeaking();
 
diff --git a/WebKit/gtk/WebCoreSupport/DragClientGtk.h b/WebKit/gtk/WebCoreSupport/DragClientGtk.h
index 6604940..514852e 100644
--- a/WebKit/gtk/WebCoreSupport/DragClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/DragClientGtk.h
@@ -47,7 +47,7 @@ namespace WebKit {
         virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint);
 
         virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false);
-        virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WebCore::String& label, WebCore::Frame*);
+        virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
 
         virtual void dragControllerDestroyed();
 
diff --git a/WebKit/gtk/WebCoreSupport/EditorClientGtk.h b/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
index 93f56ce..2688629 100644
--- a/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
@@ -86,7 +86,7 @@ namespace WebKit {
         virtual bool shouldBeginEditing(WebCore::Range*);
         virtual bool shouldEndEditing(WebCore::Range*);
         virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
-        virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction);
+        virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
         virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting);
 
         virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*);
@@ -120,16 +120,16 @@ namespace WebKit {
         virtual void textWillBeDeletedInTextField(WebCore::Element*);
         virtual void textDidChangeInTextArea(WebCore::Element*);
 
-        virtual void ignoreWordInSpellDocument(const WebCore::String&);
-        virtual void learnWord(const WebCore::String&);
+        virtual void ignoreWordInSpellDocument(const WTF::String&);
+        virtual void learnWord(const WTF::String&);
         virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
-        virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
+        virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
         virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
-        virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail&);
-        virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
+        virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&);
+        virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
         virtual void showSpellingUI(bool show);
         virtual bool spellingUIIsShowing();
-        virtual void getGuessesForWord(const WebCore::String&, WTF::Vector<WebCore::String>& guesses);
+        virtual void getGuessesForWord(const WTF::String&, WTF::Vector<WTF::String>& guesses);
         virtual void willSetInputMethodState();
         virtual void setInputMethodState(bool enabled);
 
diff --git a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
index 2eeeb35..33e9ee5 100644
--- a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
@@ -81,7 +81,7 @@ namespace WebKit {
         virtual void dispatchWillClose();
         virtual void dispatchDidReceiveIcon();
         virtual void dispatchDidStartProvisionalLoad();
-        virtual void dispatchDidReceiveTitle(const WebCore::String&);
+        virtual void dispatchDidReceiveTitle(const WTF::String&);
         virtual void dispatchDidChangeIcons();
         virtual void dispatchDidCommitLoad();
         virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
@@ -94,8 +94,8 @@ namespace WebKit {
         virtual WebCore::Frame* dispatchCreatePage();
         virtual void dispatchShow();
 
-        virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WebCore::String& MIMEType, const WebCore::ResourceRequest&);
-        virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WebCore::String& frameName);
+        virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WTF::String& MIMEType, const WebCore::ResourceRequest&);
+        virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
         virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>);
         virtual void cancelPolicyCheck();
 
@@ -112,20 +112,20 @@ namespace WebKit {
         virtual void postProgressEstimateChangedNotification();
         virtual void postProgressFinishedNotification();
 
-        virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
-                                   const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
+        virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
+                                   const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
         virtual void didTransferChildFrameToNewDocument();
-        virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WebCore::String>&, const WTF::Vector<WebCore::String>&, const WebCore::String&, bool);
+        virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool);
         virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
-        virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues);
-        virtual WebCore::String overrideMediaType() const;
+        virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues);
+        virtual WTF::String overrideMediaType() const;
         virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
         virtual void documentElementAvailable();
         virtual void didPerformFirstNavigation() const;
 
         virtual void registerForIconNotification(bool);
 
-        virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WebCore::String& mimeType);
+        virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
 
         virtual void setMainFrameDocumentReady(bool);
 
@@ -159,9 +159,9 @@ namespace WebKit {
         virtual bool shouldFallBack(const WebCore::ResourceError&);
 
         virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
-        virtual bool canShowMIMEType(const WebCore::String&) const;
-        virtual bool representationExistsForURLScheme(const WebCore::String&) const;
-        virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String&) const;
+        virtual bool canShowMIMEType(const WTF::String&) const;
+        virtual bool representationExistsForURLScheme(const WTF::String&) const;
+        virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String&) const;
 
         virtual void frameLoadCompleted();
         virtual void saveViewStateToItem(WebCore::HistoryItem*);
@@ -171,9 +171,9 @@ namespace WebKit {
         virtual void prepareForDataSourceReplacement();
 
         virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
-        virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
+        virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 
-        virtual WebCore::String userAgent(const WebCore::KURL&);
+        virtual WTF::String userAgent(const WebCore::KURL&);
 
         virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
         virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
diff --git a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
index fc9b6d8..b72bc82 100644
--- a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
@@ -33,11 +33,11 @@
 #include "InspectorFrontendClientLocal.h"
 #include "webkitwebview.h"
 #include "webkitwebinspector.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
     class Node;
     class Page;
-    class String;
 }
 
 namespace WebKit {
@@ -58,10 +58,10 @@ namespace WebKit {
         virtual void highlight(WebCore::Node*);
         virtual void hideHighlight();
 
-        virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+        virtual void populateSetting(const WTF::String& key, WTF::String* value);
+        virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-        virtual bool sendMessageToFrontend(const WebCore::String&);
+        virtual bool sendMessageToFrontend(const WTF::String&);
 
         void releaseFrontendPage();
 
@@ -79,9 +79,9 @@ namespace WebKit {
 
         void destroyInspectorWindow();
 
-        virtual WebCore::String localizedStringsURL();
+        virtual WTF::String localizedStringsURL();
 
-        virtual WebCore::String hiddenPanels();
+        virtual WTF::String hiddenPanels();
 
         virtual void bringToFront();
         virtual void closeWindow();
@@ -91,7 +91,7 @@ namespace WebKit {
 
         virtual void setAttachedWindowHeight(unsigned height);
 
-        virtual void inspectedURLChanged(const WebCore::String& newURL);
+        virtual void inspectedURLChanged(const WTF::String& newURL);
 
     private:
         virtual ~InspectorFrontendClient();
diff --git a/WebKit/gtk/gdom/ConvertToGCharPrivate.h b/WebKit/gtk/gdom/ConvertToGCharPrivate.h
index dd8c65e..ef42b08 100644
--- a/WebKit/gtk/gdom/ConvertToGCharPrivate.h
+++ b/WebKit/gtk/gdom/ConvertToGCharPrivate.h
@@ -25,7 +25,7 @@
 #include "PlatformString.h"
 #include <wtf/text/CString.h>
 
-inline gchar* copyAsGchar(WebCore::String const& s)
+inline gchar* copyAsGchar(WTF::String const& s)
 {
     return g_strdup(s.utf8().data());
 }
@@ -40,7 +40,7 @@ inline gchar* copyAsGchar(const JSC::UString& s)
     return g_strdup(s.UTF8String().c_str());
 }
 
-inline gchar* copyAsGchar(WebCore::AtomicString const& s)
+inline gchar* copyAsGchar(WTF::AtomicString const& s)
 {
     return g_strdup(s.string().utf8().data());
 }
diff --git a/WebKit/gtk/webkit/webkitsecurityorigin.cpp b/WebKit/gtk/webkit/webkitsecurityorigin.cpp
index 0ab0a9c..de074ae 100644
--- a/WebKit/gtk/webkit/webkitsecurityorigin.cpp
+++ b/WebKit/gtk/webkit/webkitsecurityorigin.cpp
@@ -233,7 +233,7 @@ G_CONST_RETURN gchar* webkit_security_origin_get_protocol(WebKitSecurityOrigin*
     g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
 
     WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
-    WebCore::String protocol =  priv->coreOrigin->protocol();
+    WTF::String protocol =  priv->coreOrigin->protocol();
 
     if (!priv->protocol)
         priv->protocol = g_strdup(protocol.utf8().data());
@@ -256,7 +256,7 @@ G_CONST_RETURN gchar* webkit_security_origin_get_host(WebKitSecurityOrigin* secu
     g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
 
     WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
-    WebCore::String host =  priv->coreOrigin->host();
+    WTF::String host =  priv->coreOrigin->host();
 
     if (!priv->host)
         priv->host = g_strdup(host.utf8().data());
@@ -364,7 +364,7 @@ GList* webkit_security_origin_get_all_web_databases(WebKitSecurityOrigin* securi
 
 #if ENABLE(DATABASE)
     WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
-    Vector<WebCore::String> databaseNames;
+    Vector<WTF::String> databaseNames;
 
     if (!WebCore::DatabaseTracker::tracker().databaseNamesForOrigin(coreOrigin, databaseNames))
         return NULL;
diff --git a/WebKit/gtk/webkit/webkitwebdatabase.cpp b/WebKit/gtk/webkit/webkitwebdatabase.cpp
index e92c400..d4f6198 100644
--- a/WebKit/gtk/webkit/webkitwebdatabase.cpp
+++ b/WebKit/gtk/webkit/webkitwebdatabase.cpp
@@ -331,7 +331,7 @@ G_CONST_RETURN gchar* webkit_web_database_get_display_name(WebKitWebDatabase* we
 #if ENABLE(DATABASE)
     WebKitWebDatabasePrivate* priv = webDatabase->priv;
     WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin));
-    WebCore::String displayName =  details.displayName();
+    WTF::String displayName =  details.displayName();
 
     if (displayName.isEmpty())
         return "";
@@ -408,8 +408,8 @@ G_CONST_RETURN gchar* webkit_web_database_get_filename(WebKitWebDatabase* webDat
 
 #if ENABLE(DATABASE)
     WebKitWebDatabasePrivate* priv = webDatabase->priv;
-    WebCore::String coreName = WebCore::String::fromUTF8(priv->name);
-    WebCore::String corePath = WebCore::DatabaseTracker::tracker().fullPathForDatabase(core(priv->origin), coreName);
+    WTF::String coreName = WTF::String::fromUTF8(priv->name);
+    WTF::String corePath = WebCore::DatabaseTracker::tracker().fullPathForDatabase(core(priv->origin), coreName);
 
     if (corePath.isEmpty())
         return"";
@@ -470,7 +470,7 @@ void webkit_remove_all_web_databases()
 G_CONST_RETURN gchar* webkit_get_web_database_directory_path()
 {
 #if ENABLE(DATABASE)
-    WebCore::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath();
+    WTF::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath();
 
     if (path.isEmpty())
         return "";
@@ -495,7 +495,7 @@ G_CONST_RETURN gchar* webkit_get_web_database_directory_path()
 void webkit_set_web_database_directory_path(const gchar* path)
 {
 #if ENABLE(DATABASE)
-    WebCore::String corePath = WebCore::String::fromUTF8(path);
+    WTF::String corePath = WTF::String::fromUTF8(path);
     WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath);
 
     g_free(webkit_database_directory_path);
diff --git a/WebKit/gtk/webkit/webkitwebhistoryitem.cpp b/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
index 5177c4c..8a9153c 100644
--- a/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
+++ b/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
@@ -301,7 +301,7 @@ WebKitWebHistoryItem* webkit_web_history_item_new_with_data(const gchar* uri, co
     WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
 
     WebCore::KURL historyUri(WebCore::KURL(), uri);
-    WebCore::String historyTitle = WebCore::String::fromUTF8(title);
+    WTF::String historyTitle = WTF::String::fromUTF8(title);
     RefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create(historyUri, historyTitle, 0);
     priv->historyItem = item.release().releaseRef();
     webkit_history_item_add(webHistoryItem, priv->historyItem);
@@ -365,7 +365,7 @@ void webkit_web_history_item_set_alternate_title(WebKitWebHistoryItem* webHistor
 
     WebCore::HistoryItem* item = core(webHistoryItem);
 
-    item->setAlternateTitle(WebCore::String::fromUTF8(title));
+    item->setAlternateTitle(WTF::String::fromUTF8(title));
     g_object_notify(G_OBJECT(webHistoryItem), "alternate-title");
 }
 
diff --git a/WebKit/haiku/ChangeLog b/WebKit/haiku/ChangeLog
index fd95435..986b00f 100644
--- a/WebKit/haiku/ChangeLog
+++ b/WebKit/haiku/ChangeLog
@@ -1,3 +1,14 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebCoreSupport/FrameLoaderClientHaiku.h:
+        * WebCoreSupport/InspectorClientHaiku.h:
+
 2010-08-06  Jessie Berlin  <jberlin at apple.com>
 
         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
diff --git a/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h b/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h
index 8201fae..6a5b381 100644
--- a/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h
+++ b/WebKit/haiku/WebCoreSupport/ChromeClientHaiku.h
@@ -99,7 +99,7 @@ namespace WebCore {
         bool runJavaScriptPrompt(Frame*, const String& message, const String& defaultValue, String& result);
         bool shouldInterruptJavaScript();
 
-        void setStatusbarText(const WebCore::String&);
+        void setStatusbarText(const WTF::String&);
         bool tabsToLinks() const;
         IntRect windowResizerRect() const;
 
diff --git a/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h b/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
index 073c0c3..dfe5747 100644
--- a/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
+++ b/WebKit/haiku/WebCoreSupport/FrameLoaderClientHaiku.h
@@ -33,6 +33,7 @@
 #include "FrameLoaderClient.h"
 #include "KURL.h"
 #include "ResourceResponse.h"
+#include <wtf/Forward.h>
 
 class BMessenger;
 class WebView;
@@ -44,7 +45,6 @@ namespace WebCore {
     class FormState;
     class NavigationAction;
     class ResourceLoader;
-    class String;
 
     struct LoadErrorResetToken;
 
diff --git a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
index 3828d04..d6df4c6 100644
--- a/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
+++ b/WebKit/haiku/WebCoreSupport/InspectorClientHaiku.h
@@ -31,12 +31,11 @@
 #define InspectorClientHaiku_h
 
 #include "InspectorClient.h"
-
+#include <wtf/Forward.h>
 
 namespace WebCore {
     class Node;
     class Page;
-    class String;
 
     class InspectorClientHaiku : public InspectorClient {
     public:
@@ -47,10 +46,10 @@ namespace WebCore {
         virtual void highlight(Node*);
         virtual void hideHighlight();
 
-        virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-        virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+        virtual void populateSetting(const WTF::String& key, WTF::String* value);
+        virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-        virtual bool sendMessageToFrontend(const WebCore::String&);
+        virtual bool sendMessageToFrontend(const WTF::String&);
     };
 } // namespace WebCore
 
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index d9c721e..269110f 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,18 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * Plugins/Hosted/NetscapePluginInstanceProxy.h:
+        * Plugins/WebBaseNetscapePluginView.h:
+        * WebCoreSupport/WebFrameLoaderClient.h:
+        * WebCoreSupport/WebIconDatabaseClient.h:
+        * WebCoreSupport/WebPluginHalterClient.h:
+        * WebView/WebViewInternal.h:
+
 2010-08-04  MORITA Hajime  <morrita at google.com>
 
         Reviewed by Tony Chang.
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h
index e1f02ac..b88f1a4 100644
--- a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.h
@@ -44,28 +44,28 @@ class NetscapePluginHostManager {
 public:
     static NetscapePluginHostManager& shared();
     
-    PassRefPtr<NetscapePluginInstanceProxy> instantiatePlugin(const WebCore::String& pluginPath, cpu_type_t pluginArchitecture, const WebCore::String& bundleIdentifier, WebHostedNetscapePluginView *, NSString *mimeType, NSArray *attributeKeys, NSArray *attributeValues, NSString *userAgent, NSURL *sourceURL, bool fullFrame, bool isPrivateBrowsingEnabled, bool isAcceleratedCompositingEnabled);
+    PassRefPtr<NetscapePluginInstanceProxy> instantiatePlugin(const WTF::String& pluginPath, cpu_type_t pluginArchitecture, const WTF::String& bundleIdentifier, WebHostedNetscapePluginView *, NSString *mimeType, NSArray *attributeKeys, NSArray *attributeValues, NSString *userAgent, NSURL *sourceURL, bool fullFrame, bool isPrivateBrowsingEnabled, bool isAcceleratedCompositingEnabled);
 
     void pluginHostDied(NetscapePluginHostProxy*);
 
-    static void createPropertyListFile(const WebCore::String& pluginPath, cpu_type_t pluginArchitecture);
+    static void createPropertyListFile(const WTF::String& pluginPath, cpu_type_t pluginArchitecture);
     
     void didCreateWindow();
     
 private:
-    NetscapePluginHostProxy* hostForPlugin(const WebCore::String& pluginPath, cpu_type_t pluginArchitecture, const WebCore::String& bundleIdentifier, bool useProxiedOpenPanel);
+    NetscapePluginHostProxy* hostForPlugin(const WTF::String& pluginPath, cpu_type_t pluginArchitecture, const WTF::String& bundleIdentifier, bool useProxiedOpenPanel);
 
     NetscapePluginHostManager();
     ~NetscapePluginHostManager();
     
-    bool spawnPluginHost(const WebCore::String& pluginPath, cpu_type_t pluginArchitecture, mach_port_t clientPort, mach_port_t& pluginHostPort, ProcessSerialNumber& pluginHostPSN, bool useProxiedOpenPanel);
+    bool spawnPluginHost(const WTF::String& pluginPath, cpu_type_t pluginArchitecture, mach_port_t clientPort, mach_port_t& pluginHostPort, ProcessSerialNumber& pluginHostPSN, bool useProxiedOpenPanel);
     
     bool initializeVendorPort();
     
     mach_port_t m_pluginVendorPort;
     
     // FIXME: This should really be a HashMap of RetainPtrs, but that doesn't work right now.
-    typedef HashMap<WebCore::String, NetscapePluginHostProxy*> PluginHostMap;
+    typedef HashMap<WTF::String, NetscapePluginHostProxy*> PluginHostMap;
     PluginHostMap m_pluginHosts;
 };
     
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
index baec6ba..22874df 100644
--- a/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginHostManager.mm
@@ -70,7 +70,7 @@ NetscapePluginHostManager::~NetscapePluginHostManager()
 {
 }
 
-NetscapePluginHostProxy* NetscapePluginHostManager::hostForPlugin(const WebCore::String& pluginPath, cpu_type_t pluginArchitecture, const String& bundleIdentifier, bool useProxiedOpenPanel)
+NetscapePluginHostProxy* NetscapePluginHostManager::hostForPlugin(const WTF::String& pluginPath, cpu_type_t pluginArchitecture, const String& bundleIdentifier, bool useProxiedOpenPanel)
 {
     pair<PluginHostMap::iterator, bool> result = m_pluginHosts.add(pluginPath, 0);
     
diff --git a/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
index 9ca5b5a..3081120 100644
--- a/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
+++ b/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.h
@@ -32,16 +32,13 @@
 #include <WebCore/Timer.h>
 #include <WebKit/npapi.h>
 #include <wtf/Deque.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RetainPtr.h>
 #include "WebKitPluginHostTypes.h"
 
-namespace WebCore {
-    class String;
-}
-
 namespace JSC {
     namespace Bindings {
         class Instance;
@@ -112,7 +109,7 @@ public:
     bool getPluginElementNPObject(uint32_t& objectID);
     bool forgetBrowserObjectID(uint32_t objectID); // Will fail if the ID is being sent to plug-in right now (i.e., retain/release calls aren't balanced).
 
-    bool evaluate(uint32_t objectID, const WebCore::String& script, data_t& resultData, mach_msg_type_number_t& resultLength, bool allowPopups);
+    bool evaluate(uint32_t objectID, const WTF::String& script, data_t& resultData, mach_msg_type_number_t& resultLength, bool allowPopups);
     bool invoke(uint32_t objectID, const JSC::Identifier& methodName, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
     bool invokeDefault(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
     bool construct(uint32_t objectID, data_t argumentsData, mach_msg_type_number_t argumentsLength, data_t& resultData, mach_msg_type_number_t& resultLength);
@@ -170,7 +167,7 @@ public:
     void didDraw();
     void privateBrowsingModeDidChange(bool isPrivateBrowsingEnabled);
     
-    static void setGlobalException(const WebCore::String&);
+    static void setGlobalException(const WTF::String&);
     static void moveGlobalExceptionToExecState(JSC::ExecState*);
 
     // Reply structs
diff --git a/WebKit/mac/Plugins/WebBaseNetscapePluginView.h b/WebKit/mac/Plugins/WebBaseNetscapePluginView.h
index 4c8ea84..9a29cc2 100644
--- a/WebKit/mac/Plugins/WebBaseNetscapePluginView.h
+++ b/WebKit/mac/Plugins/WebBaseNetscapePluginView.h
@@ -31,6 +31,7 @@
 
 #import "WebNetscapePluginPackage.h"
 #import "WebPluginContainerCheck.h"
+#import <wtf/Forward.h>
 #import <wtf/OwnPtr.h>
 #import <wtf/PassRefPtr.h>
 #import <wtf/RefPtr.h>
@@ -41,10 +42,6 @@
 @class WebFrame;
 @class WebView;
 
-namespace WTF {
-    class CString;
-}
-
 namespace WebCore {
     class HTMLPlugInElement;
 }
diff --git a/WebKit/mac/Plugins/WebBasePluginPackage.h b/WebKit/mac/Plugins/WebBasePluginPackage.h
index ca2ddcd..a42a82e 100644
--- a/WebKit/mac/Plugins/WebBasePluginPackage.h
+++ b/WebKit/mac/Plugins/WebBasePluginPackage.h
@@ -57,7 +57,7 @@ typedef void (*BP_CreatePluginMIMETypesPreferencesFuncPtr)(void);
 {
     NSMutableSet *pluginDatabases;
     
-    WebCore::String path;
+    WTF::String path;
     WebCore::PluginInfo pluginInfo;
 
     RetainPtr<CFBundleRef> cfBundle;
@@ -73,16 +73,16 @@ typedef void (*BP_CreatePluginMIMETypesPreferencesFuncPtr)(void);
 - (BOOL)load;
 - (void)unload;
 
-- (const WebCore::String&)path;
+- (const WTF::String&)path;
 
 - (const WebCore::PluginInfo&)pluginInfo;
 
-- (WebCore::String)bundleIdentifier;
+- (WTF::String)bundleIdentifier;
 
-- (BOOL)supportsExtension:(const WebCore::String&)extension;
-- (BOOL)supportsMIMEType:(const WebCore::String&)MIMEType;
+- (BOOL)supportsExtension:(const WTF::String&)extension;
+- (BOOL)supportsMIMEType:(const WTF::String&)MIMEType;
 
-- (NSString *)MIMETypeForExtension:(const WebCore::String&)extension;
+- (NSString *)MIMETypeForExtension:(const WTF::String&)extension;
 
 - (BOOL)isQuickTimePlugIn;
 - (BOOL)isJavaPlugIn;
diff --git a/WebKit/mac/Plugins/WebBasePluginPackage.mm b/WebKit/mac/Plugins/WebBasePluginPackage.mm
index 70e5889..78b0a7f 100644
--- a/WebKit/mac/Plugins/WebBasePluginPackage.mm
+++ b/WebKit/mac/Plugins/WebBasePluginPackage.mm
@@ -303,7 +303,7 @@ static NSString *pathByResolvingSymlinksAndAliases(NSString *thePath)
     return NO;
 }
 
-- (BOOL)supportsMIMEType:(const WebCore::String&)mimeType
+- (BOOL)supportsMIMEType:(const WTF::String&)mimeType
 {
     ASSERT(mimeType.lower() == mimeType);
     
@@ -445,7 +445,7 @@ static inline void swapIntsInHeader(uint8_t* bytes, unsigned length)
     [pluginDatabases removeObject:database];
 }
 
-- (WebCore::String)bundleIdentifier
+- (WTF::String)bundleIdentifier
 {
     return CFBundleGetIdentifier(cfBundle.get());
 }
diff --git a/WebKit/mac/Plugins/WebNetscapePluginStream.h b/WebKit/mac/Plugins/WebNetscapePluginStream.h
index 8ee9e7f..20beee2 100644
--- a/WebKit/mac/Plugins/WebNetscapePluginStream.h
+++ b/WebKit/mac/Plugins/WebNetscapePluginStream.h
@@ -90,7 +90,7 @@ private:
     void deliverDataToFile(NSData *data);
     void deliverData();
 
-    void startStream(NSURL *, long long expectedContentLength, NSDate *lastModifiedDate, const WebCore::String& mimeType, NSData *headers);
+    void startStream(NSURL *, long long expectedContentLength, NSDate *lastModifiedDate, const WTF::String& mimeType, NSData *headers);
     
     NSError *pluginCancelledConnectionError() const;
 
diff --git a/WebKit/mac/Storage/WebDatabaseTrackerClient.h b/WebKit/mac/Storage/WebDatabaseTrackerClient.h
index d06cfe9..cbb5eb7 100644
--- a/WebKit/mac/Storage/WebDatabaseTrackerClient.h
+++ b/WebKit/mac/Storage/WebDatabaseTrackerClient.h
@@ -36,7 +36,7 @@ public:
     
     virtual ~WebDatabaseTrackerClient();
     virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
-    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WebCore::String& databaseIdentifier);
+    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WTF::String& databaseIdentifier);
 private:
     WebDatabaseTrackerClient();
 };
diff --git a/WebKit/mac/WebCoreSupport/WebChromeClient.h b/WebKit/mac/WebCoreSupport/WebChromeClient.h
index 763335d..e5de14d 100644
--- a/WebKit/mac/WebCoreSupport/WebChromeClient.h
+++ b/WebKit/mac/WebCoreSupport/WebChromeClient.h
@@ -75,16 +75,16 @@ public:
     
     virtual void setResizable(bool);
     
-    virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WebCore::String& message, unsigned int lineNumber, const WebCore::String& sourceURL);
+    virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceURL);
 
     virtual bool canRunBeforeUnloadConfirmPanel();
-    virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame);
+    virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
 
     virtual void closeWindowSoon();
 
-    virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result);
+    virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
     virtual bool shouldInterruptJavaScript();
 
     virtual bool tabsToLinks() const;
@@ -102,18 +102,18 @@ public:
     virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
     virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const;
     
-    virtual void setStatusbarText(const WebCore::String&);
+    virtual void setStatusbarText(const WTF::String&);
 
     virtual void scrollbarsModeDidChange() const { }
     virtual bool shouldMissingPluginMessageBeButton() const;
     virtual void missingPluginButtonClicked(WebCore::Element*) const;
     virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
 
-    virtual void setToolTip(const WebCore::String&, WebCore::TextDirection);
+    virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
 
     virtual void print(WebCore::Frame*);
 #if ENABLE(DATABASE)
-    virtual void exceededDatabaseQuota(WebCore::Frame*, const WebCore::String& databaseName);
+    virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String& databaseName);
 #endif
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
     virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
@@ -126,13 +126,13 @@ public:
 #endif
 
     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
-    virtual void chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*);
+    virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
 
     virtual void setCursor(const WebCore::Cursor&);
 
-    virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WebCore::AtomicString& type,
+    virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WTF::AtomicString& type,
         const WebCore::FloatRect& lineRect);
-    virtual void paintCustomHighlight(WebCore::Node*, const WebCore::AtomicString& type,
+    virtual void paintCustomHighlight(WebCore::Node*, const WTF::AtomicString& type,
         const WebCore::FloatRect& boxRect, const WebCore::FloatRect& lineRect,
         bool behindText, bool entireLine);
 
@@ -143,8 +143,8 @@ public:
 
     virtual void willPopUpMenu(NSMenu *);
     
-    virtual bool shouldReplaceWithGeneratedFileForUpload(const WebCore::String& path, WebCore::String &generatedFilename);
-    virtual WebCore::String generateReplacementFile(const WebCore::String& path);
+    virtual bool shouldReplaceWithGeneratedFileForUpload(const WTF::String& path, WTF::String &generatedFilename);
+    virtual WTF::String generateReplacementFile(const WTF::String& path);
 
     virtual void formStateDidChange(const WebCore::Node*) { }
 
diff --git a/WebKit/mac/WebCoreSupport/WebContextMenuClient.h b/WebKit/mac/WebCoreSupport/WebContextMenuClient.h
index c3ff4dd..077cd16 100644
--- a/WebKit/mac/WebCoreSupport/WebContextMenuClient.h
+++ b/WebKit/mac/WebCoreSupport/WebContextMenuClient.h
@@ -43,7 +43,7 @@ public:
     virtual void searchWithGoogle(const WebCore::Frame*);
     virtual void lookUpInDictionary(WebCore::Frame*);
     virtual bool isSpeaking();
-    virtual void speak(const WebCore::String&);
+    virtual void speak(const WTF::String&);
     virtual void stopSpeaking();
     virtual void searchWithSpotlight();
 
diff --git a/WebKit/mac/WebCoreSupport/WebDragClient.h b/WebKit/mac/WebCoreSupport/WebDragClient.h
index 234090e..216a2fb 100644
--- a/WebKit/mac/WebCoreSupport/WebDragClient.h
+++ b/WebKit/mac/WebCoreSupport/WebDragClient.h
@@ -36,7 +36,7 @@ public:
     virtual void dragControllerDestroyed();
     virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint);
     virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragPos, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag);
-    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL& url, const WebCore::String& label, WebCore::Frame*);
+    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL& url, const WTF::String& label, WebCore::Frame*);
     virtual void declareAndWriteDragImage(NSPasteboard*, DOMElement*, NSURL*, NSString*, WebCore::Frame*);
 private:
     WebView* m_webView;
diff --git a/WebKit/mac/WebCoreSupport/WebEditorClient.h b/WebKit/mac/WebCoreSupport/WebEditorClient.h
index 1cb2a59..e6426aa 100644
--- a/WebKit/mac/WebCoreSupport/WebEditorClient.h
+++ b/WebKit/mac/WebCoreSupport/WebEditorClient.h
@@ -57,7 +57,7 @@ public:
     virtual bool shouldBeginEditing(WebCore::Range*);
     virtual bool shouldEndEditing(WebCore::Range*);
     virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
-    virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction);
+    virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
     virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting);
 
     virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*);
@@ -116,17 +116,17 @@ public:
     virtual void textWillBeDeletedInTextField(WebCore::Element*);
     virtual void textDidChangeInTextArea(WebCore::Element*);
     
-    virtual void ignoreWordInSpellDocument(const WebCore::String&);
-    virtual void learnWord(const WebCore::String&);
+    virtual void ignoreWordInSpellDocument(const WTF::String&);
+    virtual void learnWord(const WTF::String&);
     virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
-    virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
+    virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
     virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
     virtual void checkTextOfParagraph(const UChar* text, int length, uint64_t checkingTypes, WTF::Vector<WebCore::TextCheckingResult>& results);
-    virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail&);
-    virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
+    virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&);
+    virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
     virtual void showSpellingUI(bool show);
     virtual bool spellingUIIsShowing();
-    virtual void getGuessesForWord(const WebCore::String&, WTF::Vector<WebCore::String>& guesses);
+    virtual void getGuessesForWord(const WTF::String&, WTF::Vector<WTF::String>& guesses);
     virtual void willSetInputMethodState();
     virtual void setInputMethodState(bool enabled);
 private:
diff --git a/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h b/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h
index d750a10..d932e66 100644
--- a/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h
+++ b/WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h
@@ -43,7 +43,6 @@ namespace WebCore {
     class CachedFrame;
     class HistoryItem;
     class ProtectionSpace;
-    class String;
     class ResourceLoader;
     class ResourceRequest;
 }
@@ -102,7 +101,7 @@ private:
     virtual void dispatchWillClose();
     virtual void dispatchDidReceiveIcon();
     virtual void dispatchDidStartProvisionalLoad();
-    virtual void dispatchDidReceiveTitle(const WebCore::String& title);
+    virtual void dispatchDidReceiveTitle(const WTF::String& title);
     virtual void dispatchDidChangeIcons();
     virtual void dispatchDidCommitLoad();
     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
@@ -116,9 +115,9 @@ private:
     virtual void dispatchShow();
 
     virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction,
-        const WebCore::String& MIMEType, const WebCore::ResourceRequest&);
+        const WTF::String& MIMEType, const WebCore::ResourceRequest&);
     virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction,
-        const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WebCore::String& frameName);
+        const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction,
         const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
     virtual void cancelPolicyCheck();
@@ -170,16 +169,16 @@ private:
 
     virtual bool shouldFallBack(const WebCore::ResourceError&);
 
-    virtual WebCore::String userAgent(const WebCore::KURL&);
+    virtual WTF::String userAgent(const WebCore::KURL&);
     
     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedForNewPage();
 
     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
-    virtual bool canShowMIMEType(const WebCore::String& MIMEType) const;
-    virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const;
-    virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const;
+    virtual bool canShowMIMEType(const WTF::String& MIMEType) const;
+    virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const;
+    virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const;
 
     virtual void frameLoadCompleted();
     virtual void saveViewStateToItem(WebCore::HistoryItem*);
@@ -189,27 +188,27 @@ private:
     virtual void prepareForDataSourceReplacement();
     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
 
-    virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
+    virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 
-    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement*,
-                                        const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
+    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement*,
+                                        const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
     virtual void didTransferChildFrameToNewDocument();
-    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WebCore::String>&,
-                                          const Vector<WebCore::String>&, const WebCore::String&, bool);
+    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&,
+                                          const Vector<WTF::String>&, const WTF::String&, bool);
     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
     
     virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL,
-                                                    const Vector<WebCore::String>& paramNames, const Vector<WebCore::String>& paramValues);
+                                                    const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues);
     
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
     virtual PassRefPtr<WebCore::Widget> createMediaPlayerProxyPlugin(const WebCore::IntSize&, WebCore::HTMLMediaElement*, const WebCore::KURL&, 
-                                        const Vector<WebCore::String>&, const Vector<WebCore::String>&, const WebCore::String&);
+                                        const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&);
     virtual void hideMediaPlayerProxyPlugin(WebCore::Widget*);
     virtual void showMediaPlayerProxyPlugin(WebCore::Widget*);
 #endif
     
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WebCore::String& mimeType);
-    virtual WebCore::String overrideMediaType() const;
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WTF::String overrideMediaType() const;
     
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
     virtual void documentElementAvailable();
diff --git a/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.h b/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.h
index e908242..3f9df13 100644
--- a/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.h
+++ b/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.h
@@ -27,14 +27,11 @@
  */
 
 #import <WebCore/IconDatabaseClient.h>
-
-namespace WebCore {
-    class String;
-}
+#import <wtf/Forward.h>
 
 class WebIconDatabaseClient : public WebCore::IconDatabaseClient {
 public:
     virtual bool performImport();
     virtual void dispatchDidRemoveAllIcons();
-    virtual void dispatchDidAddIconForPageURL(const WebCore::String& pageURL);
+    virtual void dispatchDidAddIconForPageURL(const WTF::String& pageURL);
 };
diff --git a/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.mm b/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.mm
index 1b0c834..3651dea 100644
--- a/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.mm
+++ b/WebKit/mac/WebCoreSupport/WebIconDatabaseClient.mm
@@ -48,7 +48,7 @@ void WebIconDatabaseClient::dispatchDidRemoveAllIcons()
     [pool drain];
 }
 
-void WebIconDatabaseClient::dispatchDidAddIconForPageURL(const WebCore::String& pageURL)
+void WebIconDatabaseClient::dispatchDidAddIconForPageURL(const WTF::String& pageURL)
 {
     // This is a quick notification that is likely to fire in a rapidly iterating loop
     // Therefore we let WebCore handle autorelease by draining its pool "from time to time"
diff --git a/WebKit/mac/WebCoreSupport/WebInspectorClient.h b/WebKit/mac/WebCoreSupport/WebInspectorClient.h
index bd52954..d33e3b9 100644
--- a/WebKit/mac/WebCoreSupport/WebInspectorClient.h
+++ b/WebKit/mac/WebCoreSupport/WebInspectorClient.h
@@ -59,10 +59,10 @@ public:
     virtual void highlight(WebCore::Node*);
     virtual void hideHighlight();
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+    virtual void populateSetting(const WTF::String& key, WTF::String* value);
+    virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-    virtual bool sendMessageToFrontend(const WebCore::String&);
+    virtual bool sendMessageToFrontend(const WTF::String&);
 
     void releaseFrontendPage();
 
@@ -79,8 +79,8 @@ public:
 
     virtual void frontendLoaded();
 
-    virtual WebCore::String localizedStringsURL();
-    virtual WebCore::String hiddenPanels();
+    virtual WTF::String localizedStringsURL();
+    virtual WTF::String hiddenPanels();
 
     virtual void bringToFront();
     virtual void closeWindow();
@@ -89,12 +89,12 @@ public:
     virtual void detachWindow();
 
     virtual void setAttachedWindowHeight(unsigned height);
-    virtual void inspectedURLChanged(const WebCore::String& newURL);
+    virtual void inspectedURLChanged(const WTF::String& newURL);
 
 private:
     void updateWindowTitle() const;
 
     WebView* m_inspectedWebView;
     RetainPtr<WebInspectorWindowController> m_windowController;
-    WebCore::String m_inspectedURL;
+    WTF::String m_inspectedURL;
 };
diff --git a/WebKit/mac/WebCoreSupport/WebPasteboardHelper.h b/WebKit/mac/WebCoreSupport/WebPasteboardHelper.h
index 7092157..2aa37a6 100644
--- a/WebKit/mac/WebCoreSupport/WebPasteboardHelper.h
+++ b/WebKit/mac/WebCoreSupport/WebPasteboardHelper.h
@@ -34,8 +34,8 @@ class WebPasteboardHelper : public WebCore::PasteboardHelper
 {
 public:
     WebPasteboardHelper(WebHTMLView* view) : m_view(view) {}
-    virtual WebCore::String urlFromPasteboard(NSPasteboard*, WebCore::String* title) const;
-    virtual WebCore::String plainTextFromPasteboard(NSPasteboard*) const;
+    virtual WTF::String urlFromPasteboard(NSPasteboard*, WTF::String* title) const;
+    virtual WTF::String plainTextFromPasteboard(NSPasteboard*) const;
     virtual DOMDocumentFragment* fragmentFromPasteboard(NSPasteboard*) const;
     virtual NSArray* insertablePasteboardTypes() const;
     private:
diff --git a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
index 3d34dbe..53f39f8 100644
--- a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
+++ b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
@@ -48,108 +48,108 @@ private:
     virtual void getPluginInfo(Vector<WebCore::PluginInfo>&);
 
     // WebCore::LocalizationStrategy    
-    virtual WebCore::String inputElementAltText();
-    virtual WebCore::String resetButtonDefaultLabel();
-    virtual WebCore::String searchableIndexIntroduction();
-    virtual WebCore::String submitButtonDefaultLabel();
-    virtual WebCore::String fileButtonChooseFileLabel();
-    virtual WebCore::String fileButtonNoFileSelectedLabel();
-    virtual WebCore::String copyImageUnknownFileLabel();
+    virtual WTF::String inputElementAltText();
+    virtual WTF::String resetButtonDefaultLabel();
+    virtual WTF::String searchableIndexIntroduction();
+    virtual WTF::String submitButtonDefaultLabel();
+    virtual WTF::String fileButtonChooseFileLabel();
+    virtual WTF::String fileButtonNoFileSelectedLabel();
+    virtual WTF::String copyImageUnknownFileLabel();
 #if ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String contextMenuItemTagOpenLinkInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadLinkToDisk();
-    virtual WebCore::String contextMenuItemTagCopyLinkToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenImageInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadImageToDisk();
-    virtual WebCore::String contextMenuItemTagCopyImageToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenFrameInNewWindow();
-    virtual WebCore::String contextMenuItemTagCopy();
-    virtual WebCore::String contextMenuItemTagGoBack();
-    virtual WebCore::String contextMenuItemTagGoForward();
-    virtual WebCore::String contextMenuItemTagStop();
-    virtual WebCore::String contextMenuItemTagReload();
-    virtual WebCore::String contextMenuItemTagCut();
-    virtual WebCore::String contextMenuItemTagPaste();
-    virtual WebCore::String contextMenuItemTagNoGuessesFound();
-    virtual WebCore::String contextMenuItemTagIgnoreSpelling();
-    virtual WebCore::String contextMenuItemTagLearnSpelling();
-    virtual WebCore::String contextMenuItemTagSearchWeb();
-    virtual WebCore::String contextMenuItemTagLookUpInDictionary();
-    virtual WebCore::String contextMenuItemTagOpenLink();
-    virtual WebCore::String contextMenuItemTagIgnoreGrammar();
-    virtual WebCore::String contextMenuItemTagSpellingMenu();
-    virtual WebCore::String contextMenuItemTagShowSpellingPanel(bool show);
-    virtual WebCore::String contextMenuItemTagCheckSpelling();
-    virtual WebCore::String contextMenuItemTagCheckSpellingWhileTyping();
-    virtual WebCore::String contextMenuItemTagCheckGrammarWithSpelling();
-    virtual WebCore::String contextMenuItemTagFontMenu();
-    virtual WebCore::String contextMenuItemTagBold();
-    virtual WebCore::String contextMenuItemTagItalic();
-    virtual WebCore::String contextMenuItemTagUnderline();
-    virtual WebCore::String contextMenuItemTagOutline();
-    virtual WebCore::String contextMenuItemTagWritingDirectionMenu();
-    virtual WebCore::String contextMenuItemTagTextDirectionMenu();
-    virtual WebCore::String contextMenuItemTagDefaultDirection();
-    virtual WebCore::String contextMenuItemTagLeftToRight();
-    virtual WebCore::String contextMenuItemTagRightToLeft();
-    virtual WebCore::String contextMenuItemTagSearchInSpotlight();
-    virtual WebCore::String contextMenuItemTagShowFonts();
-    virtual WebCore::String contextMenuItemTagStyles();
-    virtual WebCore::String contextMenuItemTagShowColors();
-    virtual WebCore::String contextMenuItemTagSpeechMenu();
-    virtual WebCore::String contextMenuItemTagStartSpeaking();
-    virtual WebCore::String contextMenuItemTagStopSpeaking();
-    virtual WebCore::String contextMenuItemTagCorrectSpellingAutomatically();
-    virtual WebCore::String contextMenuItemTagSubstitutionsMenu();
-    virtual WebCore::String contextMenuItemTagShowSubstitutions(bool show);
-    virtual WebCore::String contextMenuItemTagSmartCopyPaste();
-    virtual WebCore::String contextMenuItemTagSmartQuotes();
-    virtual WebCore::String contextMenuItemTagSmartDashes();
-    virtual WebCore::String contextMenuItemTagSmartLinks();
-    virtual WebCore::String contextMenuItemTagTextReplacement();
-    virtual WebCore::String contextMenuItemTagTransformationsMenu();
-    virtual WebCore::String contextMenuItemTagMakeUpperCase();
-    virtual WebCore::String contextMenuItemTagMakeLowerCase();
-    virtual WebCore::String contextMenuItemTagCapitalize();
-    virtual WebCore::String contextMenuItemTagChangeBack(const WebCore::String& replacedString);
-    virtual WebCore::String contextMenuItemTagInspectElement();
+    virtual WTF::String contextMenuItemTagOpenLinkInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadLinkToDisk();
+    virtual WTF::String contextMenuItemTagCopyLinkToClipboard();
+    virtual WTF::String contextMenuItemTagOpenImageInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadImageToDisk();
+    virtual WTF::String contextMenuItemTagCopyImageToClipboard();
+    virtual WTF::String contextMenuItemTagOpenFrameInNewWindow();
+    virtual WTF::String contextMenuItemTagCopy();
+    virtual WTF::String contextMenuItemTagGoBack();
+    virtual WTF::String contextMenuItemTagGoForward();
+    virtual WTF::String contextMenuItemTagStop();
+    virtual WTF::String contextMenuItemTagReload();
+    virtual WTF::String contextMenuItemTagCut();
+    virtual WTF::String contextMenuItemTagPaste();
+    virtual WTF::String contextMenuItemTagNoGuessesFound();
+    virtual WTF::String contextMenuItemTagIgnoreSpelling();
+    virtual WTF::String contextMenuItemTagLearnSpelling();
+    virtual WTF::String contextMenuItemTagSearchWeb();
+    virtual WTF::String contextMenuItemTagLookUpInDictionary();
+    virtual WTF::String contextMenuItemTagOpenLink();
+    virtual WTF::String contextMenuItemTagIgnoreGrammar();
+    virtual WTF::String contextMenuItemTagSpellingMenu();
+    virtual WTF::String contextMenuItemTagShowSpellingPanel(bool show);
+    virtual WTF::String contextMenuItemTagCheckSpelling();
+    virtual WTF::String contextMenuItemTagCheckSpellingWhileTyping();
+    virtual WTF::String contextMenuItemTagCheckGrammarWithSpelling();
+    virtual WTF::String contextMenuItemTagFontMenu();
+    virtual WTF::String contextMenuItemTagBold();
+    virtual WTF::String contextMenuItemTagItalic();
+    virtual WTF::String contextMenuItemTagUnderline();
+    virtual WTF::String contextMenuItemTagOutline();
+    virtual WTF::String contextMenuItemTagWritingDirectionMenu();
+    virtual WTF::String contextMenuItemTagTextDirectionMenu();
+    virtual WTF::String contextMenuItemTagDefaultDirection();
+    virtual WTF::String contextMenuItemTagLeftToRight();
+    virtual WTF::String contextMenuItemTagRightToLeft();
+    virtual WTF::String contextMenuItemTagSearchInSpotlight();
+    virtual WTF::String contextMenuItemTagShowFonts();
+    virtual WTF::String contextMenuItemTagStyles();
+    virtual WTF::String contextMenuItemTagShowColors();
+    virtual WTF::String contextMenuItemTagSpeechMenu();
+    virtual WTF::String contextMenuItemTagStartSpeaking();
+    virtual WTF::String contextMenuItemTagStopSpeaking();
+    virtual WTF::String contextMenuItemTagCorrectSpellingAutomatically();
+    virtual WTF::String contextMenuItemTagSubstitutionsMenu();
+    virtual WTF::String contextMenuItemTagShowSubstitutions(bool show);
+    virtual WTF::String contextMenuItemTagSmartCopyPaste();
+    virtual WTF::String contextMenuItemTagSmartQuotes();
+    virtual WTF::String contextMenuItemTagSmartDashes();
+    virtual WTF::String contextMenuItemTagSmartLinks();
+    virtual WTF::String contextMenuItemTagTextReplacement();
+    virtual WTF::String contextMenuItemTagTransformationsMenu();
+    virtual WTF::String contextMenuItemTagMakeUpperCase();
+    virtual WTF::String contextMenuItemTagMakeLowerCase();
+    virtual WTF::String contextMenuItemTagCapitalize();
+    virtual WTF::String contextMenuItemTagChangeBack(const WTF::String& replacedString);
+    virtual WTF::String contextMenuItemTagInspectElement();
 #endif // ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String searchMenuNoRecentSearchesText();
-    virtual WebCore::String searchMenuRecentSearchesText();
-    virtual WebCore::String searchMenuClearRecentSearchesText();
-    virtual WebCore::String AXWebAreaText();
-    virtual WebCore::String AXLinkText();
-    virtual WebCore::String AXListMarkerText();
-    virtual WebCore::String AXImageMapText();
-    virtual WebCore::String AXHeadingText();
-    virtual WebCore::String AXDefinitionListTermText();
-    virtual WebCore::String AXDefinitionListDefinitionText();
-    virtual WebCore::String AXARIAContentGroupText(const WebCore::String& ariaType);
-    virtual WebCore::String AXButtonActionVerb();
-    virtual WebCore::String AXRadioButtonActionVerb();
-    virtual WebCore::String AXTextFieldActionVerb();
-    virtual WebCore::String AXCheckedCheckBoxActionVerb();
-    virtual WebCore::String AXUncheckedCheckBoxActionVerb();
-    virtual WebCore::String AXMenuListActionVerb();
-    virtual WebCore::String AXMenuListPopupActionVerb();
-    virtual WebCore::String AXLinkActionVerb();
-    virtual WebCore::String missingPluginText();
-    virtual WebCore::String crashedPluginText();
-    virtual WebCore::String multipleFileUploadText(unsigned numberOfFiles);
-    virtual WebCore::String unknownFileSizeText();
-    virtual WebCore::String imageTitle(const WebCore::String& filename, const WebCore::IntSize& size);
-    virtual WebCore::String mediaElementLoadingStateText();
-    virtual WebCore::String mediaElementLiveBroadcastStateText();
-    virtual WebCore::String localizedMediaControlElementString(const WebCore::String&);
-    virtual WebCore::String localizedMediaControlElementHelpText(const WebCore::String&);
-    virtual WebCore::String localizedMediaTimeDescription(float);
-    virtual WebCore::String validationMessageValueMissingText();
-    virtual WebCore::String validationMessageTypeMismatchText();
-    virtual WebCore::String validationMessagePatternMismatchText();
-    virtual WebCore::String validationMessageTooLongText();
-    virtual WebCore::String validationMessageRangeUnderflowText();
-    virtual WebCore::String validationMessageRangeOverflowText();
-    virtual WebCore::String validationMessageStepMismatchText();
+    virtual WTF::String searchMenuNoRecentSearchesText();
+    virtual WTF::String searchMenuRecentSearchesText();
+    virtual WTF::String searchMenuClearRecentSearchesText();
+    virtual WTF::String AXWebAreaText();
+    virtual WTF::String AXLinkText();
+    virtual WTF::String AXListMarkerText();
+    virtual WTF::String AXImageMapText();
+    virtual WTF::String AXHeadingText();
+    virtual WTF::String AXDefinitionListTermText();
+    virtual WTF::String AXDefinitionListDefinitionText();
+    virtual WTF::String AXARIAContentGroupText(const WTF::String& ariaType);
+    virtual WTF::String AXButtonActionVerb();
+    virtual WTF::String AXRadioButtonActionVerb();
+    virtual WTF::String AXTextFieldActionVerb();
+    virtual WTF::String AXCheckedCheckBoxActionVerb();
+    virtual WTF::String AXUncheckedCheckBoxActionVerb();
+    virtual WTF::String AXMenuListActionVerb();
+    virtual WTF::String AXMenuListPopupActionVerb();
+    virtual WTF::String AXLinkActionVerb();
+    virtual WTF::String missingPluginText();
+    virtual WTF::String crashedPluginText();
+    virtual WTF::String multipleFileUploadText(unsigned numberOfFiles);
+    virtual WTF::String unknownFileSizeText();
+    virtual WTF::String imageTitle(const WTF::String& filename, const WebCore::IntSize& size);
+    virtual WTF::String mediaElementLoadingStateText();
+    virtual WTF::String mediaElementLiveBroadcastStateText();
+    virtual WTF::String localizedMediaControlElementString(const WTF::String&);
+    virtual WTF::String localizedMediaControlElementHelpText(const WTF::String&);
+    virtual WTF::String localizedMediaTimeDescription(float);
+    virtual WTF::String validationMessageValueMissingText();
+    virtual WTF::String validationMessageTypeMismatchText();
+    virtual WTF::String validationMessagePatternMismatchText();
+    virtual WTF::String validationMessageTooLongText();
+    virtual WTF::String validationMessageRangeUnderflowText();
+    virtual WTF::String validationMessageRangeOverflowText();
+    virtual WTF::String validationMessageStepMismatchText();
 
     // WebCore::VisitedLinkStrategy
     virtual bool isLinkVisited(WebCore::Page*, WebCore::LinkHash);
diff --git a/WebKit/mac/WebCoreSupport/WebPluginHalterClient.h b/WebKit/mac/WebCoreSupport/WebPluginHalterClient.h
index a0d398d..ed4ff11 100644
--- a/WebKit/mac/WebCoreSupport/WebPluginHalterClient.h
+++ b/WebKit/mac/WebCoreSupport/WebPluginHalterClient.h
@@ -24,10 +24,10 @@
  */
 
 #import <WebCore/PluginHalterClient.h>
+#import <wtf/Forward.h>
 
 namespace WebCore {
     class Node;
-    class String;
 }
 
 @class WebView;
@@ -36,7 +36,7 @@ class WebPluginHalterClient : public WebCore::PluginHalterClient {
 public:
     WebPluginHalterClient(WebView *);
     
-    virtual bool shouldHaltPlugin(WebCore::Node*, bool, const WebCore::String&) const;
+    virtual bool shouldHaltPlugin(WebCore::Node*, bool, const WTF::String&) const;
     virtual bool enabled() const;
     
 private:
diff --git a/WebKit/mac/WebView/WebFrameInternal.h b/WebKit/mac/WebView/WebFrameInternal.h
index 586b4c3..240b09c 100644
--- a/WebKit/mac/WebView/WebFrameInternal.h
+++ b/WebKit/mac/WebView/WebFrameInternal.h
@@ -92,8 +92,8 @@ WebView *getWebView(WebFrame *webFrame);
 
 @interface WebFrame (WebInternal)
 
-+ (void)_createMainFrameWithPage:(WebCore::Page*)page frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView;
-+ (PassRefPtr<WebCore::Frame>)_createSubframeWithOwnerElement:(WebCore::HTMLFrameOwnerElement*)ownerElement frameName:(const WebCore::String&)name frameView:(WebFrameView *)frameView;
++ (void)_createMainFrameWithPage:(WebCore::Page*)page frameName:(const WTF::String&)name frameView:(WebFrameView *)frameView;
++ (PassRefPtr<WebCore::Frame>)_createSubframeWithOwnerElement:(WebCore::HTMLFrameOwnerElement*)ownerElement frameName:(const WTF::String&)name frameView:(WebFrameView *)frameView;
 - (id)_initWithWebFrameView:(WebFrameView *)webFrameView webView:(WebView *)webView;
 
 - (void)_clearCoreFrame;
diff --git a/WebKit/mac/WebView/WebViewData.h b/WebKit/mac/WebView/WebViewData.h
index d097c4c..3b80a89 100644
--- a/WebKit/mac/WebView/WebViewData.h
+++ b/WebKit/mac/WebView/WebViewData.h
@@ -79,7 +79,7 @@ extern int pluginDatabaseClientCount;
     float zoomMultiplier;
 
     NSString *applicationNameForUserAgent;
-    WebCore::String userAgent;
+    WTF::String userAgent;
     BOOL userAgentOverridden;
     
     WebPreferences *preferences;
diff --git a/WebKit/mac/WebView/WebViewInternal.h b/WebKit/mac/WebView/WebViewInternal.h
index f95d3d3..71a2660 100644
--- a/WebKit/mac/WebView/WebViewInternal.h
+++ b/WebKit/mac/WebView/WebViewInternal.h
@@ -36,8 +36,9 @@
 #ifdef __cplusplus
 #import <WebCore/WebCoreKeyboardUIMode.h>
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
-    class String;
     class Frame;
     class KURL;
     class KeyboardEvent;
diff --git a/WebKit/qt/Api/qwebdatabase_p.h b/WebKit/qt/Api/qwebdatabase_p.h
index 9ae8fc8..ec03ea5 100644
--- a/WebKit/qt/Api/qwebdatabase_p.h
+++ b/WebKit/qt/Api/qwebdatabase_p.h
@@ -29,7 +29,7 @@
 
 class QWebDatabasePrivate : public QSharedData {
 public:
-    WebCore::String name;
+    WTF::String name;
     WTF::RefPtr<WebCore::SecurityOrigin> origin;
 };
 
diff --git a/WebKit/qt/Api/qwebframe.cpp b/WebKit/qt/Api/qwebframe.cpp
index 811a9e7..0bb6922 100644
--- a/WebKit/qt/Api/qwebframe.cpp
+++ b/WebKit/qt/Api/qwebframe.cpp
@@ -179,7 +179,7 @@ void QWEBKIT_EXPORT qtwebkit_webframe_scrollRecursively(QWebFrame* qFrame, int d
 
 QWebFrameData::QWebFrameData(WebCore::Page* parentPage, WebCore::Frame* parentFrame,
                              WebCore::HTMLFrameOwnerElement* ownerFrameElement,
-                             const WebCore::String& frameName)
+                             const WTF::String& frameName)
     : name(frameName)
     , ownerElement(ownerFrameElement)
     , page(parentPage)
@@ -809,7 +809,7 @@ void QWebFrame::setHtml(const QString &html, const QUrl &baseUrl)
     WebCore::ResourceRequest request(kurl);
     const QByteArray utf8 = html.toUtf8();
     WTF::RefPtr<WebCore::SharedBuffer> data = WebCore::SharedBuffer::create(utf8.constData(), utf8.length());
-    WebCore::SubstituteData substituteData(data, WebCore::String("text/html"), WebCore::String("utf-8"), KURL());
+    WebCore::SubstituteData substituteData(data, WTF::String("text/html"), WTF::String("utf-8"), KURL());
     d->frame->loader()->load(request, substituteData, false);
 }
 
@@ -832,14 +832,14 @@ void QWebFrame::setContent(const QByteArray &data, const QString &mimeType, cons
     WebCore::ResourceRequest request(kurl);
     WTF::RefPtr<WebCore::SharedBuffer> buffer = WebCore::SharedBuffer::create(data.constData(), data.length());
     QString actualMimeType;
-    WebCore::String encoding;
+    WTF::String encoding;
     if (mimeType.isEmpty())
         actualMimeType = QLatin1String("text/html");
     else {
         actualMimeType = extractMIMETypeFromMediaType(mimeType);
         encoding = extractCharsetFromMediaType(mimeType);
     }
-    WebCore::SubstituteData substituteData(buffer, WebCore::String(actualMimeType), encoding, KURL());
+    WebCore::SubstituteData substituteData(buffer, WTF::String(actualMimeType), encoding, KURL());
     d->frame->loader()->load(request, substituteData, false);
 }
 
diff --git a/WebKit/qt/Api/qwebframe_p.h b/WebKit/qt/Api/qwebframe_p.h
index 62bd59e..15b0549 100644
--- a/WebKit/qt/Api/qwebframe_p.h
+++ b/WebKit/qt/Api/qwebframe_p.h
@@ -44,16 +44,16 @@ class QWebFrameData {
 public:
     QWebFrameData(WebCore::Page*, WebCore::Frame* parentFrame = 0,
                   WebCore::HTMLFrameOwnerElement* = 0,
-                  const WebCore::String& frameName = WebCore::String());
+                  const WTF::String& frameName = WTF::String());
 
     WebCore::KURL url;
-    WebCore::String name;
+    WTF::String name;
     WebCore::HTMLFrameOwnerElement* ownerElement;
     WebCore::Page* page;
     RefPtr<WebCore::Frame> frame;
     WebCore::FrameLoaderClientQt* frameLoaderClient;
 
-    WebCore::String referrer;
+    WTF::String referrer;
     bool allowsScrolling;
     int marginWidth;
     int marginHeight;
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 7275642..4f2845f 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,14 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebCoreSupport/FrameLoaderClientQt.h:
+        * WebCoreSupport/InspectorClientQt.h:
+
 2010-08-08  Ariya Hidayat  <ariya at sencha.com>
 
         Reviewed by Antonio Gomes.
diff --git a/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/WebKit/qt/WebCoreSupport/ChromeClientQt.h
index c10957c..55edc50 100644
--- a/WebKit/qt/WebCoreSupport/ChromeClientQt.h
+++ b/WebKit/qt/WebCoreSupport/ChromeClientQt.h
@@ -180,8 +180,8 @@ namespace WebCore {
 
         QWebPage* m_webPage;
         WebCore::KURL lastHoverURL;
-        WebCore::String lastHoverTitle;
-        WebCore::String lastHoverContent;
+        WTF::String lastHoverTitle;
+        WTF::String lastHoverContent;
 
         bool toolBarsVisible;
         bool statusBarVisible;
diff --git a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
index 1060023..cf76dae 100644
--- a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
+++ b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp
@@ -1067,7 +1067,7 @@ WebCore::Frame* FrameLoaderClientQt::dispatchCreatePage()
     return newPage->mainFrame()->d->frame;
 }
 
-void FrameLoaderClientQt::dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WebCore::String& MIMEType, const WebCore::ResourceRequest&)
+void FrameLoaderClientQt::dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WTF::String& MIMEType, const WebCore::ResourceRequest&)
 {
     // we need to call directly here
     const ResourceResponse& response = m_frame->loader()->activeDocumentLoader()->response();
@@ -1079,7 +1079,7 @@ void FrameLoaderClientQt::dispatchDecidePolicyForMIMEType(FramePolicyFunction fu
         callPolicyFunction(function, PolicyDownload);
 }
 
-void FrameLoaderClientQt::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState>, const WebCore::String&)
+void FrameLoaderClientQt::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, PassRefPtr<WebCore::FormState>, const WTF::String&)
 {
     Q_ASSERT(m_webFrame);
     QNetworkRequest r(request.toNetworkRequest(m_webFrame));
diff --git a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
index ec672f5..00a073f 100644
--- a/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
+++ b/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h
@@ -40,6 +40,7 @@
 #include "ResourceResponse.h"
 #include <QUrl>
 #include <qobject.h>
+#include <wtf/Forward.h>
 class QWebFrame;
 
 namespace WebCore {
@@ -49,7 +50,6 @@ class DocumentLoader;
 class Element;
 class FormState;
 class NavigationAction;
-class String;
 class ResourceLoader;
 
 struct LoadErrorResetToken;
@@ -121,8 +121,8 @@ public:
     virtual WebCore::Frame* dispatchCreatePage();
     virtual void dispatchShow();
 
-    virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WebCore::String&, const WebCore::ResourceRequest&);
-    virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>, const WebCore::String&);
+    virtual void dispatchDecidePolicyForMIMEType(FramePolicyFunction function, const WTF::String&, const WebCore::ResourceRequest&);
+    virtual void dispatchDecidePolicyForNewWindowAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>, const WTF::String&);
     virtual void dispatchDecidePolicyForNavigationAction(FramePolicyFunction function, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<FormState>);
     virtual void cancelPolicyCheck();
 
diff --git a/WebKit/qt/WebCoreSupport/InspectorClientQt.h b/WebKit/qt/WebCoreSupport/InspectorClientQt.h
index c996f55..9526c88 100644
--- a/WebKit/qt/WebCoreSupport/InspectorClientQt.h
+++ b/WebKit/qt/WebCoreSupport/InspectorClientQt.h
@@ -35,6 +35,7 @@
 #include "OwnPtr.h"
 #include "PassOwnPtr.h"
 #include <QtCore/QString>
+#include <wtf/Forward.h>
 
 class QWebPage;
 class QWebView;
@@ -42,7 +43,6 @@ class QWebView;
 namespace WebCore {
 class Node;
 class Page;
-class String;
 
 class InspectorClientQt : public InspectorClient {
 public:
diff --git a/WebKit/win/AccessibleBase.h b/WebKit/win/AccessibleBase.h
index ca1703f..df2d927 100644
--- a/WebKit/win/AccessibleBase.h
+++ b/WebKit/win/AccessibleBase.h
@@ -100,8 +100,8 @@ protected:
     AccessibleBase(WebCore::AccessibilityObject*);
     virtual ~AccessibleBase();
 
-    virtual WebCore::String name() const;
-    virtual WebCore::String value() const;
+    virtual WTF::String name() const;
+    virtual WTF::String value() const;
     virtual long role() const;
 
     HRESULT getAccessibilityObjectForChild(VARIANT vChild, WebCore::AccessibilityObject*&) const;
diff --git a/WebKit/win/AccessibleImage.h b/WebKit/win/AccessibleImage.h
index 0c111e2..e987795 100644
--- a/WebKit/win/AccessibleImage.h
+++ b/WebKit/win/AccessibleImage.h
@@ -35,7 +35,7 @@ public:
     virtual ~AccessibleImage() { }
 
 private:
-    virtual WebCore::String name() const;
+    virtual WTF::String name() const;
 };
 
 #endif // AccessibleImage_h
diff --git a/WebKit/win/COMPropertyBag.h b/WebKit/win/COMPropertyBag.h
index ae4a7b7..610c367 100644
--- a/WebKit/win/COMPropertyBag.h
+++ b/WebKit/win/COMPropertyBag.h
@@ -34,7 +34,7 @@
 
 #include "COMVariantSetter.h"
 
-template<typename ValueType, typename KeyType = typename WebCore::String, typename HashType = typename WebCore::StringHash>
+template<typename ValueType, typename KeyType = typename WTF::String, typename HashType = typename WTF::StringHash>
 class COMPropertyBag : public IPropertyBag, public IPropertyBag2, Noncopyable {
 public:
     typedef HashMap<KeyType, ValueType, HashType> HashMapType;
diff --git a/WebKit/win/COMVariantSetter.h b/WebKit/win/COMVariantSetter.h
index 22c20e4..feb233c 100644
--- a/WebKit/win/COMVariantSetter.h
+++ b/WebKit/win/COMVariantSetter.h
@@ -29,10 +29,7 @@
 #include <WebCore/BString.h>
 #include <WebCore/COMPtr.h>
 #include <wtf/Assertions.h>
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 template<typename T> struct COMVariantSetter {};
 
@@ -44,11 +41,11 @@ template<typename T> struct COMVariantSetterBase
     }
 };
 
-template<> struct COMVariantSetter<WebCore::String> : COMVariantSetterBase<WebCore::String>
+template<> struct COMVariantSetter<WTF::String> : COMVariantSetterBase<WTF::String>
 {
     static const VARENUM VariantType = VT_BSTR;
 
-    static void setVariant(VARIANT* variant, const WebCore::String& value)
+    static void setVariant(VARIANT* variant, const WTF::String& value)
     {
         ASSERT(V_VT(variant) == VT_EMPTY);
 
diff --git a/WebKit/win/ChangeLog b/WebKit/win/ChangeLog
index b3bd959..acfeab7 100644
--- a/WebKit/win/ChangeLog
+++ b/WebKit/win/ChangeLog
@@ -1,3 +1,17 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * COMVariantSetter.h:
+        * MarshallingHelpers.h:
+        * WebCoreSupport/WebContextMenuClient.h:
+        * WebCoreSupport/WebPluginHalterClient.h:
+        * WebHistory.h:
+
 2010-08-06  Jessie Berlin  <jberlin at apple.com>
 
         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
diff --git a/WebKit/win/DOMCSSClasses.cpp b/WebKit/win/DOMCSSClasses.cpp
index c6190ec..b89053b 100644
--- a/WebKit/win/DOMCSSClasses.cpp
+++ b/WebKit/win/DOMCSSClasses.cpp
@@ -91,7 +91,7 @@ HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::cssText(
 HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::setCssText( 
     /* [in] */ BSTR cssText)
 {
-    WebCore::String cssTextString(cssText);
+    WTF::String cssTextString(cssText);
     // FIXME: <rdar://5148045> return DOM exception info
     WebCore::ExceptionCode ec;
     m_style->setCssText(cssTextString, ec);
@@ -102,8 +102,8 @@ HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::getPropertyValue(
     /* [in] */ BSTR propertyName,
     /* [retval][out] */ BSTR* result)
 {
-    WebCore::String propertyNameString(propertyName);
-    WebCore::String value = m_style->getPropertyValue(propertyNameString);
+    WTF::String propertyNameString(propertyName);
+    WTF::String value = m_style->getPropertyValue(propertyNameString);
     *result = SysAllocStringLen(value.characters(), value.length());
     if (value.length() && !*result)
         return E_OUTOFMEMORY;
@@ -139,9 +139,9 @@ HRESULT STDMETHODCALLTYPE DOMCSSStyleDeclaration::setProperty(
     /* [in] */ BSTR value,
     /* [in] */ BSTR priority)
 {
-    WebCore::String propertyNameString(propertyName);
-    WebCore::String valueString(value);
-    WebCore::String priorityString(priority);
+    WTF::String propertyNameString(propertyName);
+    WTF::String valueString(value);
+    WTF::String priorityString(priority);
     // FIXME: <rdar://5148045> return DOM exception info
     WebCore::ExceptionCode code;
     m_style->setProperty(propertyNameString, valueString, priorityString, code);
diff --git a/WebKit/win/DOMCoreClasses.cpp b/WebKit/win/DOMCoreClasses.cpp
index 42e8e63..c6b8823 100644
--- a/WebKit/win/DOMCoreClasses.cpp
+++ b/WebKit/win/DOMCoreClasses.cpp
@@ -60,14 +60,14 @@ DEFINE_GUID(IID_DOMElement, 0x3b0c0eff, 0x478b, 0x4b0b, 0x82, 0x90, 0xd2, 0x32,
 // "DOMObject" exists both in the WebCore namespace and unnamespaced in this
 // file, which leads to ambiguities if we say "using namespace WebCore".
 using namespace WebCore::HTMLNames;
-using WebCore::AtomicString;
+using WTF::AtomicString;
 using WebCore::BString;
 using WebCore::Element;
 using WebCore::ExceptionCode;
 using WebCore::FontDescription;
 using WebCore::Frame;
 using WebCore::IntRect;
-using WebCore::String;
+using WTF::String;
 
 // DOMObject - IUnknown -------------------------------------------------------
 
@@ -119,7 +119,7 @@ HRESULT STDMETHODCALLTYPE DOMNode::nodeValue(
 {
     if (!m_node)
         return E_FAIL;
-    WebCore::String nodeValueStr = m_node->nodeValue();
+    WTF::String nodeValueStr = m_node->nodeValue();
     *result = SysAllocStringLen(nodeValueStr.characters(), nodeValueStr.length());
     if (nodeValueStr.length() && !*result)
         return E_OUTOFMEMORY;
@@ -894,8 +894,8 @@ HRESULT STDMETHODCALLTYPE DOMElement::getAttribute(
 {
     if (!m_element)
         return E_FAIL;
-    WebCore::String nameString(name, SysStringLen(name));
-    WebCore::String& attrValueString = (WebCore::String&) m_element->getAttribute(nameString);
+    WTF::String nameString(name, SysStringLen(name));
+    WTF::String& attrValueString = (WTF::String&) m_element->getAttribute(nameString);
     *result = SysAllocStringLen(attrValueString.characters(), attrValueString.length());
     if (attrValueString.length() && !*result)
         return E_OUTOFMEMORY;
@@ -909,8 +909,8 @@ HRESULT STDMETHODCALLTYPE DOMElement::setAttribute(
     if (!m_element)
         return E_FAIL;
 
-    WebCore::String nameString(name, SysStringLen(name));
-    WebCore::String valueString(value, SysStringLen(value));
+    WTF::String nameString(name, SysStringLen(name));
+    WTF::String valueString(value, SysStringLen(value));
     WebCore::ExceptionCode ec = 0;
     m_element->setAttribute(nameString, valueString, ec);
     return ec ? E_FAIL : S_OK;
diff --git a/WebKit/win/DOMHTMLClasses.cpp b/WebKit/win/DOMHTMLClasses.cpp
index f9634ff..2dd6deb 100644
--- a/WebKit/win/DOMHTMLClasses.cpp
+++ b/WebKit/win/DOMHTMLClasses.cpp
@@ -483,7 +483,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLElement::innerText(
         /* [retval][out] */ BSTR* result)
 {
     ASSERT(m_element && m_element->isHTMLElement());
-    WebCore::String innerTextString = static_cast<HTMLElement*>(m_element)->innerText();
+    WTF::String innerTextString = static_cast<HTMLElement*>(m_element)->innerText();
     *result = BString(innerTextString.characters(), innerTextString.length()).release();
     return S_OK;
 }
@@ -493,7 +493,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLElement::setInnerText(
 {
     ASSERT(m_element && m_element->isHTMLElement());
     HTMLElement* htmlEle = static_cast<HTMLElement*>(m_element);
-    WebCore::String textString(text, SysStringLen(text));
+    WTF::String textString(text, SysStringLen(text));
     WebCore::ExceptionCode ec = 0;
     htmlEle->setInnerText(textString, ec);
     return S_OK;
@@ -561,7 +561,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::action(
         /* [retval][out] */ BSTR* result)
 {
     ASSERT(m_element && m_element->hasTagName(formTag));
-    WebCore::String actionString = static_cast<HTMLFormElement*>(m_element)->action();
+    WTF::String actionString = static_cast<HTMLFormElement*>(m_element)->action();
     *result = BString(actionString.characters(), actionString.length()).release();
     return S_OK;
 }
@@ -591,7 +591,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLFormElement::method(
         /* [retval][out] */ BSTR* result)
 {
     ASSERT(m_element && m_element->hasTagName(formTag));
-    WebCore::String methodString = static_cast<HTMLFormElement*>(m_element)->method();
+    WTF::String methodString = static_cast<HTMLFormElement*>(m_element)->method();
     *result = BString(methodString.characters(), methodString.length()).release();
     return S_OK;
 }
@@ -1188,7 +1188,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::setType(
 {
     ASSERT(m_element && m_element->hasTagName(inputTag));
     HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
-    WebCore::String typeString(type, SysStringLen(type));
+    WTF::String typeString(type, SysStringLen(type));
     inputElement->setType(typeString);
     return S_OK;
 }
@@ -1212,7 +1212,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLInputElement::value(
 {
     ASSERT(m_element && m_element->hasTagName(inputTag));
     HTMLInputElement* inputElement = static_cast<HTMLInputElement*>(m_element);
-    WebCore::String valueString = inputElement->value();
+    WTF::String valueString = inputElement->value();
     *result = BString(valueString.characters(), valueString.length()).release();
     if (valueString.length() && !*result)
         return E_OUTOFMEMORY;
@@ -1550,7 +1550,7 @@ HRESULT STDMETHODCALLTYPE DOMHTMLTextAreaElement::value(
 {
     ASSERT(m_element && m_element->hasTagName(textareaTag));
     HTMLTextAreaElement* textareaElement = static_cast<HTMLTextAreaElement*>(m_element);
-    WebCore::String valueString = textareaElement->value();
+    WTF::String valueString = textareaElement->value();
     *result = BString(valueString.characters(), valueString.length()).release();
     if (valueString.length() && !*result)
         return E_OUTOFMEMORY;
diff --git a/WebKit/win/MarshallingHelpers.h b/WebKit/win/MarshallingHelpers.h
index bbde61f..b213fb9 100644
--- a/WebKit/win/MarshallingHelpers.h
+++ b/WebKit/win/MarshallingHelpers.h
@@ -26,12 +26,12 @@
 #ifndef MarshallingHelpers_H
 #define MarshallingHelpers_H
 
+#include <wtf/Forward.h>
 #include <CoreFoundation/CoreFoundation.h>
 
 namespace WebCore {
     class IntRect;
     class KURL;
-    class String;
 }
 
 class MarshallingHelpers
@@ -39,8 +39,8 @@ class MarshallingHelpers
 public:
     static WebCore::KURL BSTRToKURL(BSTR);
     static BSTR KURLToBSTR(const WebCore::KURL&);
-    static CFURLRef PathStringToFileCFURLRef(const WebCore::String&);
-    static WebCore::String FileCFURLRefToPathString(CFURLRef fileURL);
+    static CFURLRef PathStringToFileCFURLRef(const WTF::String&);
+    static WTF::String FileCFURLRefToPathString(CFURLRef fileURL);
     static CFURLRef BSTRToCFURLRef(BSTR);
     static CFStringRef BSTRToCFStringRef(BSTR);
     static CFStringRef LPCOLESTRToCFStringRef(LPCOLESTR);
diff --git a/WebKit/win/WebCoreSupport/WebChromeClient.cpp b/WebKit/win/WebCoreSupport/WebChromeClient.cpp
index 08d4ee9..d5aea25 100644
--- a/WebKit/win/WebCoreSupport/WebChromeClient.cpp
+++ b/WebKit/win/WebCoreSupport/WebChromeClient.cpp
@@ -786,7 +786,7 @@ void WebChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChoose
     // FIXME: Show some sort of error if too many files are selected and the buffer is too small.  For now, this will fail silently.
 }
 
-void WebChromeClient::chooseIconForFiles(const Vector<WebCore::String>& filenames, WebCore::FileChooser* chooser)
+void WebChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser)
 {
     chooser->iconLoaded(Icon::createIconForFiles(filenames));
 }
diff --git a/WebKit/win/WebCoreSupport/WebChromeClient.h b/WebKit/win/WebCoreSupport/WebChromeClient.h
index cea11c7..5a796eb 100644
--- a/WebKit/win/WebCoreSupport/WebChromeClient.h
+++ b/WebKit/win/WebCoreSupport/WebChromeClient.h
@@ -78,17 +78,17 @@ public:
 
     virtual void setResizable(bool);
 
-    virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WebCore::String& message, unsigned line, const WebCore::String& url);
+    virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned line, const WTF::String& url);
 
     virtual bool canRunBeforeUnloadConfirmPanel();
-    virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame);
+    virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
 
     virtual void closeWindowSoon();
 
-    virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result);
-    virtual void setStatusbarText(const WebCore::String&);
+    virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
+    virtual void setStatusbarText(const WTF::String&);
     virtual bool shouldInterruptJavaScript();
 
     virtual bool tabsToLinks() const;
@@ -109,12 +109,12 @@ public:
     virtual bool shouldMissingPluginMessageBeButton() const;
     virtual void missingPluginButtonClicked(WebCore::Element*) const;
 
-    virtual void setToolTip(const WebCore::String&, WebCore::TextDirection);
+    virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
 
     virtual void print(WebCore::Frame*);
 
 #if ENABLE(DATABASE)
-    virtual void exceededDatabaseQuota(WebCore::Frame*, const WebCore::String&);
+    virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&);
 #endif
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
@@ -130,7 +130,7 @@ public:
     virtual bool paintCustomScrollCorner(WebCore::GraphicsContext*, const WebCore::FloatRect&);
 
     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
-    virtual void chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*);
+    virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
 
     virtual void setCursor(const WebCore::Cursor&);
     virtual void setLastSetCursorToCurrentCursor();
diff --git a/WebKit/win/WebCoreSupport/WebContextMenuClient.h b/WebKit/win/WebCoreSupport/WebContextMenuClient.h
index 153e30e..6bcb072 100644
--- a/WebKit/win/WebCoreSupport/WebContextMenuClient.h
+++ b/WebKit/win/WebCoreSupport/WebContextMenuClient.h
@@ -26,9 +26,6 @@
 #include <WebCore/ContextMenuClient.h>
 #include <wtf/Forward.h>
 
-namespace WebCore {
-    class String;
-}
 class WebView;
 
 class WebContextMenuClient : public WebCore::ContextMenuClient {
@@ -43,7 +40,7 @@ public:
     virtual void downloadURL(const WebCore::KURL&);
     virtual void searchWithGoogle(const WebCore::Frame*);
     virtual void lookUpInDictionary(WebCore::Frame*);
-    virtual void speak(const WebCore::String&);
+    virtual void speak(const WTF::String&);
     virtual void stopSpeaking();
     virtual bool isSpeaking();
 
diff --git a/WebKit/win/WebCoreSupport/WebDragClient.h b/WebKit/win/WebCoreSupport/WebDragClient.h
index f7ca139..da2d208 100644
--- a/WebKit/win/WebCoreSupport/WebDragClient.h
+++ b/WebKit/win/WebCoreSupport/WebDragClient.h
@@ -39,7 +39,7 @@ public:
     virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint&);
     virtual void willPerformDragSourceAction(WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::Clipboard*);
     virtual void startDrag(WebCore::DragImageRef, const WebCore::IntPoint&, const WebCore::IntPoint&, WebCore::Clipboard*, WebCore::Frame*, bool);
-    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WebCore::String&, WebCore::Frame*);
+    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String&, WebCore::Frame*);
 private:
     WebView* m_webView;
 };
diff --git a/WebKit/win/WebCoreSupport/WebEditorClient.h b/WebKit/win/WebCoreSupport/WebEditorClient.h
index ac2e25e..8be6de9 100644
--- a/WebKit/win/WebCoreSupport/WebEditorClient.h
+++ b/WebKit/win/WebCoreSupport/WebEditorClient.h
@@ -53,7 +53,7 @@ public:
 
     virtual bool shouldBeginEditing(WebCore::Range*);
     virtual bool shouldEndEditing(WebCore::Range*);
-    virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction);
+    virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
 
     virtual void didBeginEditing();
     virtual void didEndEditing();
@@ -98,16 +98,16 @@ public:
     void handleKeyboardEvent(WebCore::KeyboardEvent*);
     void handleInputMethodKeydown(WebCore::KeyboardEvent*);
 
-    virtual void ignoreWordInSpellDocument(const WebCore::String&);
-    virtual void learnWord(const WebCore::String&);
+    virtual void ignoreWordInSpellDocument(const WTF::String&);
+    virtual void learnWord(const WTF::String&);
     virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
-    virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
+    virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
     virtual void checkGrammarOfString(const UChar*, int length, Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
-    virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail& detail);
-    virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
+    virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail& detail);
+    virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
     virtual void showSpellingUI(bool show);
     virtual bool spellingUIIsShowing();
-    virtual void getGuessesForWord(const WebCore::String&, Vector<WebCore::String>& guesses);
+    virtual void getGuessesForWord(const WTF::String&, Vector<WTF::String>& guesses);
 
     virtual void willSetInputMethodState();
     virtual void setInputMethodState(bool);
diff --git a/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h b/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h
index 97d9a34..648b5bf 100644
--- a/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h
+++ b/WebKit/win/WebCoreSupport/WebFrameLoaderClient.h
@@ -70,7 +70,7 @@ public:
     virtual void dispatchWillClose();
     virtual void dispatchDidReceiveIcon();
     virtual void dispatchDidStartProvisionalLoad();
-    virtual void dispatchDidReceiveTitle(const WebCore::String&);
+    virtual void dispatchDidReceiveTitle(const WTF::String&);
     virtual void dispatchDidChangeIcons();
     virtual void dispatchDidCommitLoad();
     virtual void dispatchDidFinishDocumentLoad();
@@ -102,7 +102,7 @@ public:
     virtual void didRunInsecureContent(WebCore::SecurityOrigin*);
 
     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
-    virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
+    virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
 
     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
@@ -110,13 +110,13 @@ public:
 
     virtual bool canCachePage() const;
 
-    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
-                               const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
+    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
+                               const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
     virtual void didTransferChildFrameToNewDocument();
-    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WebCore::String>&, const Vector<WebCore::String>&, const WebCore::String&, bool loadManually);
+    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually);
     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
 
-    virtual bool shouldUsePluginDocument(const WebCore::String& mimeType) const;
+    virtual bool shouldUsePluginDocument(const WTF::String& mimeType) const;
 
     virtual void dispatchDidFailToStartPlugin(const WebCore::PluginView*) const;
 
@@ -125,8 +125,8 @@ protected:
     ~WebFrameLoaderClient();
 
 private:
-    PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WebCore::String& name, WebCore::HTMLFrameOwnerElement*, const WebCore::String& referrer);
-    void receivedData(const char*, int, const WebCore::String&);
+    PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL&, const WTF::String& name, WebCore::HTMLFrameOwnerElement*, const WTF::String& referrer);
+    void receivedData(const char*, int, const WTF::String&);
     WebHistory* webHistory() const;
 
     WebFrame* m_webFrame;
diff --git a/WebKit/win/WebCoreSupport/WebInspectorClient.h b/WebKit/win/WebCoreSupport/WebInspectorClient.h
index 17a8d99..4da3984 100644
--- a/WebKit/win/WebCoreSupport/WebInspectorClient.h
+++ b/WebKit/win/WebCoreSupport/WebInspectorClient.h
@@ -58,10 +58,10 @@ public:
     virtual void highlight(WebCore::Node*);
     virtual void hideHighlight();
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+    virtual void populateSetting(const WTF::String& key, WTF::String* value);
+    virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-    virtual bool sendMessageToFrontend(const WebCore::String&);
+    virtual bool sendMessageToFrontend(const WTF::String&);
 
     void updateHighlight();
     void frontendClosing()
@@ -88,8 +88,8 @@ public:
 
     virtual void frontendLoaded();
     
-    virtual WebCore::String localizedStringsURL();
-    virtual WebCore::String hiddenPanels();
+    virtual WTF::String localizedStringsURL();
+    virtual WTF::String hiddenPanels();
     
     virtual void bringToFront();
     virtual void closeWindow();
@@ -98,7 +98,7 @@ public:
     virtual void detachWindow();
     
     virtual void setAttachedWindowHeight(unsigned height);
-    virtual void inspectedURLChanged(const WebCore::String& newURL);
+    virtual void inspectedURLChanged(const WTF::String& newURL);
 
 private:
     ~WebInspectorFrontendClient();
@@ -128,7 +128,7 @@ private:
 
     bool m_attached;
 
-    WebCore::String m_inspectedURL;
+    WTF::String m_inspectedURL;
     bool m_destroyingInspectorView;
 
     static friend LRESULT CALLBACK WebInspectorWndProc(HWND, UINT, WPARAM, LPARAM);
diff --git a/WebKit/win/WebCoreSupport/WebPlatformStrategies.h b/WebKit/win/WebCoreSupport/WebPlatformStrategies.h
index df19c91..c3cfbb4 100644
--- a/WebKit/win/WebCoreSupport/WebPlatformStrategies.h
+++ b/WebKit/win/WebCoreSupport/WebPlatformStrategies.h
@@ -48,88 +48,88 @@ private:
     virtual void getPluginInfo(Vector<WebCore::PluginInfo>&);
 
     // WebCore::LocalizationStrategy    
-    virtual WebCore::String inputElementAltText();
-    virtual WebCore::String resetButtonDefaultLabel();
-    virtual WebCore::String searchableIndexIntroduction();
-    virtual WebCore::String submitButtonDefaultLabel();
-    virtual WebCore::String fileButtonChooseFileLabel();
-    virtual WebCore::String fileButtonNoFileSelectedLabel();
+    virtual WTF::String inputElementAltText();
+    virtual WTF::String resetButtonDefaultLabel();
+    virtual WTF::String searchableIndexIntroduction();
+    virtual WTF::String submitButtonDefaultLabel();
+    virtual WTF::String fileButtonChooseFileLabel();
+    virtual WTF::String fileButtonNoFileSelectedLabel();
 #if ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String contextMenuItemTagOpenLinkInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadLinkToDisk();
-    virtual WebCore::String contextMenuItemTagCopyLinkToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenImageInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadImageToDisk();
-    virtual WebCore::String contextMenuItemTagCopyImageToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenFrameInNewWindow();
-    virtual WebCore::String contextMenuItemTagCopy();
-    virtual WebCore::String contextMenuItemTagGoBack();
-    virtual WebCore::String contextMenuItemTagGoForward();
-    virtual WebCore::String contextMenuItemTagStop();
-    virtual WebCore::String contextMenuItemTagReload();
-    virtual WebCore::String contextMenuItemTagCut();
-    virtual WebCore::String contextMenuItemTagPaste();
-    virtual WebCore::String contextMenuItemTagNoGuessesFound();
-    virtual WebCore::String contextMenuItemTagIgnoreSpelling();
-    virtual WebCore::String contextMenuItemTagLearnSpelling();
-    virtual WebCore::String contextMenuItemTagSearchWeb();
-    virtual WebCore::String contextMenuItemTagLookUpInDictionary();
-    virtual WebCore::String contextMenuItemTagOpenLink();
-    virtual WebCore::String contextMenuItemTagIgnoreGrammar();
-    virtual WebCore::String contextMenuItemTagSpellingMenu();
-    virtual WebCore::String contextMenuItemTagShowSpellingPanel(bool show);
-    virtual WebCore::String contextMenuItemTagCheckSpelling();
-    virtual WebCore::String contextMenuItemTagCheckSpellingWhileTyping();
-    virtual WebCore::String contextMenuItemTagCheckGrammarWithSpelling();
-    virtual WebCore::String contextMenuItemTagFontMenu();
-    virtual WebCore::String contextMenuItemTagBold();
-    virtual WebCore::String contextMenuItemTagItalic();
-    virtual WebCore::String contextMenuItemTagUnderline();
-    virtual WebCore::String contextMenuItemTagOutline();
-    virtual WebCore::String contextMenuItemTagWritingDirectionMenu();
-    virtual WebCore::String contextMenuItemTagTextDirectionMenu();
-    virtual WebCore::String contextMenuItemTagDefaultDirection();
-    virtual WebCore::String contextMenuItemTagLeftToRight();
-    virtual WebCore::String contextMenuItemTagRightToLeft();
-    virtual WebCore::String contextMenuItemTagInspectElement();
+    virtual WTF::String contextMenuItemTagOpenLinkInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadLinkToDisk();
+    virtual WTF::String contextMenuItemTagCopyLinkToClipboard();
+    virtual WTF::String contextMenuItemTagOpenImageInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadImageToDisk();
+    virtual WTF::String contextMenuItemTagCopyImageToClipboard();
+    virtual WTF::String contextMenuItemTagOpenFrameInNewWindow();
+    virtual WTF::String contextMenuItemTagCopy();
+    virtual WTF::String contextMenuItemTagGoBack();
+    virtual WTF::String contextMenuItemTagGoForward();
+    virtual WTF::String contextMenuItemTagStop();
+    virtual WTF::String contextMenuItemTagReload();
+    virtual WTF::String contextMenuItemTagCut();
+    virtual WTF::String contextMenuItemTagPaste();
+    virtual WTF::String contextMenuItemTagNoGuessesFound();
+    virtual WTF::String contextMenuItemTagIgnoreSpelling();
+    virtual WTF::String contextMenuItemTagLearnSpelling();
+    virtual WTF::String contextMenuItemTagSearchWeb();
+    virtual WTF::String contextMenuItemTagLookUpInDictionary();
+    virtual WTF::String contextMenuItemTagOpenLink();
+    virtual WTF::String contextMenuItemTagIgnoreGrammar();
+    virtual WTF::String contextMenuItemTagSpellingMenu();
+    virtual WTF::String contextMenuItemTagShowSpellingPanel(bool show);
+    virtual WTF::String contextMenuItemTagCheckSpelling();
+    virtual WTF::String contextMenuItemTagCheckSpellingWhileTyping();
+    virtual WTF::String contextMenuItemTagCheckGrammarWithSpelling();
+    virtual WTF::String contextMenuItemTagFontMenu();
+    virtual WTF::String contextMenuItemTagBold();
+    virtual WTF::String contextMenuItemTagItalic();
+    virtual WTF::String contextMenuItemTagUnderline();
+    virtual WTF::String contextMenuItemTagOutline();
+    virtual WTF::String contextMenuItemTagWritingDirectionMenu();
+    virtual WTF::String contextMenuItemTagTextDirectionMenu();
+    virtual WTF::String contextMenuItemTagDefaultDirection();
+    virtual WTF::String contextMenuItemTagLeftToRight();
+    virtual WTF::String contextMenuItemTagRightToLeft();
+    virtual WTF::String contextMenuItemTagInspectElement();
 #endif // ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String searchMenuNoRecentSearchesText();
-    virtual WebCore::String searchMenuRecentSearchesText();
-    virtual WebCore::String searchMenuClearRecentSearchesText();
-    virtual WebCore::String AXWebAreaText();
-    virtual WebCore::String AXLinkText();
-    virtual WebCore::String AXListMarkerText();
-    virtual WebCore::String AXImageMapText();
-    virtual WebCore::String AXHeadingText();
-    virtual WebCore::String AXDefinitionListTermText();
-    virtual WebCore::String AXDefinitionListDefinitionText();
-    virtual WebCore::String AXButtonActionVerb();
-    virtual WebCore::String AXRadioButtonActionVerb();
-    virtual WebCore::String AXTextFieldActionVerb();
-    virtual WebCore::String AXCheckedCheckBoxActionVerb();
-    virtual WebCore::String AXUncheckedCheckBoxActionVerb();
-    virtual WebCore::String AXMenuListActionVerb();
-    virtual WebCore::String AXMenuListPopupActionVerb();
-    virtual WebCore::String AXLinkActionVerb();
-    virtual WebCore::String missingPluginText();
-    virtual WebCore::String crashedPluginText();
-    virtual WebCore::String multipleFileUploadText(unsigned numberOfFiles);
-    virtual WebCore::String unknownFileSizeText();
-    virtual WebCore::String uploadFileText();
-    virtual WebCore::String allFilesText();
-    virtual WebCore::String imageTitle(const WebCore::String& filename, const WebCore::IntSize&);
-    virtual WebCore::String mediaElementLoadingStateText();
-    virtual WebCore::String mediaElementLiveBroadcastStateText();
-    virtual WebCore::String localizedMediaControlElementString(const WebCore::String&);
-    virtual WebCore::String localizedMediaControlElementHelpText(const WebCore::String&);
-    virtual WebCore::String localizedMediaTimeDescription(float);
-    virtual WebCore::String validationMessageValueMissingText();
-    virtual WebCore::String validationMessageTypeMismatchText();
-    virtual WebCore::String validationMessagePatternMismatchText();
-    virtual WebCore::String validationMessageTooLongText();
-    virtual WebCore::String validationMessageRangeUnderflowText();
-    virtual WebCore::String validationMessageRangeOverflowText();
-    virtual WebCore::String validationMessageStepMismatchText();
+    virtual WTF::String searchMenuNoRecentSearchesText();
+    virtual WTF::String searchMenuRecentSearchesText();
+    virtual WTF::String searchMenuClearRecentSearchesText();
+    virtual WTF::String AXWebAreaText();
+    virtual WTF::String AXLinkText();
+    virtual WTF::String AXListMarkerText();
+    virtual WTF::String AXImageMapText();
+    virtual WTF::String AXHeadingText();
+    virtual WTF::String AXDefinitionListTermText();
+    virtual WTF::String AXDefinitionListDefinitionText();
+    virtual WTF::String AXButtonActionVerb();
+    virtual WTF::String AXRadioButtonActionVerb();
+    virtual WTF::String AXTextFieldActionVerb();
+    virtual WTF::String AXCheckedCheckBoxActionVerb();
+    virtual WTF::String AXUncheckedCheckBoxActionVerb();
+    virtual WTF::String AXMenuListActionVerb();
+    virtual WTF::String AXMenuListPopupActionVerb();
+    virtual WTF::String AXLinkActionVerb();
+    virtual WTF::String missingPluginText();
+    virtual WTF::String crashedPluginText();
+    virtual WTF::String multipleFileUploadText(unsigned numberOfFiles);
+    virtual WTF::String unknownFileSizeText();
+    virtual WTF::String uploadFileText();
+    virtual WTF::String allFilesText();
+    virtual WTF::String imageTitle(const WTF::String& filename, const WebCore::IntSize&);
+    virtual WTF::String mediaElementLoadingStateText();
+    virtual WTF::String mediaElementLiveBroadcastStateText();
+    virtual WTF::String localizedMediaControlElementString(const WTF::String&);
+    virtual WTF::String localizedMediaControlElementHelpText(const WTF::String&);
+    virtual WTF::String localizedMediaTimeDescription(float);
+    virtual WTF::String validationMessageValueMissingText();
+    virtual WTF::String validationMessageTypeMismatchText();
+    virtual WTF::String validationMessagePatternMismatchText();
+    virtual WTF::String validationMessageTooLongText();
+    virtual WTF::String validationMessageRangeUnderflowText();
+    virtual WTF::String validationMessageRangeOverflowText();
+    virtual WTF::String validationMessageStepMismatchText();
 
     // WebCore::VisitedLinkStrategy
     virtual bool isLinkVisited(WebCore::Page*, WebCore::LinkHash);
diff --git a/WebKit/win/WebCoreSupport/WebPluginHalterClient.h b/WebKit/win/WebCoreSupport/WebPluginHalterClient.h
index da3d28a..9a4ca01 100644
--- a/WebKit/win/WebCoreSupport/WebPluginHalterClient.h
+++ b/WebKit/win/WebCoreSupport/WebPluginHalterClient.h
@@ -27,10 +27,10 @@
 #define WebPluginHalterClient_h
 
 #include <WebCore/PluginHalterClient.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
     class Node;
-    class String;
 }
 
 class WebView;
@@ -39,7 +39,7 @@ class WebPluginHalterClient : public WebCore::PluginHalterClient {
 public:
     WebPluginHalterClient(WebView* webView);
 
-    virtual bool shouldHaltPlugin(WebCore::Node* n, bool isWindowed, const WebCore::String& pluginName) const;
+    virtual bool shouldHaltPlugin(WebCore::Node* n, bool isWindowed, const WTF::String& pluginName) const;
     virtual bool enabled() const;
 
 private:
diff --git a/WebKit/win/WebDatabaseManager.cpp b/WebKit/win/WebDatabaseManager.cpp
index 238aa61..4c23d6c 100644
--- a/WebKit/win/WebDatabaseManager.cpp
+++ b/WebKit/win/WebDatabaseManager.cpp
@@ -376,7 +376,7 @@ void WebKitInitializeWebDatabasesIfNecessary()
     if (initialized)
         return;
 
-    WebCore::String databasesDirectory = WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "Databases");
+    WTF::String databasesDirectory = WebCore::pathByAppendingComponent(WebCore::localUserSpecificStorageDirectory(), "Databases");
     WebCore::DatabaseTracker::initializeTracker(databasesDirectory);
 
     initialized = true;
diff --git a/WebKit/win/WebDatabaseManager.h b/WebKit/win/WebDatabaseManager.h
index 405c916..a8ca523 100644
--- a/WebKit/win/WebDatabaseManager.h
+++ b/WebKit/win/WebDatabaseManager.h
@@ -79,7 +79,7 @@ public:
 
     // DatabaseTrackerClient
     virtual void dispatchDidModifyOrigin(WebCore::SecurityOrigin*);
-    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WebCore::String& databaseName);
+    virtual void dispatchDidModifyDatabase(WebCore::SecurityOrigin*, const WTF::String& databaseName);
 
 private:
     WebDatabaseManager();
diff --git a/WebKit/win/WebDownload.h b/WebKit/win/WebDownload.h
index 71aebfe..bbb645e 100644
--- a/WebKit/win/WebDownload.h
+++ b/WebKit/win/WebDownload.h
@@ -122,15 +122,15 @@ public:
 #endif
 
 protected:
-    static CFDataRef extractResumeDataFromBundle(const WebCore::String&);
-    static HRESULT appendResumeDataToBundle(CFDataRef, const WebCore::String&);
-    static const WebCore::String& bundleExtension();
+    static CFDataRef extractResumeDataFromBundle(const WTF::String&);
+    static HRESULT appendResumeDataToBundle(CFDataRef, const WTF::String&);
+    static const WTF::String& bundleExtension();
     static UInt32 bundleMagicNumber();
 
     ULONG m_refCount;
 
-    WebCore::String m_destination;
-    WebCore::String m_bundlePath;
+    WTF::String m_destination;
+    WTF::String m_bundlePath;
 #if USE(CFNETWORK)
     RetainPtr<CFURLDownloadRef> m_download;
 #endif
diff --git a/WebKit/win/WebFrame.h b/WebKit/win/WebFrame.h
index c14ddc9..6f8b56a 100644
--- a/WebKit/win/WebFrame.h
+++ b/WebKit/win/WebFrame.h
@@ -299,9 +299,9 @@ public:
     virtual void didChangeTitle(WebCore::DocumentLoader*);
     virtual void didChangeIcons(WebCore::DocumentLoader*);
     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
-    virtual bool canShowMIMEType(const WebCore::String& MIMEType) const;
-    virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const;
-    virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const;
+    virtual bool canShowMIMEType(const WTF::String& MIMEType) const;
+    virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const;
+    virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const;
     virtual void frameLoadCompleted();
     virtual void restoreViewState();
     virtual void provisionalLoadStarted();
@@ -309,7 +309,7 @@ public:
     virtual void addHistoryItemForFragmentScroll();
     virtual void didFinishLoad();
     virtual void prepareForDataSourceReplacement();
-    virtual WebCore::String userAgent(const WebCore::KURL&);
+    virtual WTF::String userAgent(const WebCore::KURL&);
     virtual void saveViewStateToItem(WebCore::HistoryItem *);
     virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
     virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
@@ -319,8 +319,8 @@ public:
     virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
     virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
     virtual bool shouldFallBack(const WebCore::ResourceError&);
-    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WebCore::String& MIMEType, const WebCore::ResourceRequest&);
-    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WebCore::String& frameName);
+    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WTF::String& MIMEType, const WebCore::ResourceRequest&);
+    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
     virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
@@ -330,10 +330,10 @@ public:
     virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
     virtual void startDownload(const WebCore::ResourceRequest&);
         
-    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WebCore::String>& paramNames, const Vector<WebCore::String>& paramValues);
+    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues);
 
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WebCore::String& mimeType);
-    virtual WebCore::String overrideMediaType() const;
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WTF::String overrideMediaType() const;
 
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
     virtual void documentElementAvailable();
diff --git a/WebKit/win/WebHistory.h b/WebKit/win/WebHistory.h
index 9d8acb3..17cd3a7 100644
--- a/WebKit/win/WebHistory.h
+++ b/WebKit/win/WebHistory.h
@@ -30,13 +30,13 @@
 
 #include "COMPtr.h"
 #include <CoreFoundation/CoreFoundation.h>
+#include <wtf/Forward.h>
 #include <wtf/OwnArrayPtr.h>
 #include <wtf/RetainPtr.h>
 
 namespace WebCore {
     class KURL;
     class PageGroup;
-    class String;
 }
 
 //-----------------------------------------------------------------------------
@@ -121,10 +121,10 @@ public:
 
     // WebHistory
     static WebHistory* sharedHistory();
-    void visitedURL(const WebCore::KURL&, const WebCore::String& title, const WebCore::String& httpMethod, bool wasFailure, bool increaseVisitCount);
+    void visitedURL(const WebCore::KURL&, const WTF::String& title, const WTF::String& httpMethod, bool wasFailure, bool increaseVisitCount);
     void addVisitedLinksToPageGroup(WebCore::PageGroup&);
 
-    COMPtr<IWebHistoryItem> itemForURLString(const WebCore::String&) const;
+    COMPtr<IWebHistoryItem> itemForURLString(const WTF::String&) const;
 
     typedef int64_t DateKey;
     typedef HashMap<DateKey, RetainPtr<CFMutableArrayRef> > DateToEntriesMap;
diff --git a/WebKit/win/WebHistoryItem.h b/WebKit/win/WebHistoryItem.h
index 40ec16d..7e42039 100644
--- a/WebKit/win/WebHistoryItem.h
+++ b/WebKit/win/WebHistoryItem.h
@@ -113,7 +113,7 @@ protected:
     ULONG m_refCount;
 
     RefPtr<WebCore::HistoryItem> m_historyItem;
-    WebCore::String m_alternateTitle;
+    WTF::String m_alternateTitle;
 };
 
 #endif
diff --git a/WebKit/win/WebIconDatabase.h b/WebKit/win/WebIconDatabase.h
index ac42d4a..c6351a7 100644
--- a/WebKit/win/WebIconDatabase.h
+++ b/WebKit/win/WebIconDatabase.h
@@ -104,7 +104,7 @@ public:
 
     // IconDatabaseClient
     virtual void dispatchDidRemoveAllIcons();
-    virtual void dispatchDidAddIconForPageURL(const WebCore::String&);
+    virtual void dispatchDidAddIconForPageURL(const WTF::String&);
 
     static BSTR iconDatabaseDidAddIconNotification();
     static BSTR iconDatabaseDidRemoveAllIconsNotification();
diff --git a/WebKit/win/WebKitDLL.h b/WebKit/win/WebKitDLL.h
index d944b07..c31bc2d 100644
--- a/WebKit/win/WebKitDLL.h
+++ b/WebKit/win/WebKitDLL.h
@@ -48,7 +48,7 @@ extern "C" {
 
 extern ULONG gLockCount;
 extern ULONG gClassCount;
-extern HashCountedSet<WebCore::String> gClassNameCount;
+extern HashCountedSet<WTF::String> gClassNameCount;
 extern HINSTANCE gInstance;
 extern CLSID gRegCLSIDs[];
 
diff --git a/WebKit/win/WebKitSystemBits.cpp b/WebKit/win/WebKitSystemBits.cpp
index e8ee0e9..eec6361 100644
--- a/WebKit/win/WebKitSystemBits.cpp
+++ b/WebKit/win/WebKitSystemBits.cpp
@@ -46,7 +46,7 @@ unsigned long long WebMemorySize()
 
 unsigned long long WebVolumeFreeSize(CFStringRef cfstringPath)
 {
-    WebCore::String path(cfstringPath);
+    WTF::String path(cfstringPath);
     ULARGE_INTEGER freeBytesToCaller;
     BOOL result = GetDiskFreeSpaceExW((LPCWSTR)path.charactersWithNullTermination(), &freeBytesToCaller, 0, 0);
     if (!result)
diff --git a/WebKit/win/WebNavigationData.h b/WebKit/win/WebNavigationData.h
index d00912c..f4793dc 100644
--- a/WebKit/win/WebNavigationData.h
+++ b/WebKit/win/WebNavigationData.h
@@ -33,9 +33,9 @@
 
 class WebNavigationData : public IWebNavigationData {
 public:
-    static WebNavigationData* createInstance(const WebCore::String& url, const WebCore::String& title, IWebURLRequest*, IWebURLResponse*, bool hasSubstituteData, const WebCore::String& clientRedirectSource);
+    static WebNavigationData* createInstance(const WTF::String& url, const WTF::String& title, IWebURLRequest*, IWebURLResponse*, bool hasSubstituteData, const WTF::String& clientRedirectSource);
 private:
-    WebNavigationData(const WebCore::String& url, const WebCore::String& title, IWebURLRequest*, IWebURLResponse*, bool hasSubstituteData, const WebCore::String& clientRedirectSource);
+    WebNavigationData(const WTF::String& url, const WTF::String& title, IWebURLRequest*, IWebURLResponse*, bool hasSubstituteData, const WTF::String& clientRedirectSource);
     ~WebNavigationData();
 
 public:
diff --git a/WebKit/win/WebPreferences.cpp b/WebKit/win/WebPreferences.cpp
index a1055cb..25cfbda 100644
--- a/WebKit/win/WebPreferences.cpp
+++ b/WebKit/win/WebPreferences.cpp
@@ -102,7 +102,7 @@ static bool booleanValueForPreferencesValue(CFPropertyListRef value)
 
 static CFDictionaryRef defaultSettings;
 
-static HashMap<WebCore::String, COMPtr<WebPreferences> > webPreferencesInstances;
+static HashMap<WTF::String, COMPtr<WebPreferences> > webPreferencesInstances;
 
 WebPreferences* WebPreferences::sharedStandardPreferences()
 {
@@ -154,7 +154,7 @@ WebPreferences* WebPreferences::getInstanceForIdentifier(BSTR identifier)
     if (!identifier)
         return sharedStandardPreferences();
 
-    WebCore::String identifierString(identifier, SysStringLen(identifier));
+    WTF::String identifierString(identifier, SysStringLen(identifier));
     return webPreferencesInstances.get(identifierString).get();
 }
 
@@ -162,7 +162,7 @@ void WebPreferences::setInstance(WebPreferences* instance, BSTR identifier)
 {
     if (!identifier || !instance)
         return;
-    WebCore::String identifierString(identifier, SysStringLen(identifier));
+    WTF::String identifierString(identifier, SysStringLen(identifier));
     webPreferencesInstances.add(identifierString, instance);
 }
 
@@ -171,7 +171,7 @@ void WebPreferences::removeReferenceForIdentifier(BSTR identifier)
     if (!identifier || webPreferencesInstances.isEmpty())
         return;
 
-    WebCore::String identifierString(identifier, SysStringLen(identifier));
+    WTF::String identifierString(identifier, SysStringLen(identifier));
     WebPreferences* webPreference = webPreferencesInstances.get(identifierString).get();
     if (webPreference && webPreference->m_refCount == 1)
         webPreferencesInstances.remove(identifierString);
@@ -194,7 +194,7 @@ void WebPreferences::initializeDefaultSettings()
     CFDictionaryAddValue(defaults, CFSTR(WebKitMinimumLogicalFontSizePreferenceKey), CFSTR("9"));
     CFDictionaryAddValue(defaults, CFSTR(WebKitDefaultFontSizePreferenceKey), CFSTR("16"));
     CFDictionaryAddValue(defaults, CFSTR(WebKitDefaultFixedFontSizePreferenceKey), CFSTR("13"));
-    WebCore::String defaultDefaultEncoding(LPCTSTR_UI_STRING("ISO-8859-1", "The default, default character encoding"));
+    WTF::String defaultDefaultEncoding(LPCTSTR_UI_STRING("ISO-8859-1", "The default, default character encoding"));
     CFDictionaryAddValue(defaults, CFSTR(WebKitDefaultTextEncodingNamePreferenceKey), defaultDefaultEncoding.createCFString());
 
     CFDictionaryAddValue(defaults, CFSTR(WebKitUserStyleSheetEnabledPreferenceKey), kCFBooleanFalse);
diff --git a/WebKit/win/WebResource.cpp b/WebKit/win/WebResource.cpp
index d02bcc5..506e55d 100644
--- a/WebKit/win/WebResource.cpp
+++ b/WebKit/win/WebResource.cpp
@@ -38,7 +38,7 @@ using namespace WebCore;
 
 // WebResource ---------------------------------------------------------------------
 
-WebResource::WebResource(IStream* data, const WebCore::KURL& url, const WebCore::String& mimeType, const WebCore::String& textEncodingName, const WebCore::String& frameName)
+WebResource::WebResource(IStream* data, const WebCore::KURL& url, const WTF::String& mimeType, const WTF::String& textEncodingName, const WTF::String& frameName)
     : m_refCount(0)
     , m_data(data)
     , m_url(url)
diff --git a/WebKit/win/WebResource.h b/WebKit/win/WebResource.h
index d67cb56..7c6759a 100644
--- a/WebKit/win/WebResource.h
+++ b/WebKit/win/WebResource.h
@@ -41,7 +41,7 @@ class WebResource : public IWebResource {
 public:
     static WebResource* createInstance(PassRefPtr<WebCore::SharedBuffer> data, const WebCore::ResourceResponse& response);
 protected:
-    WebResource(IStream* data, const WebCore::KURL& url, const WebCore::String& mimeType, const WebCore::String& textEncodingName, const WebCore::String& frameName);
+    WebResource(IStream* data, const WebCore::KURL& url, const WTF::String& mimeType, const WTF::String& textEncodingName, const WTF::String& frameName);
     ~WebResource();
 
 public:
@@ -77,9 +77,9 @@ private:
     ULONG m_refCount;
     COMPtr<IStream> m_data;
     WebCore::KURL m_url;
-    WebCore::String m_mimeType;
-    WebCore::String m_textEncodingName;
-    WebCore::String m_frameName;
+    WTF::String m_mimeType;
+    WTF::String m_textEncodingName;
+    WTF::String m_frameName;
 };
 
 #endif
diff --git a/WebKit/win/WebView.cpp b/WebKit/win/WebView.cpp
index 33f1ff1..c307c02 100644
--- a/WebKit/win/WebView.cpp
+++ b/WebKit/win/WebView.cpp
@@ -3089,7 +3089,7 @@ HRESULT STDMETHODCALLTYPE WebView::stringByEvaluatingJavaScriptFromString(
     if (!coreFrame)
         return E_FAIL;
 
-    JSC::JSValue scriptExecutionResult = coreFrame->script()->executeScript(WebCore::String(script), true).jsValue();
+    JSC::JSValue scriptExecutionResult = coreFrame->script()->executeScript(WTF::String(script), true).jsValue();
     if (!scriptExecutionResult)
         return E_FAIL;
     else if (scriptExecutionResult.isString()) {
@@ -5858,7 +5858,7 @@ HRESULT STDMETHODCALLTYPE WebView::registerEmbeddedViewMIMEType(BSTR mimeType)
     return S_OK;
 }
 
-bool WebView::shouldUseEmbeddedView(const WebCore::String& mimeType) const
+bool WebView::shouldUseEmbeddedView(const WTF::String& mimeType) const
 {
     if (!m_embeddedViewMIMETypes)
         return false;
diff --git a/WebKit/win/WebView.h b/WebKit/win/WebView.h
index c7e7605..eec24fd 100644
--- a/WebKit/win/WebView.h
+++ b/WebKit/win/WebView.h
@@ -806,7 +806,7 @@ public:
     virtual HRESULT STDMETHODCALLTYPE nextDisplayIsSynchronous();
 
     // WebView
-    bool shouldUseEmbeddedView(const WebCore::String& mimeType) const;
+    bool shouldUseEmbeddedView(const WTF::String& mimeType) const;
 
     WebCore::Page* page();
     bool handleMouseEvent(UINT, WPARAM, LPARAM);
@@ -859,11 +859,11 @@ public:
 
     // Convenient to be able to violate the rules of COM here for easy movement to the frame.
     WebFrame* topLevelFrame() const { return m_mainFrame; }
-    const WebCore::String& userAgentForKURL(const WebCore::KURL& url);
+    const WTF::String& userAgentForKURL(const WebCore::KURL& url);
 
     static bool canHandleRequest(const WebCore::ResourceRequest&);
 
-    static WebCore::String standardUserAgentWithApplicationName(const WebCore::String&);
+    static WTF::String standardUserAgentWithApplicationName(const WTF::String&);
 
     void setIsBeingDestroyed() { m_isBeingDestroyed = true; }
     bool isBeingDestroyed() const { return m_isBeingDestroyed; }
@@ -873,7 +873,7 @@ public:
 
     bool isPainting() const { return m_paintCount > 0; }
 
-    void setToolTip(const WebCore::String&);
+    void setToolTip(const WTF::String&);
 
     void registerForIconNotification(bool listen);
     void dispatchDidReceiveIconFromWebFrame(WebFrame*);
@@ -992,11 +992,11 @@ protected:
 
     bool m_userAgentOverridden;
     bool m_useBackForwardList;
-    WebCore::String m_userAgentCustom;
-    WebCore::String m_userAgentStandard;
+    WTF::String m_userAgentCustom;
+    WTF::String m_userAgentStandard;
     float m_zoomMultiplier;
-    WebCore::String m_overrideEncoding;
-    WebCore::String m_applicationName;
+    WTF::String m_overrideEncoding;
+    WTF::String m_applicationName;
     bool m_mouseActivated;
     // WebCore dragging logic needs to be able to inspect the drag data
     // this is updated in DragEnter/Leave/Drop
@@ -1012,7 +1012,7 @@ protected:
     bool m_hasCustomDropTarget;
     unsigned m_inIMEComposition;
     HWND m_toolTipHwnd;
-    WebCore::String m_toolTip;
+    WTF::String m_toolTip;
     bool m_deleteBackingStoreTimerActive;
 
     bool m_transparent;
@@ -1024,7 +1024,7 @@ protected:
 
     HWND m_topLevelParent;
 
-    OwnPtr<HashSet<WebCore::String> > m_embeddedViewMIMETypes;
+    OwnPtr<HashSet<WTF::String> > m_embeddedViewMIMETypes;
 
     //Variables needed to store gesture information
     RefPtr<WebCore::Node> m_gestureTargetNode;
diff --git a/WebKit/wx/ChangeLog b/WebKit/wx/ChangeLog
index 0dfe91f..b66bf69 100644
--- a/WebKit/wx/ChangeLog
+++ b/WebKit/wx/ChangeLog
@@ -1,3 +1,14 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * WebKitSupport/FrameLoaderClientWx.h:
+        * WebKitSupport/InspectorClientWx.h:
+
 2010-08-06  Jessie Berlin  <jberlin at apple.com>
 
         Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
diff --git a/WebKit/wx/WebEdit.cpp b/WebKit/wx/WebEdit.cpp
index ed2d0d4..22ad193 100644
--- a/WebKit/wx/WebEdit.cpp
+++ b/WebKit/wx/WebEdit.cpp
@@ -55,7 +55,7 @@ wxWebEditCommand::~wxWebEditCommand()
 void wxWebEditCommand::SetNodeAttribute(WebDOMElement* element, const wxString& name, const wxString& value)
 {
     if (m_impl)
-        m_impl->setElementAttribute(element->impl(), WebCore::QualifiedName(WebCore::nullAtom, WebCore::String(name), WebCore::nullAtom), WebCore::String(value));
+        m_impl->setElementAttribute(element->impl(), WebCore::QualifiedName(WebCore::nullAtom, WTF::String(name), WebCore::nullAtom), WTF::String(value));
 }
 
 void wxWebEditCommand::Apply()
diff --git a/WebKit/wx/WebFrame.cpp b/WebKit/wx/WebFrame.cpp
index a66605c..182004b 100644
--- a/WebKit/wx/WebFrame.cpp
+++ b/WebKit/wx/WebFrame.cpp
@@ -164,7 +164,7 @@ void wxWebFrame::SetPageSource(const wxString& source, const wxString& baseUrl)
         const char* contents = charBuffer;
 
         WTF::PassRefPtr<WebCore::SharedBuffer> sharedBuffer = WebCore::SharedBuffer::create(contents, strlen(contents));
-        WebCore::SubstituteData substituteData(sharedBuffer, WebCore::String("text/html"), WebCore::String("UTF-8"), WebCore::blankURL(), url);
+        WebCore::SubstituteData substituteData(sharedBuffer, WTF::String("text/html"), WTF::String("UTF-8"), WebCore::blankURL(), url);
 
         m_impl->frame->loader()->stop();
         m_impl->frame->loader()->load(WebCore::ResourceRequest(url), substituteData, false);
diff --git a/WebKit/wx/WebFramePrivate.h b/WebKit/wx/WebFramePrivate.h
index 58bc40a..bee461d 100644
--- a/WebKit/wx/WebFramePrivate.h
+++ b/WebKit/wx/WebFramePrivate.h
@@ -48,10 +48,10 @@ class WebViewFrameData
 {
 public:
     WebCore::KURL url;
-    WebCore::String name;
+    WTF::String name;
     WebCore::HTMLFrameOwnerElement* ownerElement;
     
-    WebCore::String referrer;
+    WTF::String referrer;
     bool allowsScrolling;
     int marginWidth;
     int marginHeight;    
diff --git a/WebKit/wx/WebKitSupport/DragClientWx.h b/WebKit/wx/WebKitSupport/DragClientWx.h
index 0e93e66..afb54fb 100644
--- a/WebKit/wx/WebKitSupport/DragClientWx.h
+++ b/WebKit/wx/WebKitSupport/DragClientWx.h
@@ -39,7 +39,7 @@ public:
     virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint&);
         
     virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false);
-    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WebCore::String& label, WebCore::Frame*);
+    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
 };
 
 }
diff --git a/WebKit/wx/WebKitSupport/EditorClientWx.cpp b/WebKit/wx/WebKitSupport/EditorClientWx.cpp
index 64bfd06..99afec8 100644
--- a/WebKit/wx/WebKitSupport/EditorClientWx.cpp
+++ b/WebKit/wx/WebKitSupport/EditorClientWx.cpp
@@ -532,7 +532,7 @@ void EditorClientWx::getGuessesForWord(const String&, Vector<String>& guesses)
     notImplemented(); 
 }
 
-String EditorClientWx::getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&)
+String EditorClientWx::getAutoCorrectSuggestionForMisspelledWord(const WTF::String&)
 {
     notImplemented();
     return String();
diff --git a/WebKit/wx/WebKitSupport/EditorClientWx.h b/WebKit/wx/WebKitSupport/EditorClientWx.h
index 8d69e36..be5c98a 100644
--- a/WebKit/wx/WebKitSupport/EditorClientWx.h
+++ b/WebKit/wx/WebKitSupport/EditorClientWx.h
@@ -108,7 +108,7 @@ public:
     virtual void showSpellingUI(bool show);
     virtual bool spellingUIIsShowing();
     virtual void getGuessesForWord(const String&, Vector<String>& guesses);
-    virtual String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
+    virtual String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
     
     virtual void willSetInputMethodState();
     virtual void setInputMethodState(bool enabled);
diff --git a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h
index 95ef2e6..0dee4bf 100644
--- a/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h
+++ b/WebKit/wx/WebKitSupport/FrameLoaderClientWx.h
@@ -34,6 +34,7 @@
 #include "PluginView.h"
 #include "ResourceResponse.h"
 #include "HTMLPlugInElement.h"
+#include <wtf/Forward.h>
 
 class wxWebFrame;
 class wxWebView;
@@ -45,7 +46,6 @@ namespace WebCore {
     class Element;
     class FormState;
     class NavigationAction;
-    class String;
     class ResourceLoader;
 
     struct LoadErrorResetToken;
diff --git a/WebKit/wx/WebKitSupport/InspectorClientWx.h b/WebKit/wx/WebKitSupport/InspectorClientWx.h
index 698a0f5..799e954 100644
--- a/WebKit/wx/WebKitSupport/InspectorClientWx.h
+++ b/WebKit/wx/WebKitSupport/InspectorClientWx.h
@@ -27,12 +27,12 @@
 #define InspectorClientWx_h
 
 #include "InspectorClient.h"
+#include <wtf/Forward.h>
 
 namespace WebCore {
 
 class Node;
 class Page;
-class String;
 
 class InspectorClientWx : public InspectorClient {
 public:
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index fea1b6f..ce5be33 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,31 @@
+2010-08-06  Gavin Barraclough  <barraclough at apple.com>
+
+        Rubber stamped by Sam Weinig
+
+        Bug 43594 - Add string forwards to Forward.h
+        This allows us to remove forward declarations for these classes from
+        WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+        * UIProcess/PageClient.h:
+        * UIProcess/VisitedLinkProvider.h:
+        * UIProcess/WebContextInjectedBundleClient.h:
+        * UIProcess/WebFrameProxy.h:
+        * UIProcess/WebHistoryClient.h:
+        * UIProcess/WebLoaderClient.h:
+        * UIProcess/WebPolicyClient.h:
+        * UIProcess/WebProcessProxy.h:
+        * UIProcess/WebUIClient.h:
+        * UIProcess/win/WebView.h:
+        * WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h:
+        * WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
+        * WebProcess/InjectedBundle/InjectedBundlePageUIClient.h:
+        * WebProcess/Plugins/NPRuntimeObjectMap.h:
+        * WebProcess/Plugins/Netscape/NetscapePluginStream.h:
+        * WebProcess/Plugins/PluginController.h:
+        * WebProcess/WebPage/WebFrame.h:
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebProcess.h:
+
 2010-08-09  Balazs Kelemen  <kb at inf.u-szeged.hu>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/WebKit2/Platform/CoreIPC/win/ConnectionWin.cpp b/WebKit2/Platform/CoreIPC/win/ConnectionWin.cpp
index 4519d1a..f303c8a 100644
--- a/WebKit2/Platform/CoreIPC/win/ConnectionWin.cpp
+++ b/WebKit2/Platform/CoreIPC/win/ConnectionWin.cpp
@@ -32,8 +32,8 @@
 
 using namespace std;
 // We explicitly don't use the WebCore namespace here because CoreIPC should only use WTF types and
-// WebCore::String is really in WTF.
-using WebCore::String;
+// WTF::String is really in WTF.
+using WTF::String;
  
 namespace CoreIPC {
 
diff --git a/WebKit2/Platform/Module.h b/WebKit2/Platform/Module.h
index 1143d35..89cae72 100644
--- a/WebKit2/Platform/Module.h
+++ b/WebKit2/Platform/Module.h
@@ -37,7 +37,7 @@ namespace WebKit {
 
 class Module : public Noncopyable {
 public:
-    Module(const WebCore::String& path);
+    Module(const WTF::String& path);
     ~Module();
 
     bool load();
@@ -50,7 +50,7 @@ public:
 private:
     void* platformFunctionPointer(const char* functionName) const;
 
-    WebCore::String m_path;
+    WTF::String m_path;
 #if PLATFORM(MAC)
     RetainPtr<CFBundleRef> m_bundle;
 #elif PLATFORM(WIN)
diff --git a/WebKit2/Shared/CommandLine.h b/WebKit2/Shared/CommandLine.h
index 119ceb1..217112e 100644
--- a/WebKit2/Shared/CommandLine.h
+++ b/WebKit2/Shared/CommandLine.h
@@ -42,7 +42,7 @@ public:
 #elif PLATFORM(WIN)
     bool parse(LPTSTR commandLineString);
 #endif
-    WebCore::String operator[](const WebCore::String& key) const
+    WTF::String operator[](const WTF::String& key) const
     {
         return m_args.get(key);
     }
@@ -50,7 +50,7 @@ public:
 private:
     bool m_parsedSuccessfully;
 
-    HashMap<WebCore::String, WebCore::String> m_args;
+    HashMap<WTF::String, WTF::String> m_args;
 };
 
 }
diff --git a/WebKit2/Shared/WebCoreArgumentCoders.h b/WebKit2/Shared/WebCoreArgumentCoders.h
index fb5d18e..b229bca 100644
--- a/WebKit2/Shared/WebCoreArgumentCoders.h
+++ b/WebKit2/Shared/WebCoreArgumentCoders.h
@@ -42,22 +42,22 @@ template<> struct ArgumentCoder<WebCore::IntPoint> : SimpleArgumentCoder<WebCore
 template<> struct ArgumentCoder<WebCore::IntSize> : SimpleArgumentCoder<WebCore::IntSize> { };
 template<> struct ArgumentCoder<WebCore::IntRect> : SimpleArgumentCoder<WebCore::IntRect> { };
 
-template<> struct ArgumentCoder<WebCore::String> {
-    static void encode(ArgumentEncoder* encoder, const WebCore::String& string)
+template<> struct ArgumentCoder<WTF::String> {
+    static void encode(ArgumentEncoder* encoder, const WTF::String& string)
     {
         uint32_t length = string.length();
         encoder->encode(length);
         encoder->encodeBytes(reinterpret_cast<const uint8_t*>(string.characters()), length * sizeof(UChar));
     }
     
-    static bool decode(ArgumentDecoder* decoder, WebCore::String& s)
+    static bool decode(ArgumentDecoder* decoder, WTF::String& s)
     {
         uint32_t length;
         if (!decoder->decode(length))
             return false;
         
         UChar* buffer;
-        WebCore::String string = WebCore::String::createUninitialized(length, buffer);
+        WTF::String string = WTF::String::createUninitialized(length, buffer);
         if (!decoder->decodeBytes(reinterpret_cast<uint8_t*>(buffer), length * sizeof(UChar)))
             return false;
         
diff --git a/WebKit2/Shared/WebEvent.h b/WebKit2/Shared/WebEvent.h
index 8058ccf..0679e1c 100644
--- a/WebKit2/Shared/WebEvent.h
+++ b/WebKit2/Shared/WebEvent.h
@@ -241,7 +241,7 @@ public:
     {
     }
 
-    WebKeyboardEvent(Type type, const WebCore::String& text, const WebCore::String& unmodifiedText, const WebCore::String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers modifiers, double timestamp)
+    WebKeyboardEvent(Type type, const WTF::String& text, const WTF::String& unmodifiedText, const WTF::String& keyIdentifier, int windowsVirtualKeyCode, int nativeVirtualKeyCode, bool isAutoRepeat, bool isKeypad, bool isSystemKey, Modifiers modifiers, double timestamp)
         : WebEvent(type, modifiers, timestamp)
         , m_text(text)
         , m_unmodifiedText(unmodifiedText)
@@ -255,9 +255,9 @@ public:
         ASSERT(isKeyboardEventType(type));
     }
 
-    const WebCore::String& text() const { return m_text; }
-    const WebCore::String& unmodifiedText() const { return m_unmodifiedText; }
-    const WebCore::String& keyIdentifier() const { return m_keyIdentifier; }
+    const WTF::String& text() const { return m_text; }
+    const WTF::String& unmodifiedText() const { return m_unmodifiedText; }
+    const WTF::String& keyIdentifier() const { return m_keyIdentifier; }
     int32_t windowsVirtualKeyCode() const { return m_windowsVirtualKeyCode; }
     int32_t nativeVirtualKeyCode() const { return m_nativeVirtualKeyCode; }
     bool isAutoRepeat() const { return m_isAutoRepeat; }
@@ -283,17 +283,17 @@ public:
         if (!WebEvent::decode(decoder, t))
             return false;
 
-        WebCore::String text;
+        WTF::String text;
         if (!decoder->decode(text))
             return false;
         t.m_text = text;
 
-        WebCore::String unmodifiedText;
+        WTF::String unmodifiedText;
         if (!decoder->decode(unmodifiedText))
             return false;
         t.m_unmodifiedText = unmodifiedText;
 
-        WebCore::String keyIdentifier;
+        WTF::String keyIdentifier;
         if (!decoder->decode(keyIdentifier))
             return false;
         t.m_keyIdentifier = keyIdentifier;
@@ -317,9 +317,9 @@ private:
         return type == RawKeyDown || type == KeyDown || type == KeyUp || type == Char;
     }
 
-    WebCore::String m_text;
-    WebCore::String m_unmodifiedText;
-    WebCore::String m_keyIdentifier;
+    WTF::String m_text;
+    WTF::String m_unmodifiedText;
+    WTF::String m_keyIdentifier;
     int32_t m_windowsVirtualKeyCode;
     int32_t m_nativeVirtualKeyCode;
     bool m_isAutoRepeat;
diff --git a/WebKit2/Shared/WebNavigationDataStore.h b/WebKit2/Shared/WebNavigationDataStore.h
index f559c32..4cfff7f 100644
--- a/WebKit2/Shared/WebNavigationDataStore.h
+++ b/WebKit2/Shared/WebNavigationDataStore.h
@@ -50,8 +50,8 @@ struct WebNavigationDataStore {
     }
 
     // FIXME: Add the remaining items we want to track for history.
-    WebCore::String url;
-    WebCore::String title;
+    WTF::String url;
+    WTF::String title;
 };
 
 } // namespace WebKit
diff --git a/WebKit2/Shared/WebPreferencesStore.cpp b/WebKit2/Shared/WebPreferencesStore.cpp
index ec19f4a..15a267d 100644
--- a/WebKit2/Shared/WebPreferencesStore.cpp
+++ b/WebKit2/Shared/WebPreferencesStore.cpp
@@ -89,12 +89,12 @@ void WebPreferencesStore::swap(WebPreferencesStore& other)
     std::swap(minimumLogicalFontSize, other.minimumLogicalFontSize);
     std::swap(defaultFontSize, other.defaultFontSize);
     std::swap(defaultFixedFontSize, other.defaultFixedFontSize);
-    WebCore::swap(standardFontFamily, other.standardFontFamily);
-    WebCore::swap(cursiveFontFamily, other.cursiveFontFamily);
-    WebCore::swap(fantasyFontFamily, other.fantasyFontFamily);
-    WebCore::swap(fixedFontFamily, other.fixedFontFamily);
-    WebCore::swap(sansSerifFontFamily, other.sansSerifFontFamily);
-    WebCore::swap(serifFontFamily, other.serifFontFamily);
+    WTF::swap(standardFontFamily, other.standardFontFamily);
+    WTF::swap(cursiveFontFamily, other.cursiveFontFamily);
+    WTF::swap(fantasyFontFamily, other.fantasyFontFamily);
+    WTF::swap(fixedFontFamily, other.fixedFontFamily);
+    WTF::swap(sansSerifFontFamily, other.sansSerifFontFamily);
+    WTF::swap(serifFontFamily, other.serifFontFamily);
 }
 
 } // namespace WebKit
diff --git a/WebKit2/Shared/WebPreferencesStore.h b/WebKit2/Shared/WebPreferencesStore.h
index fc3a42d..ad76fa0 100644
--- a/WebKit2/Shared/WebPreferencesStore.h
+++ b/WebKit2/Shared/WebPreferencesStore.h
@@ -108,12 +108,12 @@ struct WebPreferencesStore {
     uint32_t minimumLogicalFontSize;
     uint32_t defaultFontSize;
     uint32_t defaultFixedFontSize;
-    WebCore::String standardFontFamily;
-    WebCore::String cursiveFontFamily;
-    WebCore::String fantasyFontFamily;
-    WebCore::String fixedFontFamily;
-    WebCore::String sansSerifFontFamily;
-    WebCore::String serifFontFamily;
+    WTF::String standardFontFamily;
+    WTF::String cursiveFontFamily;
+    WTF::String fantasyFontFamily;
+    WTF::String fixedFontFamily;
+    WTF::String sansSerifFontFamily;
+    WTF::String serifFontFamily;
 };
 
 } // namespace WebKit
diff --git a/WebKit2/Shared/WebString.h b/WebKit2/Shared/WebString.h
index fa3f4d1..8b8557c 100644
--- a/WebKit2/Shared/WebString.h
+++ b/WebKit2/Shared/WebString.h
@@ -38,7 +38,7 @@ class WebString : public APIObject {
 public:
     static const Type APIType = TypeString;
 
-    static PassRefPtr<WebString> create(const WebCore::String& string)
+    static PassRefPtr<WebString> create(const WTF::String& string)
     {
         return adoptRef(new WebString(string));
     }
@@ -46,17 +46,17 @@ public:
     bool isNull() const { return m_string.isNull(); }
     bool isEmpty() const { return m_string.isEmpty(); }
 
-    const WebCore::String& string() const { return m_string; }
+    const WTF::String& string() const { return m_string; }
 
 private:
-    WebString(const WebCore::String& string)
+    WebString(const WTF::String& string)
         : m_string(string)
     {
     }
 
     virtual Type type() const { return APIType; }
 
-    WebCore::String m_string;
+    WTF::String m_string;
 };
 
 } // namespace WebKit
diff --git a/WebKit2/Shared/WebURL.h b/WebKit2/Shared/WebURL.h
index 00adca5..de05e71 100644
--- a/WebKit2/Shared/WebURL.h
+++ b/WebKit2/Shared/WebURL.h
@@ -38,7 +38,7 @@ class WebURL : public APIObject {
 public:
     static const Type APIType = TypeURL;
 
-    static PassRefPtr<WebURL> create(const WebCore::String& string)
+    static PassRefPtr<WebURL> create(const WTF::String& string)
     {
         return adoptRef(new WebURL(string));
     }
@@ -46,17 +46,17 @@ public:
     bool isNull() const { return m_string.isNull(); }
     bool isEmpty() const { return m_string.isEmpty(); }
 
-    const WebCore::String& string() const { return m_string; }
+    const WTF::String& string() const { return m_string; }
 
 private:
-    WebURL(const WebCore::String& string)
+    WebURL(const WTF::String& string)
         : m_string(string)
     {
     }
 
     virtual Type type() const { return APIType; }
 
-    WebCore::String m_string;
+    WTF::String m_string;
 };
 
 } // namespace WebKit
diff --git a/WebKit2/UIProcess/API/C/WKAPICast.h b/WebKit2/UIProcess/API/C/WKAPICast.h
index d4bb77c..1451f66 100644
--- a/WebKit2/UIProcess/API/C/WKAPICast.h
+++ b/WebKit2/UIProcess/API/C/WKAPICast.h
@@ -119,29 +119,29 @@ inline typename WebKit::ImplTypeInfo<T>::APIType toRef(T t)
 
 /* Special cases. */
 
-inline WebKit::ProxyingRefPtr<WebKit::WebString> toRef(WebCore::StringImpl* string)
+inline WebKit::ProxyingRefPtr<WebKit::WebString> toRef(WTF::StringImpl* string)
 {
-    WebCore::StringImpl* impl = string ? string : WebCore::StringImpl::empty();
-    return WebKit::ProxyingRefPtr<WebKit::WebString>(WebKit::WebString::create(WebCore::String(impl)));
+    WTF::StringImpl* impl = string ? string : WTF::StringImpl::empty();
+    return WebKit::ProxyingRefPtr<WebKit::WebString>(WebKit::WebString::create(WTF::String(impl)));
 }
 
-inline WebKit::ProxyingRefPtr<WebKit::WebURL> toURLRef(WebCore::StringImpl* string)
+inline WebKit::ProxyingRefPtr<WebKit::WebURL> toURLRef(WTF::StringImpl* string)
 {
-    WebCore::StringImpl* impl = string ? string : WebCore::StringImpl::empty();
-    return WebKit::ProxyingRefPtr<WebKit::WebURL>(WebKit::WebURL::create(WebCore::String(impl)));
+    WTF::StringImpl* impl = string ? string : WTF::StringImpl::empty();
+    return WebKit::ProxyingRefPtr<WebKit::WebURL>(WebKit::WebURL::create(WTF::String(impl)));
 }
 
-inline WKStringRef toCopiedRef(const WebCore::String& string)
+inline WKStringRef toCopiedRef(const WTF::String& string)
 {
-    WebCore::StringImpl* impl = string.impl() ? string.impl() : WebCore::StringImpl::empty();
-    RefPtr<WebKit::WebString> webString = WebKit::WebString::create(WebCore::String(impl));
+    WTF::StringImpl* impl = string.impl() ? string.impl() : WTF::StringImpl::empty();
+    RefPtr<WebKit::WebString> webString = WebKit::WebString::create(WTF::String(impl));
     return toRef(webString.release().releaseRef());
 }
 
-inline WKURLRef toCopiedURLRef(const WebCore::String& string)
+inline WKURLRef toCopiedURLRef(const WTF::String& string)
 {
-    WebCore::StringImpl* impl = string.impl() ? string.impl() : WebCore::StringImpl::empty();
-    RefPtr<WebKit::WebURL> webURL = WebKit::WebURL::create(WebCore::String(impl));
+    WTF::StringImpl* impl = string.impl() ? string.impl() : WTF::StringImpl::empty();
+    RefPtr<WebKit::WebURL> webURL = WebKit::WebURL::create(WTF::String(impl));
     return toRef(webURL.release().releaseRef());
 }
 
diff --git a/WebKit2/UIProcess/API/C/WKContext.cpp b/WebKit2/UIProcess/API/C/WKContext.cpp
index 3b018ee..315c2cb 100644
--- a/WebKit2/UIProcess/API/C/WKContext.cpp
+++ b/WebKit2/UIProcess/API/C/WKContext.cpp
@@ -42,7 +42,7 @@ WKTypeID WKContextGetTypeID()
 
 WKContextRef WKContextCreate()
 {
-    RefPtr<WebContext> context = WebContext::create(WebCore::String());
+    RefPtr<WebContext> context = WebContext::create(WTF::String());
     return toRef(context.release().releaseRef());
 }
 
diff --git a/WebKit2/UIProcess/API/cpp/qt/WKStringQt.cpp b/WebKit2/UIProcess/API/cpp/qt/WKStringQt.cpp
index 92517eb..e80e520 100644
--- a/WebKit2/UIProcess/API/cpp/qt/WKStringQt.cpp
+++ b/WebKit2/UIProcess/API/cpp/qt/WKStringQt.cpp
@@ -27,7 +27,7 @@
 
 WKStringRef WKStringCreateWithQString(const QString& qString)
 {
-    WebCore::String string(qString);
+    WTF::String string(qString);
     return toCopiedRef(string);
 }
 
@@ -35,6 +35,6 @@ QString WKStringCopyQString(WKStringRef stringRef)
 {
     if (!stringRef)
         return QString();
-    const WebCore::String& string = toWK(stringRef)->string();
+    const WTF::String& string = toWK(stringRef)->string();
     return QString(reinterpret_cast<const QChar*>(string.characters()), string.length());
 }
diff --git a/WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp b/WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp
index 1887b47..0ee6e3c 100644
--- a/WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp
+++ b/WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp
@@ -27,7 +27,7 @@
 
 WKURLRef WKURLCreateWithQUrl(const QUrl& qURL)
 {
-    WebCore::String urlString(qURL.toString());
+    WTF::String urlString(qURL.toString());
     return toCopiedURLRef(urlString);
 }
 
@@ -35,6 +35,6 @@ QUrl WKURLCopyQUrl(WKURLRef urlRef)
 {
     if (!urlRef)
         return QUrl();
-    const WebCore::String& string = toWK(urlRef)->string();
+    const WTF::String& string = toWK(urlRef)->string();
     return QUrl(QString(reinterpret_cast<const QChar*>(string.characters()), string.length()));
 }
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.h b/WebKit2/UIProcess/API/mac/PageClientImpl.h
index 910a0e8..7186601 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.h
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.h
@@ -34,7 +34,7 @@ namespace WebKit {
 
 // NOTE: This does not use String::operator NSString*() since that function
 // expects to be called on the thread running WebCore.
-NSString* nsStringFromWebCoreString(const WebCore::String&);
+NSString* nsStringFromWebCoreString(const WTF::String&);
 
 class PageClientImpl : public PageClient {
 public:
@@ -45,7 +45,7 @@ private:
     virtual void processDidExit();
     virtual void processDidRevive();
     virtual void takeFocus(bool direction);
-    virtual void toolTipChanged(const WebCore::String& oldToolTip, const WebCore::String& newToolTip);
+    virtual void toolTipChanged(const WTF::String& oldToolTip, const WTF::String& newToolTip);
     virtual void setCursor(const WebCore::Cursor&);
 
 #if USE(ACCELERATED_COMPOSITING)
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.mm b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
index 7664a04..5dd7417 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.mm
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
@@ -36,7 +36,7 @@ using namespace WebCore;
 
 namespace WebKit {
 
-NSString* nsStringFromWebCoreString(const WebCore::String& string)
+NSString* nsStringFromWebCoreString(const WTF::String& string)
 {
     return string.impl() ? HardAutorelease(WKStringCopyCFString(0, toRef(string.impl()))) : @"";
 }
diff --git a/WebKit2/UIProcess/API/qt/qwkpage_p.h b/WebKit2/UIProcess/API/qt/qwkpage_p.h
index e725379..0deda34 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage_p.h
+++ b/WebKit2/UIProcess/API/qt/qwkpage_p.h
@@ -49,7 +49,7 @@ public:
     virtual void processDidRevive() { }
     virtual void setCursor(const WebCore::Cursor&) { }
     virtual void takeFocus(bool direction) { }
-    virtual void toolTipChanged(const WebCore::String&, const WebCore::String&);
+    virtual void toolTipChanged(const WTF::String&, const WTF::String&);
 
     void paint(QPainter* painter, QRect);
 
diff --git a/WebKit2/UIProcess/PageClient.h b/WebKit2/UIProcess/PageClient.h
index fc4bbcf..a583da1 100644
--- a/WebKit2/UIProcess/PageClient.h
+++ b/WebKit2/UIProcess/PageClient.h
@@ -26,8 +26,9 @@
 #ifndef PageClient_h
 #define PageClient_h
 
+#include <wtf/Forward.h>
+
 namespace WebCore {
-    class String;
     class Cursor;
 }
 
@@ -41,7 +42,7 @@ public:
     virtual void processDidRevive() = 0;
 
     virtual void takeFocus(bool direction) = 0;
-    virtual void toolTipChanged(const WebCore::String&, const WebCore::String&) = 0;
+    virtual void toolTipChanged(const WTF::String&, const WTF::String&) = 0;
 
     virtual void setCursor(const WebCore::Cursor&) = 0;
 
diff --git a/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp b/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp
index 4b05aaf..c1de12e 100644
--- a/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp
+++ b/WebKit2/UIProcess/Plugins/PluginInfoStore.cpp
@@ -40,7 +40,7 @@ PluginInfoStore::PluginInfoStore()
 {
 }
 
-void PluginInfoStore::setAdditionalPluginsDirectories(const Vector<WebCore::String>& directories)
+void PluginInfoStore::setAdditionalPluginsDirectories(const Vector<WTF::String>& directories)
 {
     m_additionalPluginsDirectories = directories;
     refresh();
diff --git a/WebKit2/UIProcess/Plugins/PluginInfoStore.h b/WebKit2/UIProcess/Plugins/PluginInfoStore.h
index d383f2b..dcac5c2 100644
--- a/WebKit2/UIProcess/Plugins/PluginInfoStore.h
+++ b/WebKit2/UIProcess/Plugins/PluginInfoStore.h
@@ -38,18 +38,18 @@ class PluginInfoStore {
 public:
     PluginInfoStore();
 
-    void setAdditionalPluginsDirectories(const Vector<WebCore::String>&);
+    void setAdditionalPluginsDirectories(const Vector<WTF::String>&);
 
     void refresh();
     void getPlugins(Vector<WebCore::PluginInfo>& plugins);
     
     // Represents a single plug-in.
     struct Plugin {
-        WebCore::String path;
+        WTF::String path;
         WebCore::PluginInfo info;
 #if PLATFORM(MAC)
         cpu_type_t pluginArchitecture;
-        WebCore::String bundleIdentifier;
+        WTF::String bundleIdentifier;
         unsigned versionNumber;
 #endif
     };
@@ -57,25 +57,25 @@ public:
     // Returns the info for a plug-in that can handle the given MIME type.
     // If the MIME type is null, the file extension of the given url will be used to infer the
     // plug-in type. In that case, mimeType will be filled in with the right MIME type.
-    Plugin findPlugin(WebCore::String& mimeType, const WebCore::KURL& url);
+    Plugin findPlugin(WTF::String& mimeType, const WebCore::KURL& url);
     
 private:
 
-    Plugin findPluginForMIMEType(const WebCore::String& mimeType);
-    Plugin findPluginForExtension(const WebCore::String& extension, WebCore::String& mimeType);
+    Plugin findPluginForMIMEType(const WTF::String& mimeType);
+    Plugin findPluginForExtension(const WTF::String& extension, WTF::String& mimeType);
 
     void loadPluginsIfNecessary();
-    void loadPluginsInDirectory(const WebCore::String& directory);
-    void loadPlugin(const WebCore::String& pluginPath);
+    void loadPluginsInDirectory(const WTF::String& directory);
+    void loadPlugin(const WTF::String& pluginPath);
     
     // Platform specific member functions.
-    static Vector<WebCore::String> pluginsDirectories();
-    static Vector<WebCore::String> pluginPathsInDirectory(const WebCore::String& directory);
-    static bool getPluginInfo(const WebCore::String& pluginPath, Plugin& plugin);
+    static Vector<WTF::String> pluginsDirectories();
+    static Vector<WTF::String> pluginPathsInDirectory(const WTF::String& directory);
+    static bool getPluginInfo(const WTF::String& pluginPath, Plugin& plugin);
     static bool shouldUsePlugin(const Plugin& plugin, const Vector<Plugin>& loadedPlugins);
-    static WebCore::String getMIMETypeForExtension(const WebCore::String& extension);
+    static WTF::String getMIMETypeForExtension(const WTF::String& extension);
 
-    Vector<WebCore::String> m_additionalPluginsDirectories;
+    Vector<WTF::String> m_additionalPluginsDirectories;
     Vector<Plugin> m_plugins;
     bool m_pluginListIsUpToDate;
 };
diff --git a/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm b/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
index 64e1103..e5a89cb 100644
--- a/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
+++ b/WebKit2/UIProcess/Plugins/mac/PluginInfoStoreMac.mm
@@ -313,7 +313,7 @@ static bool getPluginInfoFromCarbonResources(CFBundleRef bundle, PluginInfo& plu
     return true;
 }
 
-bool PluginInfoStore::getPluginInfo(const WebCore::String& pluginPath, Plugin& plugin)
+bool PluginInfoStore::getPluginInfo(const WTF::String& pluginPath, Plugin& plugin)
 {
     RetainPtr<CFStringRef> bundlePath(AdoptCF, safeCreateCFString(pluginPath));
     RetainPtr<CFURLRef> bundleURL(AdoptCF, CFURLCreateWithFileSystemPath(kCFAllocatorDefault, bundlePath.get(), kCFURLPOSIXPathStyle, false));
@@ -371,7 +371,7 @@ bool PluginInfoStore::shouldUsePlugin(const Plugin& plugin, const Vector<Plugin>
 String PluginInfoStore::getMIMETypeForExtension(const String& extension)
 {
     // FIXME: This should just call MIMETypeRegistry::getMIMETypeForExtension and be
-    // strength reduced into the callsite once we can safely convert WebCore::String
+    // strength reduced into the callsite once we can safely convert WTF::String
     // to CFStringRef off the main thread.
 
     RetainPtr<CFStringRef> extensionCFString(AdoptCF, safeCreateCFString(extension));
diff --git a/WebKit2/UIProcess/VisitedLinkProvider.h b/WebKit2/UIProcess/VisitedLinkProvider.h
index 82d5e50..f095ba5 100644
--- a/WebKit2/UIProcess/VisitedLinkProvider.h
+++ b/WebKit2/UIProcess/VisitedLinkProvider.h
@@ -29,13 +29,10 @@
 #include "RunLoop.h"
 #include "VisitedLinkTable.h"
 #include <WebCore/LinkHash.h>
+#include <wtf/Forward.h>
 #include <wtf/HashSet.h>
 #include <wtf/Noncopyable.h>
 
-namespace WebCore {
-    class String;
-}
-
 namespace WebKit {
 
 class WebContext;
diff --git a/WebKit2/UIProcess/WebBackForwardListItem.h b/WebKit2/UIProcess/WebBackForwardListItem.h
index 2fec38a..0d689ba 100644
--- a/WebKit2/UIProcess/WebBackForwardListItem.h
+++ b/WebKit2/UIProcess/WebBackForwardListItem.h
@@ -38,7 +38,7 @@ class WebBackForwardListItem : public APIObject {
 public:
     static const Type APIType = TypeBackForwardListItem;
 
-    static PassRefPtr<WebBackForwardListItem> create(const WebCore::String& originalURL, const WebCore::String& url, const WebCore::String& title, uint64_t itemID)
+    static PassRefPtr<WebBackForwardListItem> create(const WTF::String& originalURL, const WTF::String& url, const WTF::String& title, uint64_t itemID)
     {
         return adoptRef(new WebBackForwardListItem(originalURL, url, title, itemID));
     }
@@ -46,23 +46,23 @@ public:
 
     uint64_t itemID() const { return m_itemID; }
 
-    void setOriginalURL(const WebCore::String& originalURL) { m_originalURL = originalURL; }
-    const WebCore::String& originalURL() const { return m_originalURL; }
+    void setOriginalURL(const WTF::String& originalURL) { m_originalURL = originalURL; }
+    const WTF::String& originalURL() const { return m_originalURL; }
 
-    void setURL(const WebCore::String& url) { m_url = url; }
-    const WebCore::String& url() const { return m_url; }
+    void setURL(const WTF::String& url) { m_url = url; }
+    const WTF::String& url() const { return m_url; }
 
-    void setTitle(const WebCore::String& title) { m_title = title; }
-    const WebCore::String& title() const { return m_title; }
+    void setTitle(const WTF::String& title) { m_title = title; }
+    const WTF::String& title() const { return m_title; }
 
 private:
-    WebBackForwardListItem(const WebCore::String& originalURL, const WebCore::String& url, const WebCore::String& title, uint64_t itemID);
+    WebBackForwardListItem(const WTF::String& originalURL, const WTF::String& url, const WTF::String& title, uint64_t itemID);
 
     virtual Type type() const { return APIType; }
 
-    WebCore::String m_originalURL;
-    WebCore::String m_url;
-    WebCore::String m_title;
+    WTF::String m_originalURL;
+    WTF::String m_url;
+    WTF::String m_title;
     uint64_t m_itemID;
 };
 
diff --git a/WebKit2/UIProcess/WebContext.cpp b/WebKit2/UIProcess/WebContext.cpp
index 807e596..2d34026 100644
--- a/WebKit2/UIProcess/WebContext.cpp
+++ b/WebKit2/UIProcess/WebContext.cpp
@@ -192,7 +192,7 @@ PassRefPtr<WebContext> WebContext::create(const String& injectedBundlePath)
     return adoptRef(new WebContext(ProcessModelSecondaryProcess, injectedBundlePath));
 }
     
-WebContext::WebContext(ProcessModel processModel, const WebCore::String& injectedBundlePath)
+WebContext::WebContext(ProcessModel processModel, const WTF::String& injectedBundlePath)
     : m_processModel(processModel)
     , m_injectedBundlePath(injectedBundlePath)
     , m_visitedLinkProvider(this)
@@ -365,7 +365,7 @@ void WebContext::getStatistics(WKContextStatistics* statistics)
         (*it)->getStatistics(statistics);
 }
 
-void WebContext::setAdditionalPluginsDirectory(const WebCore::String& directory)
+void WebContext::setAdditionalPluginsDirectory(const WTF::String& directory)
 {
     Vector<String> directories;
     directories.append(directory);
diff --git a/WebKit2/UIProcess/WebContext.h b/WebKit2/UIProcess/WebContext.h
index 256d82b..7400800 100644
--- a/WebKit2/UIProcess/WebContext.h
+++ b/WebKit2/UIProcess/WebContext.h
@@ -56,7 +56,7 @@ public:
     static WebContext* sharedProcessContext();
     static WebContext* sharedThreadContext();
 
-    static PassRefPtr<WebContext> create(const WebCore::String& injectedBundlePath);
+    static PassRefPtr<WebContext> create(const WTF::String& injectedBundlePath);
 
     ~WebContext();
 
@@ -79,35 +79,35 @@ public:
     WebPreferences* preferences() const;
     void preferencesDidChange();
 
-    const WebCore::String& injectedBundlePath() const { return m_injectedBundlePath; }
+    const WTF::String& injectedBundlePath() const { return m_injectedBundlePath; }
 
-    void postMessageToInjectedBundle(const WebCore::String&, APIObject*);
+    void postMessageToInjectedBundle(const WTF::String&, APIObject*);
 
     // InjectedBundle client
-    void didReceiveMessageFromInjectedBundle(const WebCore::String&, APIObject*);
+    void didReceiveMessageFromInjectedBundle(const WTF::String&, APIObject*);
 
     // History client
     void didNavigateWithNavigationData(WebFrameProxy*, const WebNavigationDataStore&); 
-    void didPerformClientRedirect(WebFrameProxy*, const WebCore::String& sourceURLString, const WebCore::String& destinationURLString);
-    void didPerformServerRedirect(WebFrameProxy*, const WebCore::String& sourceURLString, const WebCore::String& destinationURLString);
-    void didUpdateHistoryTitle(WebFrameProxy*, const WebCore::String& title, const WebCore::String& url);
+    void didPerformClientRedirect(WebFrameProxy*, const WTF::String& sourceURLString, const WTF::String& destinationURLString);
+    void didPerformServerRedirect(WebFrameProxy*, const WTF::String& sourceURLString, const WTF::String& destinationURLString);
+    void didUpdateHistoryTitle(WebFrameProxy*, const WTF::String& title, const WTF::String& url);
     void populateVisitedLinks();
     
     void getStatistics(WKContextStatistics* statistics);
-    void setAdditionalPluginsDirectory(const WebCore::String&);
+    void setAdditionalPluginsDirectory(const WTF::String&);
 
     PluginInfoStore* pluginInfoStore() { return &m_pluginInfoStore; }
-    WebCore::String applicationCacheDirectory();
+    WTF::String applicationCacheDirectory();
     
-    void registerURLSchemeAsEmptyDocument(const WebCore::String&);
+    void registerURLSchemeAsEmptyDocument(const WTF::String&);
     
-    void addVisitedLink(const WebCore::String&);
+    void addVisitedLink(const WTF::String&);
     void addVisitedLink(WebCore::LinkHash);
 
     void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
 
 private:
-    WebContext(ProcessModel, const WebCore::String& injectedBundlePath);
+    WebContext(ProcessModel, const WTF::String& injectedBundlePath);
 
     virtual Type type() const { return APIType; }
 
@@ -122,7 +122,7 @@ private:
     HashSet<WebPageNamespace*> m_pageNamespaces;
     RefPtr<WebPreferences> m_preferences;
 
-    WebCore::String m_injectedBundlePath;
+    WTF::String m_injectedBundlePath;
     WebContextInjectedBundleClient m_injectedBundleClient;
 
     WebHistoryClient m_historyClient;
@@ -130,7 +130,7 @@ private:
     PluginInfoStore m_pluginInfoStore;
     VisitedLinkProvider m_visitedLinkProvider;
         
-    HashSet<WebCore::String> m_schemesToRegisterAsEmptyDocument;
+    HashSet<WTF::String> m_schemesToRegisterAsEmptyDocument;
 };
 
 } // namespace WebKit
diff --git a/WebKit2/UIProcess/WebContextInjectedBundleClient.h b/WebKit2/UIProcess/WebContextInjectedBundleClient.h
index c19c70a..42b994e 100644
--- a/WebKit2/UIProcess/WebContextInjectedBundleClient.h
+++ b/WebKit2/UIProcess/WebContextInjectedBundleClient.h
@@ -27,10 +27,7 @@
 #define WebContextInjectedBundleClient_h
 
 #include "WKContext.h"
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -42,7 +39,7 @@ public:
     WebContextInjectedBundleClient();
     void initialize(const WKContextInjectedBundleClient*);
 
-    void didReceiveMessageFromInjectedBundle(WebContext*, const WebCore::String&, APIObject*);
+    void didReceiveMessageFromInjectedBundle(WebContext*, const WTF::String&, APIObject*);
 
 private:
     WKContextInjectedBundleClient m_client;
diff --git a/WebKit2/UIProcess/WebFrameProxy.cpp b/WebKit2/UIProcess/WebFrameProxy.cpp
index e785f97..0304dad 100644
--- a/WebKit2/UIProcess/WebFrameProxy.cpp
+++ b/WebKit2/UIProcess/WebFrameProxy.cpp
@@ -81,7 +81,7 @@ void WebFrameProxy::didFinishLoad()
     m_loadState = LoadStateFinished;
 }
 
-void WebFrameProxy::didReceiveTitle(const WebCore::String&)
+void WebFrameProxy::didReceiveTitle(const WTF::String&)
 {
 }
 
diff --git a/WebKit2/UIProcess/WebFrameProxy.h b/WebKit2/UIProcess/WebFrameProxy.h
index 59d6be6..4b97593 100644
--- a/WebKit2/UIProcess/WebFrameProxy.h
+++ b/WebKit2/UIProcess/WebFrameProxy.h
@@ -30,6 +30,7 @@
 #include "WebFramePolicyListenerProxy.h"
 #include <WebCore/FrameLoaderTypes.h>
 #include <WebCore/PlatformString.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
 namespace CoreIPC {
@@ -38,10 +39,6 @@ namespace CoreIPC {
     class MessageID;
 }
 
-namespace WebCore {
-    class String;
-}
-
 namespace WebKit {
 
 class WebPageProxy;
@@ -70,13 +67,13 @@ public:
     bool isMainFrame() const;
     LoadState loadState() const { return m_loadState; }
 
-    const WebCore::String& url() const { return m_url; }
-    const WebCore::String& provisionalURL() const { return m_provisionalURL; }
+    const WTF::String& url() const { return m_url; }
+    const WTF::String& provisionalURL() const { return m_provisionalURL; }
 
-    void didStartProvisionalLoad(const WebCore::String& url);
+    void didStartProvisionalLoad(const WTF::String& url);
     void didCommitLoad();
     void didFinishLoad();
-    void didReceiveTitle(const WebCore::String&);
+    void didReceiveTitle(const WTF::String&);
 
     void receivedPolicyDecision(WebCore::PolicyAction, uint64_t listenerID);
     WebFramePolicyListenerProxy* setUpPolicyListenerProxy(uint64_t listenerID);
@@ -88,8 +85,8 @@ private:
 
     WebPageProxy* m_page;
     LoadState m_loadState;
-    WebCore::String m_url;
-    WebCore::String m_provisionalURL;
+    WTF::String m_url;
+    WTF::String m_provisionalURL;
     RefPtr<WebFramePolicyListenerProxy> m_policyListener;
     uint64_t m_frameID;
 };
diff --git a/WebKit2/UIProcess/WebHistoryClient.h b/WebKit2/UIProcess/WebHistoryClient.h
index 3ce6ad2..18292f6 100644
--- a/WebKit2/UIProcess/WebHistoryClient.h
+++ b/WebKit2/UIProcess/WebHistoryClient.h
@@ -27,10 +27,7 @@
 #define WebHistoryClient_h
 
 #include "WKContext.h"
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -45,9 +42,9 @@ public:
     void initialize(const WKContextHistoryClient*);
 
     void didNavigateWithNavigationData(WebContext*, WebPageProxy*, const WebNavigationDataStore&, WebFrameProxy*);
-    void didPerformClientRedirect(WebContext*, WebPageProxy*, const WebCore::String& sourceURL, const WebCore::String& destinationURL, WebFrameProxy*);
-    void didPerformServerRedirect(WebContext*, WebPageProxy*, const WebCore::String& sourceURL, const WebCore::String& destinationURL, WebFrameProxy*);
-    void didUpdateHistoryTitle(WebContext*, WebPageProxy*, const WebCore::String& title, const WebCore::String& url, WebFrameProxy*);
+    void didPerformClientRedirect(WebContext*, WebPageProxy*, const WTF::String& sourceURL, const WTF::String& destinationURL, WebFrameProxy*);
+    void didPerformServerRedirect(WebContext*, WebPageProxy*, const WTF::String& sourceURL, const WTF::String& destinationURL, WebFrameProxy*);
+    void didUpdateHistoryTitle(WebContext*, WebPageProxy*, const WTF::String& title, const WTF::String& url, WebFrameProxy*);
     void populateVisitedLinks(WebContext*);
 
     bool shouldTrackVisitedLinks() const { return m_contextHistoryClient.populateVisitedLinks; }
diff --git a/WebKit2/UIProcess/WebLoaderClient.cpp b/WebKit2/UIProcess/WebLoaderClient.cpp
index 8f0ec58..aa6a7ac 100644
--- a/WebKit2/UIProcess/WebLoaderClient.cpp
+++ b/WebKit2/UIProcess/WebLoaderClient.cpp
@@ -79,7 +79,7 @@ void WebLoaderClient::didFailLoadWithErrorForFrame(WebPageProxy* page, WebFrameP
         m_pageLoaderClient.didFailLoadWithErrorForFrame(toRef(page), toRef(frame), m_pageLoaderClient.clientInfo);
 }
 
-void WebLoaderClient::didReceiveTitleForFrame(WebPageProxy* page, WebCore::StringImpl* title, WebFrameProxy* frame)
+void WebLoaderClient::didReceiveTitleForFrame(WebPageProxy* page, WTF::StringImpl* title, WebFrameProxy* frame)
 {
     if (m_pageLoaderClient.didReceiveTitleForFrame)
         m_pageLoaderClient.didReceiveTitleForFrame(toRef(page), toRef(title), toRef(frame), m_pageLoaderClient.clientInfo);
diff --git a/WebKit2/UIProcess/WebLoaderClient.h b/WebKit2/UIProcess/WebLoaderClient.h
index 1d07de4..a6d93fe 100644
--- a/WebKit2/UIProcess/WebLoaderClient.h
+++ b/WebKit2/UIProcess/WebLoaderClient.h
@@ -27,10 +27,7 @@
 #define WebLoaderClient_h
 
 #include "WKPage.h"
-
-namespace WebCore {
-    class StringImpl;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -48,7 +45,7 @@ public:
     void didCommitLoadForFrame(WebPageProxy*, WebFrameProxy*);
     void didFinishLoadForFrame(WebPageProxy*, WebFrameProxy*);
     void didFailLoadWithErrorForFrame(WebPageProxy*, WebFrameProxy*);
-    void didReceiveTitleForFrame(WebPageProxy*, WebCore::StringImpl*, WebFrameProxy*);
+    void didReceiveTitleForFrame(WebPageProxy*, WTF::StringImpl*, WebFrameProxy*);
     void didFirstLayoutForFrame(WebPageProxy*, WebFrameProxy*);
     void didFirstVisuallyNonEmptyLayoutForFrame(WebPageProxy*, WebFrameProxy*);
     void didStartProgress(WebPageProxy*);
diff --git a/WebKit2/UIProcess/WebNavigationData.h b/WebKit2/UIProcess/WebNavigationData.h
index f23e7da..3b48977 100644
--- a/WebKit2/UIProcess/WebNavigationData.h
+++ b/WebKit2/UIProcess/WebNavigationData.h
@@ -42,8 +42,8 @@ public:
     }
     ~WebNavigationData();
 
-    WebCore::String title() const { return m_store.title; }
-    WebCore::String url() const { return m_store.url; }
+    WTF::String title() const { return m_store.title; }
+    WTF::String url() const { return m_store.url; }
 
 private:
     WebNavigationData(const WebNavigationDataStore&);
diff --git a/WebKit2/UIProcess/WebPageProxy.h b/WebKit2/UIProcess/WebPageProxy.h
index 1294ad7..604b2f8 100644
--- a/WebKit2/UIProcess/WebPageProxy.h
+++ b/WebKit2/UIProcess/WebPageProxy.h
@@ -71,8 +71,8 @@ class WebProcessProxy;
 class WebWheelEvent;
 struct WebNavigationDataStore;
 
-typedef GenericCallback<WKStringRef, WebCore::StringImpl*> RenderTreeExternalRepresentationCallback;
-typedef GenericCallback<WKStringRef, WebCore::StringImpl*> ScriptReturnValueCallback;
+typedef GenericCallback<WKStringRef, WTF::StringImpl*> RenderTreeExternalRepresentationCallback;
+typedef GenericCallback<WKStringRef, WTF::StringImpl*> ScriptReturnValueCallback;
 
 class WebPageProxy : public APIObject {
 public:
@@ -105,7 +105,7 @@ public:
     bool tryClose();
     bool isClosed() const { return m_closed; }
 
-    void loadURL(const WebCore::String&);
+    void loadURL(const WTF::String&);
     void stopLoading();
     void reload(bool reloadFromOrigin);
 
@@ -125,8 +125,8 @@ public:
     void wheelEvent(const WebWheelEvent&);
     void keyEvent(const WebKeyboardEvent&);
 
-    const WebCore::String& pageTitle() const { return m_pageTitle; }
-    const WebCore::String& toolTip() const { return m_toolTip; }
+    const WTF::String& pageTitle() const { return m_pageTitle; }
+    const WTF::String& toolTip() const { return m_toolTip; }
 
     double estimatedProgress() const { return m_estimatedProgress; }
 
@@ -135,7 +135,7 @@ public:
     PassRefPtr<WebData> sessionState() const;
     void restoreFromSessionState(WebData*);
 
-    void runJavaScriptInMainFrame(const WebCore::String&, PassRefPtr<ScriptReturnValueCallback>);
+    void runJavaScriptInMainFrame(const WTF::String&, PassRefPtr<ScriptReturnValueCallback>);
     void getRenderTreeExternalRepresentation(PassRefPtr<RenderTreeExternalRepresentationCallback>);
 
     void receivedPolicyDecision(WebCore::PolicyAction, WebFrameProxy*, uint64_t listenerID);
@@ -159,7 +159,7 @@ public:
     bool isValid();
 
     // REMOVE: For demo purposes only.
-    const WebCore::String& urlAtProcessExit() const { return m_urlAtProcessExit; }
+    const WTF::String& urlAtProcessExit() const { return m_urlAtProcessExit; }
 
     void preferencesDidChange();
 
@@ -173,40 +173,40 @@ private:
     void didCreateMainFrame(uint64_t frameID);
     void didCreateSubFrame(uint64_t frameID);
 
-    void didStartProvisionalLoadForFrame(WebFrameProxy*, const WebCore::String&);
+    void didStartProvisionalLoadForFrame(WebFrameProxy*, const WTF::String&);
     void didReceiveServerRedirectForProvisionalLoadForFrame(WebFrameProxy*);
     void didFailProvisionalLoadForFrame(WebFrameProxy*);
     void didCommitLoadForFrame(WebFrameProxy*);
     void didFinishLoadForFrame(WebFrameProxy*);
     void didFailLoadForFrame(WebFrameProxy*);
-    void didReceiveTitleForFrame(WebFrameProxy*, const WebCore::String&);
+    void didReceiveTitleForFrame(WebFrameProxy*, const WTF::String&);
     void didFirstLayoutForFrame(WebFrameProxy*);
     void didFirstVisuallyNonEmptyLayoutForFrame(WebFrameProxy*);
     void didStartProgress();
     void didChangeProgress(double);
     void didFinishProgress();
     
-    void decidePolicyForNavigationAction(WebFrameProxy*, WebCore::NavigationType navigationType, const WebCore::String& url, uint64_t listenerID);
-    void decidePolicyForNewWindowAction(WebFrameProxy*, WebCore::NavigationType navigationType, const WebCore::String& url, uint64_t listenerID);
-    void decidePolicyForMIMEType(WebFrameProxy*, const WebCore::String& MIMEType, const WebCore::String& url, uint64_t listenerID);
+    void decidePolicyForNavigationAction(WebFrameProxy*, WebCore::NavigationType navigationType, const WTF::String& url, uint64_t listenerID);
+    void decidePolicyForNewWindowAction(WebFrameProxy*, WebCore::NavigationType navigationType, const WTF::String& url, uint64_t listenerID);
+    void decidePolicyForMIMEType(WebFrameProxy*, const WTF::String& MIMEType, const WTF::String& url, uint64_t listenerID);
 
     PassRefPtr<WebPageProxy> createNewPage();
     void showPage();
     void closePage();
-    void runJavaScriptAlert(WebFrameProxy*, const WebCore::String&);
-    bool runJavaScriptConfirm(WebFrameProxy* frame, const WebCore::String&);
-    WebCore::String runJavaScriptPrompt(WebFrameProxy* frame, const WebCore::String&, const WebCore::String&);
+    void runJavaScriptAlert(WebFrameProxy*, const WTF::String&);
+    bool runJavaScriptConfirm(WebFrameProxy* frame, const WTF::String&);
+    WTF::String runJavaScriptPrompt(WebFrameProxy* frame, const WTF::String&, const WTF::String&);
 
     void addItemToBackForwardList(WebBackForwardListItem*);
     void goToItemInBackForwardList(WebBackForwardListItem*);
 
     void takeFocus(bool direction);
-    void setToolTip(const WebCore::String&);
+    void setToolTip(const WTF::String&);
     void setCursor(const WebCore::Cursor&);
 
     void didReceiveEvent(WebEvent::Type);
-    void didRunJavaScriptInMainFrame(const WebCore::String&, uint64_t);
-    void didGetRenderTreeExternalRepresentation(const WebCore::String&, uint64_t);
+    void didRunJavaScriptInMainFrame(const WTF::String&, uint64_t);
+    void didGetRenderTreeExternalRepresentation(const WTF::String&, uint64_t);
 
 #if USE(ACCELERATED_COMPOSITING)
     void didChangeAcceleratedCompositing(bool compositing);
@@ -221,7 +221,7 @@ private:
     RefPtr<WebPageNamespace> m_pageNamespace;
     RefPtr<WebFrameProxy> m_mainFrame;
     HashMap<uint64_t, RefPtr<WebFrameProxy> > m_frameMap;
-    WebCore::String m_pageTitle;
+    WTF::String m_pageTitle;
 
     HashMap<uint64_t, RefPtr<ScriptReturnValueCallback> > m_scriptReturnValueCallbacks;
     HashMap<uint64_t, RefPtr<RenderTreeExternalRepresentationCallback> > m_renderTreeExternalRepresentationCallbacks;
@@ -235,10 +235,10 @@ private:
     bool m_canGoForward;
     RefPtr<WebBackForwardList> m_backForwardList;
 
-    WebCore::String m_toolTip;
+    WTF::String m_toolTip;
 
     // REMOVE: For demo purposes only.
-    WebCore::String m_urlAtProcessExit;
+    WTF::String m_urlAtProcessExit;
     
     bool m_valid;
     bool m_closed;
diff --git a/WebKit2/UIProcess/WebPolicyClient.h b/WebKit2/UIProcess/WebPolicyClient.h
index 5a6390a..98136f2 100644
--- a/WebKit2/UIProcess/WebPolicyClient.h
+++ b/WebKit2/UIProcess/WebPolicyClient.h
@@ -28,10 +28,7 @@
 
 #include "WKPage.h"
 #include <WebCore/FrameLoaderTypes.h>
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -44,9 +41,9 @@ public:
     WebPolicyClient();
     void initialize(const WKPagePolicyClient*);
 
-    bool decidePolicyForNavigationAction(WebPageProxy*, WebCore::NavigationType, const WebCore::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
-    bool decidePolicyForNewWindowAction(WebPageProxy*, WebCore::NavigationType, const WebCore::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
-    bool decidePolicyForMIMEType(WebPageProxy*, const WebCore::String&, const WebCore::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
+    bool decidePolicyForNavigationAction(WebPageProxy*, WebCore::NavigationType, const WTF::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
+    bool decidePolicyForNewWindowAction(WebPageProxy*, WebCore::NavigationType, const WTF::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
+    bool decidePolicyForMIMEType(WebPageProxy*, const WTF::String&, const WTF::String& url, WebFrameProxy*, WebFramePolicyListenerProxy*);
 
 private:
     WKPagePolicyClient m_pagePolicyClient;
diff --git a/WebKit2/UIProcess/WebProcessProxy.cpp b/WebKit2/UIProcess/WebProcessProxy.cpp
index 9f2358f..69831de 100644
--- a/WebKit2/UIProcess/WebProcessProxy.cpp
+++ b/WebKit2/UIProcess/WebProcessProxy.cpp
@@ -190,7 +190,7 @@ void WebProcessProxy::getPlugins(bool refresh, Vector<PluginInfo>& plugins)
     m_context->pluginInfoStore()->getPlugins(plugins);
 }
 
-void WebProcessProxy::getPluginHostConnection(const String& mimeType, const KURL& url, WebCore::String& pluginPath)
+void WebProcessProxy::getPluginHostConnection(const String& mimeType, const KURL& url, WTF::String& pluginPath)
 {
     String newMimeType = mimeType.lower();
 
diff --git a/WebKit2/UIProcess/WebProcessProxy.h b/WebKit2/UIProcess/WebProcessProxy.h
index 8c13cf2..8f682a9 100644
--- a/WebKit2/UIProcess/WebProcessProxy.h
+++ b/WebKit2/UIProcess/WebProcessProxy.h
@@ -33,6 +33,7 @@
 #include "ProcessModel.h"
 #include "ResponsivenessTimer.h"
 #include "WebPageProxy.h"
+#include <wtf/Forward.h>
 #include <WebCore/LinkHash.h>
 #include <wtf/HashMap.h>
 #include <wtf/PassRefPtr.h>
@@ -40,7 +41,6 @@
 
 namespace WebCore {
     class KURL;
-    class String;
 };
 
 namespace WebKit {
@@ -98,9 +98,9 @@ private:
     bool sendMessage(CoreIPC::MessageID, PassOwnPtr<CoreIPC::ArgumentEncoder>);
 
     void getPlugins(bool refresh, Vector<WebCore::PluginInfo>&);
-    void getPluginHostConnection(const WebCore::String& mimeType, const WebCore::KURL& url, WebCore::String& pluginPath);
+    void getPluginHostConnection(const WTF::String& mimeType, const WebCore::KURL& url, WTF::String& pluginPath);
 
-    void addOrUpdateBackForwardListItem(uint64_t itemID, const WebCore::String& originalURLString, const WebCore::String& urlString, const WebCore::String& title);
+    void addOrUpdateBackForwardListItem(uint64_t itemID, const WTF::String& originalURLString, const WTF::String& urlString, const WTF::String& title);
     void addVisitedLink(WebCore::LinkHash);
 
     // CoreIPC::Connection::Client
diff --git a/WebKit2/UIProcess/WebUIClient.h b/WebKit2/UIProcess/WebUIClient.h
index df2e715..4f8ed8f 100644
--- a/WebKit2/UIProcess/WebUIClient.h
+++ b/WebKit2/UIProcess/WebUIClient.h
@@ -27,12 +27,9 @@
 #define WebUIClient_h
 
 #include "WKPage.h"
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 
-namespace WebCore {
-    class String;
-}
-
 namespace WebKit {
 
 class WebFrameProxy;
@@ -46,9 +43,9 @@ public:
     PassRefPtr<WebPageProxy> createNewPage(WebPageProxy*);
     void showPage(WebPageProxy*);
     void close(WebPageProxy*);
-    void runJavaScriptAlert(WebPageProxy*, const WebCore::String&, WebFrameProxy*);
-    bool runJavaScriptConfirm(WebPageProxy*, const WebCore::String&, WebFrameProxy*);
-    WebCore::String runJavaScriptPrompt(WebPageProxy*, const WebCore::String&, const WebCore::String&, WebFrameProxy*);
+    void runJavaScriptAlert(WebPageProxy*, const WTF::String&, WebFrameProxy*);
+    bool runJavaScriptConfirm(WebPageProxy*, const WTF::String&, WebFrameProxy*);
+    WTF::String runJavaScriptPrompt(WebPageProxy*, const WTF::String&, const WTF::String&, WebFrameProxy*);
 
 private:
     WKPageUIClient m_pageUIClient;
diff --git a/WebKit2/UIProcess/qt/WebContextQt.cpp b/WebKit2/UIProcess/qt/WebContextQt.cpp
index fcdccb2..26e692e 100644
--- a/WebKit2/UIProcess/qt/WebContextQt.cpp
+++ b/WebKit2/UIProcess/qt/WebContextQt.cpp
@@ -30,7 +30,7 @@
 
 namespace WebKit {
 
-WebCore::String WebContext::applicationCacheDirectory()
+WTF::String WebContext::applicationCacheDirectory()
 {
     return WebCore::cacheStorage().cacheDirectory();
 }
diff --git a/WebKit2/UIProcess/win/WebView.h b/WebKit2/UIProcess/win/WebView.h
index 0864e61..aee8801 100644
--- a/WebKit2/UIProcess/win/WebView.h
+++ b/WebKit2/UIProcess/win/WebView.h
@@ -30,13 +30,10 @@
 #include "PageClient.h"
 #include "WebPageProxy.h"
 #include <WebCore/WindowMessageListener.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 
-namespace WebCore {
-    class String;
-}
-
 namespace WebKit {
 
 class DrawingAreaProxy;
@@ -95,7 +92,7 @@ private:
     virtual void processDidExit();
     virtual void processDidRevive();
     virtual void takeFocus(bool direction);
-    virtual void toolTipChanged(const WebCore::String&, const WebCore::String&);
+    virtual void toolTipChanged(const WTF::String&, const WTF::String&);
     virtual void setCursor(const WebCore::Cursor&);
 #if USE(ACCELERATED_COMPOSITING)
     virtual void pageDidEnterAcceleratedCompositing();
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h
index 695bc85..fb79ca1 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundle.h
@@ -53,7 +53,7 @@ class InjectedBundle : public APIObject {
 public:
     static const Type APIType = TypeBundle;
 
-    static PassRefPtr<InjectedBundle> create(const WebCore::String& path)
+    static PassRefPtr<InjectedBundle> create(const WTF::String& path)
     {
         return adoptRef(new InjectedBundle(path));
     }
@@ -62,12 +62,12 @@ public:
     bool load();
 
 #if ENABLE(WEB_PROCESS_SANDBOX)
-    void setSandboxToken(const WebCore::String& sandboxToken) { m_sandboxToken = sandboxToken; }
+    void setSandboxToken(const WTF::String& sandboxToken) { m_sandboxToken = sandboxToken; }
 #endif
 
     // API
     void initializeClient(WKBundleClient*);
-    void postMessage(const WebCore::String&, APIObject*);
+    void postMessage(const WTF::String&, APIObject*);
     void setShouldTrackVisitedLinks(bool);
     void removeAllVisitedLinks();
     void activateMacFontAscentHack();
@@ -80,20 +80,20 @@ public:
     // Callback hooks
     void didCreatePage(WebPage*);
     void willDestroyPage(WebPage*);
-    void didReceiveMessage(const WebCore::String&, APIObject*);
+    void didReceiveMessage(const WTF::String&, APIObject*);
 
     void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder*);
 
 private:
-    InjectedBundle(const WebCore::String&);
+    InjectedBundle(const WTF::String&);
 
     virtual Type type() const { return APIType; }
 
-    WebCore::String m_path;
+    WTF::String m_path;
     PlatformBundle m_platformBundle; // This is leaked right now, since we never unload the bundle/module.
 
 #if ENABLE(WEB_PROCESS_SANDBOX)
-    WebCore::String m_sandboxToken;
+    WTF::String m_sandboxToken;
 #endif
 
     WKBundleClient m_client;
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h
index 62bb687..84dbfbc 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageEditorClient.h
@@ -29,12 +29,12 @@
 #include "WKBundlePage.h"
 #include <WebCore/EditorInsertAction.h>
 #include <WebCore/TextAffinity.h>
+#include <wtf/Forward.h>
 
 namespace WebCore {
     class CSSStyleDeclaration;
     class Node;
     class Range;
-    class StringImpl;
 }
 
 namespace WebKit {
@@ -50,14 +50,14 @@ public:
     bool shouldBeginEditing(WebPage*, WebCore::Range*);
     bool shouldEndEditing(WebPage*, WebCore::Range*);
     bool shouldInsertNode(WebPage*, WebCore::Node*, WebCore::Range* rangeToReplace, WebCore::EditorInsertAction);
-    bool shouldInsertText(WebPage*, WebCore::StringImpl*, WebCore::Range* rangeToReplace, WebCore::EditorInsertAction);
+    bool shouldInsertText(WebPage*, WTF::StringImpl*, WebCore::Range* rangeToReplace, WebCore::EditorInsertAction);
     bool shouldDeleteRange(WebPage*, WebCore::Range*);
     bool shouldChangeSelectedRange(WebPage*, WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity affinity, bool stillSelecting);
     bool shouldApplyStyle(WebPage*, WebCore::CSSStyleDeclaration*, WebCore::Range*);
-    void didBeginEditing(WebPage*, WebCore::StringImpl* notificationName);
-    void didEndEditing(WebPage*, WebCore::StringImpl* notificationName);
-    void didChange(WebPage*, WebCore::StringImpl* notificationName);
-    void didChangeSelection(WebPage*, WebCore::StringImpl* notificationName);
+    void didBeginEditing(WebPage*, WTF::StringImpl* notificationName);
+    void didEndEditing(WebPage*, WTF::StringImpl* notificationName);
+    void didChange(WebPage*, WTF::StringImpl* notificationName);
+    void didChangeSelection(WebPage*, WTF::StringImpl* notificationName);
 
 private:
     WKBundlePageEditorClient m_client;
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
index c11a7ae..3e64e50 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp
@@ -100,7 +100,7 @@ void InjectedBundlePageLoaderClient::didCancelClientRedirectForFrame(WebPage* pa
         m_client.didCancelClientRedirectForFrame(toRef(page), toRef(frame), m_client.clientInfo);
 }
 
-void InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame(WebPage* page, WebFrame* frame, const WebCore::String& url, double delay, double date)
+void InjectedBundlePageLoaderClient::willPerformClientRedirectForFrame(WebPage* page, WebFrame* frame, const WTF::String& url, double delay, double date)
 {
     if (m_client.willPerformClientRedirectForFrame)
         m_client.willPerformClientRedirectForFrame(toRef(page), toRef(frame), toURLRef(url.impl()), delay, date, m_client.clientInfo);
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
index 9130663..11e34af 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h
@@ -28,10 +28,7 @@
 
 #include "WKBundlePage.h"
 #include <JavaScriptCore/JSBase.h>
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -49,10 +46,10 @@ public:
     void didCommitLoadForFrame(WebPage*, WebFrame*);
     void didFinishLoadForFrame(WebPage*, WebFrame*);
     void didFailLoadWithErrorForFrame(WebPage*, WebFrame*);
-    void didReceiveTitleForFrame(WebPage*, const WebCore::String&, WebFrame*);
+    void didReceiveTitleForFrame(WebPage*, const WTF::String&, WebFrame*);
     void didClearWindowObjectForFrame(WebPage*, WebFrame*, JSGlobalContextRef, JSObjectRef);
     void didCancelClientRedirectForFrame(WebPage*, WebFrame*);
-    void willPerformClientRedirectForFrame(WebPage*, WebFrame*, const WebCore::String& url, double delay, double date);
+    void willPerformClientRedirectForFrame(WebPage*, WebFrame*, const WTF::String& url, double delay, double date);
     void didChangeLocationWithinPageForFrame(WebPage*, WebFrame*);
     void didFinishDocumentLoadForFrame(WebPage*, WebFrame*);
     void didHandleOnloadEventsForFrame(WebPage*, WebFrame*);
diff --git a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
index ba19cd1..e0e9d85 100644
--- a/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
+++ b/WebKit2/WebProcess/InjectedBundle/InjectedBundlePageUIClient.h
@@ -27,10 +27,7 @@
 #define InjectedBundlePageUIClient_h
 
 #include "WKBundlePage.h"
-
-namespace WebCore {
-    class String;
-}
+#include <wtf/Forward.h>
 
 namespace WebKit {
 
@@ -42,11 +39,11 @@ public:
     InjectedBundlePageUIClient();
     void initialize(WKBundlePageUIClient*);
 
-    void willAddMessageToConsole(WebPage*, const WebCore::String& message, int32_t lineNumber);
-    void willSetStatusbarText(WebPage*, const WebCore::String&);
-    void willRunJavaScriptAlert(WebPage*, const WebCore::String&, WebFrame*);
-    void willRunJavaScriptConfirm(WebPage*, const WebCore::String&, WebFrame*);
-    void willRunJavaScriptPrompt(WebPage*, const WebCore::String&, const WebCore::String&, WebFrame*);
+    void willAddMessageToConsole(WebPage*, const WTF::String& message, int32_t lineNumber);
+    void willSetStatusbarText(WebPage*, const WTF::String&);
+    void willRunJavaScriptAlert(WebPage*, const WTF::String&, WebFrame*);
+    void willRunJavaScriptConfirm(WebPage*, const WTF::String&, WebFrame*);
+    void willRunJavaScriptPrompt(WebPage*, const WTF::String&, const WTF::String&, WebFrame*);
 
 private:
     WKBundlePageUIClient m_client;
diff --git a/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.h b/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.h
index 2b8e49f..19233b4 100644
--- a/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.h
+++ b/WebKit2/WebProcess/Plugins/NPRuntimeObjectMap.h
@@ -26,6 +26,7 @@
 #ifndef NPJSObjectWrapperMap_h
 #define NPJSObjectWrapperMap_h
 
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 
 struct NPObject;
@@ -38,10 +39,6 @@ namespace JSC {
     class JSValue;
 }
 
-namespace WebCore {
-    class String;
-}
-
 namespace WebKit {
 
 class JSNPObject;
@@ -74,7 +71,7 @@ public:
     void convertJSValueToNPVariant(JSC::ExecState*, JSC::JSValue, NPVariant&);
     JSC::JSValue convertNPVariantToJSValue(JSC::ExecState*, JSC::JSGlobalObject*, const NPVariant&);
 
-    bool evaluate(NPObject*, const WebCore::String& scriptString, NPVariant* result);
+    bool evaluate(NPObject*, const WTF::String& scriptString, NPVariant* result);
 
     // Called when the plug-in is destroyed. Will invalidate all the NPObjects.
     void invalidate();
@@ -82,7 +79,7 @@ public:
     JSC::JSGlobalObject* globalObject() const;
     JSC::ExecState* globalExec() const;
 
-    static void setGlobalException(const WebCore::String& exceptionString);
+    static void setGlobalException(const WTF::String& exceptionString);
     static void moveGlobalExceptionToExecState(JSC::ExecState*);
 
 private:
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
index ace2f9c..3f25721 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.h
@@ -57,12 +57,12 @@ public:
 
     void invalidate(const NPRect*);
     const char* userAgent();
-    void loadURL(const WebCore::String& method, const WebCore::String& urlString, const WebCore::String& target, const WebCore::HTTPHeaderMap& headerFields,
+    void loadURL(const WTF::String& method, const WTF::String& urlString, const WTF::String& target, const WebCore::HTTPHeaderMap& headerFields,
                  const Vector<char>& httpBody, bool sendNotification, void* notificationData);
     NPError destroyStream(NPStream*, NPReason);
-    void setStatusbarText(const WebCore::String&);
-    static void setException(const WebCore::String&);
-    bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result);
+    void setStatusbarText(const WTF::String&);
+    static void setException(const WTF::String&);
+    bool evaluate(NPObject*, const WTF::String&scriptString, NPVariant* result);
 
     // These return retained objects.
     NPObject* windowScriptNPObject();
@@ -114,14 +114,14 @@ private:
     virtual void geometryDidChange(const WebCore::IntRect& frameRect, const WebCore::IntRect& clipRect);
     virtual void frameDidFinishLoading(uint64_t requestID);
     virtual void frameDidFail(uint64_t requestID, bool wasCancelled);
-    virtual void didEvaluateJavaScript(uint64_t requestID, const WebCore::String& requestURLString, const WebCore::String& result);
+    virtual void didEvaluateJavaScript(uint64_t requestID, const WTF::String& requestURLString, const WTF::String& result);
     virtual void streamDidReceiveResponse(uint64_t streamID, const WebCore::KURL& responseURL, uint32_t streamLength, 
-                                          uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers);
+                                          uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers);
     virtual void streamDidReceiveData(uint64_t streamID, const char* bytes, int length);
     virtual void streamDidFinishLoading(uint64_t streamID);
     virtual void streamDidFail(uint64_t streamID, bool wasCancelled);
     virtual void manualStreamDidReceiveResponse(const WebCore::KURL& responseURL, uint32_t streamLength, 
-                                                uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers);
+                                                uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers);
     virtual void manualStreamDidReceiveData(const char* bytes, int length);
     virtual void manualStreamDidFinishLoading();
     virtual void manualStreamDidFail(bool wasCancelled);
@@ -138,7 +138,7 @@ private:
     PluginController* m_pluginController;
     uint64_t m_nextRequestID;
 
-    typedef HashMap<uint64_t, std::pair<WebCore::String, void*> > PendingURLNotifyMap;
+    typedef HashMap<uint64_t, std::pair<WTF::String, void*> > PendingURLNotifyMap;
     PendingURLNotifyMap m_pendingURLNotifications;
 
     typedef HashMap<uint64_t, RefPtr<NetscapePluginStream> > StreamsMap;
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.h b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.h
index 3ac5474..965e17a 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.h
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.h
@@ -35,7 +35,7 @@ namespace WebKit {
 
 class NetscapePluginModule : public RefCounted<NetscapePluginModule> {
 public:
-    static PassRefPtr<NetscapePluginModule> getOrCreate(const WebCore::String& pluginPath);
+    static PassRefPtr<NetscapePluginModule> getOrCreate(const WTF::String& pluginPath);
     ~NetscapePluginModule();
 
     const NPPluginFuncs& pluginFuncs() const { return m_pluginFuncs; }
@@ -44,7 +44,7 @@ public:
     void pluginDestroyed();
 
 private:
-    explicit NetscapePluginModule(const WebCore::String& pluginPath);
+    explicit NetscapePluginModule(const WTF::String& pluginPath);
 
     bool tryLoad();
     bool load();
@@ -52,7 +52,7 @@ private:
 
     void shutdown();
 
-    WebCore::String m_pluginPath;
+    WTF::String m_pluginPath;
     bool m_isInitialized;
     unsigned m_pluginCount;
 
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp
index 8579a63..fa6948b 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.cpp
@@ -142,7 +142,7 @@ static bool isSupportedTransferMode(uint16_t transferMode)
     return false;
 }
     
-bool NetscapePluginStream::start(const WebCore::String& responseURLString, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers)
+bool NetscapePluginStream::start(const WTF::String& responseURLString, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers)
 {
     m_responseURL = responseURLString.utf8();
     m_mimeType = mimeType.utf8();
diff --git a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.h b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.h
index ca85ff8..6e7ce67 100644
--- a/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.h
+++ b/WebKit2/WebProcess/Plugins/Netscape/NetscapePluginStream.h
@@ -29,6 +29,7 @@
 #include "RunLoop.h"
 #include <WebCore/FileSystem.h>
 #include <WebCore/npruntime_internal.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
@@ -36,7 +37,6 @@
 
 namespace WebCore {
     class KURL;
-    class String;
 }
 
 namespace WebKit {
@@ -55,12 +55,12 @@ public:
     const NPStream* npStream() const { return &m_npStream; }
 
     void didReceiveResponse(const WebCore::KURL& responseURL, uint32_t streamLength,
-                            uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers);
+                            uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers);
     void didReceiveData(const char* bytes, int length);
     void didFinishLoading();
     void didFail(bool wasCancelled);
 
-    void sendJavaScriptStream(const WebCore::String& requestURLString, const WebCore::String& result);
+    void sendJavaScriptStream(const WTF::String& requestURLString, const WTF::String& result);
 
     void stop(NPReason);
     NPError destroy(NPReason);
@@ -68,8 +68,8 @@ public:
 private:
     NetscapePluginStream(PassRefPtr<NetscapePlugin>, uint64_t streamID, bool sendNotification, void* notificationData);
 
-    bool start(const WebCore::String& responseURLString, uint32_t streamLength, 
-               uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers);
+    bool start(const WTF::String& responseURLString, uint32_t streamLength, 
+               uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers);
 
     void cancel();
     void notifyAndDestroyStream(NPReason);
diff --git a/WebKit2/WebProcess/Plugins/Plugin.h b/WebKit2/WebProcess/Plugins/Plugin.h
index b827fe7..47fee83 100644
--- a/WebKit2/WebProcess/Plugins/Plugin.h
+++ b/WebKit2/WebProcess/Plugins/Plugin.h
@@ -49,9 +49,9 @@ class Plugin : public RefCounted<Plugin> {
 public:
     struct Parameters {
         WebCore::KURL url;
-        Vector<WebCore::String> names;
-        Vector<WebCore::String> values;
-        WebCore::String mimeType;
+        Vector<WTF::String> names;
+        Vector<WTF::String> values;
+        WTF::String mimeType;
         bool loadManually;
     };
 
@@ -82,11 +82,11 @@ public:
 
     // Tells the plug-in that a request to evaluate JavaScript (using PluginController::loadURL) has been fulfilled and passes
     // back the result. If evaluating the script failed, result will be null.
-    virtual void didEvaluateJavaScript(uint64_t requestID, const WebCore::String& requestURLString, const WebCore::String& result) = 0;
+    virtual void didEvaluateJavaScript(uint64_t requestID, const WTF::String& requestURLString, const WTF::String& result) = 0;
 
     // Tells the plug-in that a stream has received its HTTP response.
     virtual void streamDidReceiveResponse(uint64_t streamID, const WebCore::KURL& responseURL, uint32_t streamLength, 
-                                          uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers) = 0;
+                                          uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers) = 0;
 
     // Tells the plug-in that a stream did receive data.
     virtual void streamDidReceiveData(uint64_t streamID, const char* bytes, int length) = 0;
@@ -99,7 +99,7 @@ public:
 
     // Tells the plug-in that the manual stream has received its HTTP response.
     virtual void manualStreamDidReceiveResponse(const WebCore::KURL& responseURL, uint32_t streamLength, 
-                                                uint32_t lastModifiedTime, const WebCore::String& mimeType, const WebCore::String& headers) = 0;
+                                                uint32_t lastModifiedTime, const WTF::String& mimeType, const WTF::String& headers) = 0;
 
     // Tells the plug-in that the manual stream did receive data.
     virtual void manualStreamDidReceiveData(const char* bytes, int length) = 0;
diff --git a/WebKit2/WebProcess/Plugins/PluginController.h b/WebKit2/WebProcess/Plugins/PluginController.h
index 0ffce18..9f49482 100644
--- a/WebKit2/WebProcess/Plugins/PluginController.h
+++ b/WebKit2/WebProcess/Plugins/PluginController.h
@@ -26,6 +26,8 @@
 #ifndef PluginController_h
 #define PluginController_h
 
+#include <wtf/Forward.h>
+
 struct NPObject;
 typedef struct _NPVariant NPVariant;
 
@@ -33,7 +35,6 @@ namespace WebCore {
     class HTTPHeaderMap;
     class IntRect;
     class KURL;
-    class String;
 }
 
 namespace WebKit {
@@ -44,7 +45,7 @@ public:
     virtual void invalidate(const WebCore::IntRect&) = 0;
 
     // Returns the user agent string for the given URL.
-    virtual WebCore::String userAgent(const WebCore::KURL&) = 0;
+    virtual WTF::String userAgent(const WebCore::KURL&) = 0;
 
     // Loads the given URL and associates it with the request ID.
     // 
@@ -53,7 +54,7 @@ public:
     // fails to load, Plugin::frameDidFailToLoad will be called.
     //
     // If the URL is a JavaScript URL, the JavaScript code will be evaluated and the result sent back using Plugin::didEvaluateJavaScript.
-    virtual void loadURL(uint64_t requestID, const WebCore::String& method, const WebCore::String& urlString, const WebCore::String& target, 
+    virtual void loadURL(uint64_t requestID, const WTF::String& method, const WTF::String& urlString, const WTF::String& target, 
                          const WebCore::HTTPHeaderMap& headerFields, const Vector<char>& httpBody, bool allowPopups) = 0;
 
     /// Cancels the load of a stream that was requested by loadURL.
@@ -69,10 +70,10 @@ public:
     virtual NPObject* pluginElementNPObject() = 0;
 
     // Evaluates the given script string in the context of the given NPObject.
-    virtual bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result, bool allowPopups) = 0;
+    virtual bool evaluate(NPObject*, const WTF::String&scriptString, NPVariant* result, bool allowPopups) = 0;
 
     // Set the statusbar text.
-    virtual void setStatusbarText(const WebCore::String&) = 0;
+    virtual void setStatusbarText(const WTF::String&) = 0;
 
 #if USE(ACCELERATED_COMPOSITING)
     // Return whether accelerated compositing is enabled.
diff --git a/WebKit2/WebProcess/Plugins/PluginView.h b/WebKit2/WebProcess/Plugins/PluginView.h
index 3ef118f..b8fee35 100644
--- a/WebKit2/WebProcess/Plugins/PluginView.h
+++ b/WebKit2/WebProcess/Plugins/PluginView.h
@@ -107,15 +107,15 @@ private:
 
     // PluginController
     virtual void invalidate(const WebCore::IntRect&);
-    virtual WebCore::String userAgent(const WebCore::KURL&);
-    virtual void loadURL(uint64_t requestID, const WebCore::String& method, const WebCore::String& urlString, const WebCore::String& target, 
+    virtual WTF::String userAgent(const WebCore::KURL&);
+    virtual void loadURL(uint64_t requestID, const WTF::String& method, const WTF::String& urlString, const WTF::String& target, 
                          const WebCore::HTTPHeaderMap& headerFields, const Vector<char>& httpBody, bool allowPopups);
     virtual void cancelStreamLoad(uint64_t streamID);
     virtual void cancelManualStreamLoad();
     virtual NPObject* windowScriptNPObject();
     virtual NPObject* pluginElementNPObject();
-    virtual bool evaluate(NPObject*, const WebCore::String&scriptString, NPVariant* result, bool allowPopups);
-    virtual void setStatusbarText(const WebCore::String&);
+    virtual bool evaluate(NPObject*, const WTF::String&scriptString, NPVariant* result, bool allowPopups);
+    virtual void setStatusbarText(const WTF::String&);
     virtual bool isAcceleratedCompositingEnabled();
 
     // WebFrame::LoadListener
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h
index 35b9f96..cc7a35c 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h
@@ -83,17 +83,17 @@ private:
     
     virtual void setResizable(bool);
     
-    virtual void addMessageToConsole(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, const WebCore::String& message, unsigned int lineNumber, const WebCore::String& sourceID);
+    virtual void addMessageToConsole(WebCore::MessageSource, WebCore::MessageType, WebCore::MessageLevel, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceID);
     
     virtual bool canRunBeforeUnloadConfirmPanel();
-    virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame);
+    virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
     
     virtual void closeWindowSoon();
     
-    virtual void runJavaScriptAlert(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WebCore::String&);
-    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WebCore::String& message, const WebCore::String& defaultValue, WebCore::String& result);
-    virtual void setStatusbarText(const WebCore::String&);
+    virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
+    virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
+    virtual void setStatusbarText(const WTF::String&);
     virtual bool shouldInterruptJavaScript();
     virtual bool tabsToLinks() const;
     
@@ -114,12 +114,12 @@ private:
     virtual void scrollbarsModeDidChange() const;
     virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
     
-    virtual void setToolTip(const WebCore::String&, WebCore::TextDirection);
+    virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
     
     virtual void print(WebCore::Frame*);
     
 #if ENABLE(DATABASE)
-    virtual void exceededDatabaseQuota(WebCore::Frame*, const WebCore::String& databaseName);
+    virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String& databaseName);
 #endif
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
@@ -133,12 +133,12 @@ private:
 
     virtual void populateVisitedLinks();
     
-    virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WebCore::AtomicString& type, const WebCore::FloatRect& lineRect);
-    virtual void paintCustomHighlight(WebCore::Node*, const WebCore::AtomicString& type, const WebCore::FloatRect& boxRect, const WebCore::FloatRect& lineRect,
+    virtual WebCore::FloatRect customHighlightRect(WebCore::Node*, const WTF::AtomicString& type, const WebCore::FloatRect& lineRect);
+    virtual void paintCustomHighlight(WebCore::Node*, const WTF::AtomicString& type, const WebCore::FloatRect& boxRect, const WebCore::FloatRect& lineRect,
                                       bool behindText, bool entireLine);
     
-    virtual bool shouldReplaceWithGeneratedFileForUpload(const WebCore::String& path, WebCore::String& generatedFilename);
-    virtual WebCore::String generateReplacementFile(const WebCore::String& path);
+    virtual bool shouldReplaceWithGeneratedFileForUpload(const WTF::String& path, WTF::String& generatedFilename);
+    virtual WTF::String generateReplacementFile(const WTF::String& path);
     
     virtual bool paintCustomScrollbar(WebCore::GraphicsContext*, const WebCore::FloatRect&, WebCore::ScrollbarControlSize, 
                                       WebCore::ScrollbarControlState, WebCore::ScrollbarPart pressedPart, bool vertical,
@@ -151,7 +151,7 @@ private:
     virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
     
     virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
-    virtual void chooseIconForFiles(const Vector<WebCore::String>&, WebCore::FileChooser*);
+    virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
 
     virtual void setCursor(const WebCore::Cursor&);
     
@@ -186,7 +186,7 @@ private:
     virtual void setLastSetCursorToCurrentCursor();
 #endif
 
-    WebCore::String m_cachedToolTip;
+    WTF::String m_cachedToolTip;
     WebPage* m_page;
 };
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.h b/WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.h
index 2412576..d66906b 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebContextMenuClient.h
@@ -49,7 +49,7 @@ private:
     virtual void searchWithGoogle(const WebCore::Frame*);
     virtual void lookUpInDictionary(WebCore::Frame*);
     virtual bool isSpeaking();
-    virtual void speak(const WebCore::String&);
+    virtual void speak(const WTF::String&);
     virtual void stopSpeaking();
     
 #if PLATFORM(MAC)
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebDragClient.h b/WebKit2/WebProcess/WebCoreSupport/WebDragClient.h
index 9fb49e6..438fd4f 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebDragClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebDragClient.h
@@ -46,7 +46,7 @@ private:
     virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint);
 
     virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false);
-    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WebCore::String& label, WebCore::Frame*);
+    virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
 
     virtual void dragControllerDestroyed();
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h b/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h
index c0dba73..817caf9 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebEditorClient.h
@@ -57,7 +57,7 @@ private:
     virtual bool shouldBeginEditing(WebCore::Range*);
     virtual bool shouldEndEditing(WebCore::Range*);
     virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
-    virtual bool shouldInsertText(const WebCore::String&, WebCore::Range*, WebCore::EditorInsertAction);
+    virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
     virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting);
     
     virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*);
@@ -116,19 +116,19 @@ private:
     virtual void toggleAutomaticSpellingCorrection();
 #endif
 
-    virtual void ignoreWordInSpellDocument(const WebCore::String&);
-    virtual void learnWord(const WebCore::String&);
+    virtual void ignoreWordInSpellDocument(const WTF::String&);
+    virtual void learnWord(const WTF::String&);
     virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
-    virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String& misspelledWord);
+    virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String& misspelledWord);
     virtual void checkGrammarOfString(const UChar*, int length, Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
 #if PLATFORM(MAC) && !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
     virtual void checkTextOfParagraph(const UChar* text, int length, uint64_t checkingTypes, Vector<WebCore::TextCheckingResult>& results);
 #endif
-    virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail& detail);
-    virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
+    virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail& detail);
+    virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
     virtual void showSpellingUI(bool show);
     virtual bool spellingUIIsShowing();
-    virtual void getGuessesForWord(const WebCore::String&, Vector<WebCore::String>& guesses);
+    virtual void getGuessesForWord(const WTF::String&, Vector<WTF::String>& guesses);
     virtual void willSetInputMethodState();
     virtual void setInputMethodState(bool enabled);
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
index 58347a5..4bd638e 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
@@ -82,7 +82,7 @@ private:
     virtual void dispatchWillClose();
     virtual void dispatchDidReceiveIcon();
     virtual void dispatchDidStartProvisionalLoad();
-    virtual void dispatchDidReceiveTitle(const WebCore::String& title);
+    virtual void dispatchDidReceiveTitle(const WTF::String& title);
     virtual void dispatchDidChangeIcons();
     virtual void dispatchDidCommitLoad();
     virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
@@ -95,8 +95,8 @@ private:
     virtual WebCore::Frame* dispatchCreatePage();
     virtual void dispatchShow();
     
-    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WebCore::String& MIMEType, const WebCore::ResourceRequest&);
-    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WebCore::String& frameName);
+    virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WTF::String& MIMEType, const WebCore::ResourceRequest&);
+    virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
     virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, PassRefPtr<WebCore::FormState>);
     virtual void cancelPolicyCheck();
     
@@ -149,9 +149,9 @@ private:
     virtual bool shouldFallBack(const WebCore::ResourceError&);
     
     virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
-    virtual bool canShowMIMEType(const WebCore::String& MIMEType) const;
-    virtual bool representationExistsForURLScheme(const WebCore::String& URLScheme) const;
-    virtual WebCore::String generatedMIMETypeForURLScheme(const WebCore::String& URLScheme) const;
+    virtual bool canShowMIMEType(const WTF::String& MIMEType) const;
+    virtual bool representationExistsForURLScheme(const WTF::String& URLScheme) const;
+    virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String& URLScheme) const;
     
     virtual void frameLoadCompleted();
     virtual void saveViewStateToItem(WebCore::HistoryItem*);
@@ -161,9 +161,9 @@ private:
     virtual void prepareForDataSourceReplacement();
     
     virtual PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
-    virtual void setTitle(const WebCore::String& title, const WebCore::KURL&);
+    virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
     
-    virtual WebCore::String userAgent(const WebCore::KURL&);
+    virtual WTF::String userAgent(const WebCore::KURL&);
     
     virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
     virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
@@ -172,17 +172,17 @@ private:
     virtual bool canCachePage() const;
     virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
     
-    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
-                                          const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
+    virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
+                                          const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
     virtual void didTransferChildFrameToNewDocument();
     
-    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WebCore::String>&, const Vector<WebCore::String>&, const WebCore::String&, bool loadManually);
+    virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const Vector<WTF::String>&, const Vector<WTF::String>&, const WTF::String&, bool loadManually);
     virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
     
-    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WebCore::String>& paramNames, const Vector<WebCore::String>& paramValues);
+    virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const Vector<WTF::String>& paramNames, const Vector<WTF::String>& paramValues);
     
-    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WebCore::String& mimeType);
-    virtual WebCore::String overrideMediaType() const;
+    virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+    virtual WTF::String overrideMediaType() const;
 
     virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
 
@@ -201,9 +201,9 @@ private:
     virtual bool shouldCacheResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&, const unsigned char* data, unsigned long long length);
 #endif
     
-    virtual bool shouldUsePluginDocument(const WebCore::String& /*mimeType*/) const;
+    virtual bool shouldUsePluginDocument(const WTF::String& /*mimeType*/) const;
     
-    void receivedData(const char* data, int length, const WebCore::String& textEncoding);
+    void receivedData(const char* data, int length, const WTF::String& textEncoding);
     
     WebFrame* m_frame;
     
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h b/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h
index c0c4681..ef8c6a5 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h
@@ -46,9 +46,9 @@ private:
 
     virtual WebCore::Page* createPage();
     
-    virtual WebCore::String localizedStringsURL();
+    virtual WTF::String localizedStringsURL();
     
-    virtual WebCore::String hiddenPanels();
+    virtual WTF::String hiddenPanels();
     
     virtual void showWindow();
     virtual void closeWindow();
@@ -61,12 +61,12 @@ private:
     virtual void highlight(WebCore::Node*);
     virtual void hideHighlight();
     
-    virtual void inspectedURLChanged(const WebCore::String& newURL);
+    virtual void inspectedURLChanged(const WTF::String& newURL);
 
-    virtual void populateSetting(const WebCore::String& key, WebCore::String* value);
-    virtual void storeSetting(const WebCore::String& key, const WebCore::String& value);
+    virtual void populateSetting(const WTF::String& key, WTF::String* value);
+    virtual void storeSetting(const WTF::String& key, const WTF::String& value);
 
-    virtual bool sendMessageToFrontend(const WebCore::String&);
+    virtual bool sendMessageToFrontend(const WTF::String&);
 
     virtual void inspectorWindowObjectCleared();
     
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
index 0868572..642b9fc 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
@@ -52,124 +52,124 @@ private:
     virtual void getPluginInfo(Vector<WebCore::PluginInfo>&);
 
     // WebCore::LocalizationStrategy    
-    virtual WebCore::String inputElementAltText();
-    virtual WebCore::String resetButtonDefaultLabel();
-    virtual WebCore::String searchableIndexIntroduction();
-    virtual WebCore::String submitButtonDefaultLabel();
-    virtual WebCore::String fileButtonChooseFileLabel();
-    virtual WebCore::String fileButtonNoFileSelectedLabel();
+    virtual WTF::String inputElementAltText();
+    virtual WTF::String resetButtonDefaultLabel();
+    virtual WTF::String searchableIndexIntroduction();
+    virtual WTF::String submitButtonDefaultLabel();
+    virtual WTF::String fileButtonChooseFileLabel();
+    virtual WTF::String fileButtonNoFileSelectedLabel();
 #if PLATFORM(MAC)
-    virtual WebCore::String copyImageUnknownFileLabel();
+    virtual WTF::String copyImageUnknownFileLabel();
 #endif
 #if ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String contextMenuItemTagOpenLinkInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadLinkToDisk();
-    virtual WebCore::String contextMenuItemTagCopyLinkToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenImageInNewWindow();
-    virtual WebCore::String contextMenuItemTagDownloadImageToDisk();
-    virtual WebCore::String contextMenuItemTagCopyImageToClipboard();
-    virtual WebCore::String contextMenuItemTagOpenFrameInNewWindow();
-    virtual WebCore::String contextMenuItemTagCopy();
-    virtual WebCore::String contextMenuItemTagGoBack();
-    virtual WebCore::String contextMenuItemTagGoForward();
-    virtual WebCore::String contextMenuItemTagStop();
-    virtual WebCore::String contextMenuItemTagReload();
-    virtual WebCore::String contextMenuItemTagCut();
-    virtual WebCore::String contextMenuItemTagPaste();
+    virtual WTF::String contextMenuItemTagOpenLinkInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadLinkToDisk();
+    virtual WTF::String contextMenuItemTagCopyLinkToClipboard();
+    virtual WTF::String contextMenuItemTagOpenImageInNewWindow();
+    virtual WTF::String contextMenuItemTagDownloadImageToDisk();
+    virtual WTF::String contextMenuItemTagCopyImageToClipboard();
+    virtual WTF::String contextMenuItemTagOpenFrameInNewWindow();
+    virtual WTF::String contextMenuItemTagCopy();
+    virtual WTF::String contextMenuItemTagGoBack();
+    virtual WTF::String contextMenuItemTagGoForward();
+    virtual WTF::String contextMenuItemTagStop();
+    virtual WTF::String contextMenuItemTagReload();
+    virtual WTF::String contextMenuItemTagCut();
+    virtual WTF::String contextMenuItemTagPaste();
 #if PLATFORM(GTK)
-    virtual WebCore::String contextMenuItemTagDelete();
-    virtual WebCore::String contextMenuItemTagSelectAll();
-    virtual WebCore::String contextMenuItemTagInputMethods();
-    virtual WebCore::String contextMenuItemTagUnicode();
+    virtual WTF::String contextMenuItemTagDelete();
+    virtual WTF::String contextMenuItemTagSelectAll();
+    virtual WTF::String contextMenuItemTagInputMethods();
+    virtual WTF::String contextMenuItemTagUnicode();
 #endif
-    virtual WebCore::String contextMenuItemTagNoGuessesFound();
-    virtual WebCore::String contextMenuItemTagIgnoreSpelling();
-    virtual WebCore::String contextMenuItemTagLearnSpelling();
-    virtual WebCore::String contextMenuItemTagSearchWeb();
-    virtual WebCore::String contextMenuItemTagLookUpInDictionary();
-    virtual WebCore::String contextMenuItemTagOpenLink();
-    virtual WebCore::String contextMenuItemTagIgnoreGrammar();
-    virtual WebCore::String contextMenuItemTagSpellingMenu();
-    virtual WebCore::String contextMenuItemTagShowSpellingPanel(bool show);
-    virtual WebCore::String contextMenuItemTagCheckSpelling();
-    virtual WebCore::String contextMenuItemTagCheckSpellingWhileTyping();
-    virtual WebCore::String contextMenuItemTagCheckGrammarWithSpelling();
-    virtual WebCore::String contextMenuItemTagFontMenu();
-    virtual WebCore::String contextMenuItemTagBold();
-    virtual WebCore::String contextMenuItemTagItalic();
-    virtual WebCore::String contextMenuItemTagUnderline();
-    virtual WebCore::String contextMenuItemTagOutline();
-    virtual WebCore::String contextMenuItemTagWritingDirectionMenu();
-    virtual WebCore::String contextMenuItemTagTextDirectionMenu();
-    virtual WebCore::String contextMenuItemTagDefaultDirection();
-    virtual WebCore::String contextMenuItemTagLeftToRight();
-    virtual WebCore::String contextMenuItemTagRightToLeft();
+    virtual WTF::String contextMenuItemTagNoGuessesFound();
+    virtual WTF::String contextMenuItemTagIgnoreSpelling();
+    virtual WTF::String contextMenuItemTagLearnSpelling();
+    virtual WTF::String contextMenuItemTagSearchWeb();
+    virtual WTF::String contextMenuItemTagLookUpInDictionary();
+    virtual WTF::String contextMenuItemTagOpenLink();
+    virtual WTF::String contextMenuItemTagIgnoreGrammar();
+    virtual WTF::String contextMenuItemTagSpellingMenu();
+    virtual WTF::String contextMenuItemTagShowSpellingPanel(bool show);
+    virtual WTF::String contextMenuItemTagCheckSpelling();
+    virtual WTF::String contextMenuItemTagCheckSpellingWhileTyping();
+    virtual WTF::String contextMenuItemTagCheckGrammarWithSpelling();
+    virtual WTF::String contextMenuItemTagFontMenu();
+    virtual WTF::String contextMenuItemTagBold();
+    virtual WTF::String contextMenuItemTagItalic();
+    virtual WTF::String contextMenuItemTagUnderline();
+    virtual WTF::String contextMenuItemTagOutline();
+    virtual WTF::String contextMenuItemTagWritingDirectionMenu();
+    virtual WTF::String contextMenuItemTagTextDirectionMenu();
+    virtual WTF::String contextMenuItemTagDefaultDirection();
+    virtual WTF::String contextMenuItemTagLeftToRight();
+    virtual WTF::String contextMenuItemTagRightToLeft();
 #if PLATFORM(MAC)
-    virtual WebCore::String contextMenuItemTagSearchInSpotlight();
-    virtual WebCore::String contextMenuItemTagShowFonts();
-    virtual WebCore::String contextMenuItemTagStyles();
-    virtual WebCore::String contextMenuItemTagShowColors();
-    virtual WebCore::String contextMenuItemTagSpeechMenu();
-    virtual WebCore::String contextMenuItemTagStartSpeaking();
-    virtual WebCore::String contextMenuItemTagStopSpeaking();
-    virtual WebCore::String contextMenuItemTagCorrectSpellingAutomatically();
-    virtual WebCore::String contextMenuItemTagSubstitutionsMenu();
-    virtual WebCore::String contextMenuItemTagShowSubstitutions(bool show);
-    virtual WebCore::String contextMenuItemTagSmartCopyPaste();
-    virtual WebCore::String contextMenuItemTagSmartQuotes();
-    virtual WebCore::String contextMenuItemTagSmartDashes();
-    virtual WebCore::String contextMenuItemTagSmartLinks();
-    virtual WebCore::String contextMenuItemTagTextReplacement();
-    virtual WebCore::String contextMenuItemTagTransformationsMenu();
-    virtual WebCore::String contextMenuItemTagMakeUpperCase();
-    virtual WebCore::String contextMenuItemTagMakeLowerCase();
-    virtual WebCore::String contextMenuItemTagCapitalize();
-    virtual WebCore::String contextMenuItemTagChangeBack(const WebCore::String& replacedString);
+    virtual WTF::String contextMenuItemTagSearchInSpotlight();
+    virtual WTF::String contextMenuItemTagShowFonts();
+    virtual WTF::String contextMenuItemTagStyles();
+    virtual WTF::String contextMenuItemTagShowColors();
+    virtual WTF::String contextMenuItemTagSpeechMenu();
+    virtual WTF::String contextMenuItemTagStartSpeaking();
+    virtual WTF::String contextMenuItemTagStopSpeaking();
+    virtual WTF::String contextMenuItemTagCorrectSpellingAutomatically();
+    virtual WTF::String contextMenuItemTagSubstitutionsMenu();
+    virtual WTF::String contextMenuItemTagShowSubstitutions(bool show);
+    virtual WTF::String contextMenuItemTagSmartCopyPaste();
+    virtual WTF::String contextMenuItemTagSmartQuotes();
+    virtual WTF::String contextMenuItemTagSmartDashes();
+    virtual WTF::String contextMenuItemTagSmartLinks();
+    virtual WTF::String contextMenuItemTagTextReplacement();
+    virtual WTF::String contextMenuItemTagTransformationsMenu();
+    virtual WTF::String contextMenuItemTagMakeUpperCase();
+    virtual WTF::String contextMenuItemTagMakeLowerCase();
+    virtual WTF::String contextMenuItemTagCapitalize();
+    virtual WTF::String contextMenuItemTagChangeBack(const WTF::String& replacedString);
 #endif
-    virtual WebCore::String contextMenuItemTagInspectElement();
+    virtual WTF::String contextMenuItemTagInspectElement();
 #endif // ENABLE(CONTEXT_MENUS)
-    virtual WebCore::String searchMenuNoRecentSearchesText();
-    virtual WebCore::String searchMenuRecentSearchesText();
-    virtual WebCore::String searchMenuClearRecentSearchesText();
-    virtual WebCore::String AXWebAreaText();
-    virtual WebCore::String AXLinkText();
-    virtual WebCore::String AXListMarkerText();
-    virtual WebCore::String AXImageMapText();
-    virtual WebCore::String AXHeadingText();
-    virtual WebCore::String AXDefinitionListTermText();
-    virtual WebCore::String AXDefinitionListDefinitionText();
+    virtual WTF::String searchMenuNoRecentSearchesText();
+    virtual WTF::String searchMenuRecentSearchesText();
+    virtual WTF::String searchMenuClearRecentSearchesText();
+    virtual WTF::String AXWebAreaText();
+    virtual WTF::String AXLinkText();
+    virtual WTF::String AXListMarkerText();
+    virtual WTF::String AXImageMapText();
+    virtual WTF::String AXHeadingText();
+    virtual WTF::String AXDefinitionListTermText();
+    virtual WTF::String AXDefinitionListDefinitionText();
 #if PLATFORM(MAC)
-    virtual WebCore::String AXARIAContentGroupText(const WebCore::String& ariaType);
+    virtual WTF::String AXARIAContentGroupText(const WTF::String& ariaType);
 #endif
-    virtual WebCore::String AXButtonActionVerb();
-    virtual WebCore::String AXRadioButtonActionVerb();
-    virtual WebCore::String AXTextFieldActionVerb();
-    virtual WebCore::String AXCheckedCheckBoxActionVerb();
-    virtual WebCore::String AXUncheckedCheckBoxActionVerb();
-    virtual WebCore::String AXMenuListActionVerb();
-    virtual WebCore::String AXMenuListPopupActionVerb();
-    virtual WebCore::String AXLinkActionVerb();
-    virtual WebCore::String missingPluginText();
-    virtual WebCore::String crashedPluginText();
-    virtual WebCore::String multipleFileUploadText(unsigned numberOfFiles);
-    virtual WebCore::String unknownFileSizeText();
+    virtual WTF::String AXButtonActionVerb();
+    virtual WTF::String AXRadioButtonActionVerb();
+    virtual WTF::String AXTextFieldActionVerb();
+    virtual WTF::String AXCheckedCheckBoxActionVerb();
+    virtual WTF::String AXUncheckedCheckBoxActionVerb();
+    virtual WTF::String AXMenuListActionVerb();
+    virtual WTF::String AXMenuListPopupActionVerb();
+    virtual WTF::String AXLinkActionVerb();
+    virtual WTF::String missingPluginText();
+    virtual WTF::String crashedPluginText();
+    virtual WTF::String multipleFileUploadText(unsigned numberOfFiles);
+    virtual WTF::String unknownFileSizeText();
 #if PLATFORM(WIN)
-    virtual WebCore::String uploadFileText();
-    virtual WebCore::String allFilesText();
+    virtual WTF::String uploadFileText();
+    virtual WTF::String allFilesText();
 #endif
-    virtual WebCore::String imageTitle(const WebCore::String& filename, const WebCore::IntSize& size);
-    virtual WebCore::String mediaElementLoadingStateText();
-    virtual WebCore::String mediaElementLiveBroadcastStateText();
-    virtual WebCore::String localizedMediaControlElementString(const WebCore::String&);
-    virtual WebCore::String localizedMediaControlElementHelpText(const WebCore::String&);
-    virtual WebCore::String localizedMediaTimeDescription(float);
-    virtual WebCore::String validationMessageValueMissingText();
-    virtual WebCore::String validationMessageTypeMismatchText();
-    virtual WebCore::String validationMessagePatternMismatchText();
-    virtual WebCore::String validationMessageTooLongText();
-    virtual WebCore::String validationMessageRangeUnderflowText();
-    virtual WebCore::String validationMessageRangeOverflowText();
-    virtual WebCore::String validationMessageStepMismatchText();
+    virtual WTF::String imageTitle(const WTF::String& filename, const WebCore::IntSize& size);
+    virtual WTF::String mediaElementLoadingStateText();
+    virtual WTF::String mediaElementLiveBroadcastStateText();
+    virtual WTF::String localizedMediaControlElementString(const WTF::String&);
+    virtual WTF::String localizedMediaControlElementHelpText(const WTF::String&);
+    virtual WTF::String localizedMediaTimeDescription(float);
+    virtual WTF::String validationMessageValueMissingText();
+    virtual WTF::String validationMessageTypeMismatchText();
+    virtual WTF::String validationMessagePatternMismatchText();
+    virtual WTF::String validationMessageTooLongText();
+    virtual WTF::String validationMessageRangeUnderflowText();
+    virtual WTF::String validationMessageRangeOverflowText();
+    virtual WTF::String validationMessageStepMismatchText();
 
     void populatePluginCache();
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp b/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp
index 7cea5ac..98a8c27 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.cpp
@@ -33,11 +33,11 @@ WebCore::PopupMenu* WebSearchPopupMenu::popupMenu()
     return m_popup.get();
 }
 
-void WebSearchPopupMenu::saveRecentSearches(const WebCore::AtomicString&, const Vector<WebCore::String>&)
+void WebSearchPopupMenu::saveRecentSearches(const WTF::AtomicString&, const Vector<WTF::String>&)
 {
 }
 
-void WebSearchPopupMenu::loadRecentSearches(const WebCore::AtomicString&, Vector<WebCore::String>&)
+void WebSearchPopupMenu::loadRecentSearches(const WTF::AtomicString&, Vector<WTF::String>&)
 {
 }
 
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.h b/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.h
index 53b6fb5..bd0e8a8 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebSearchPopupMenu.h
@@ -31,8 +31,8 @@ public:
     WebSearchPopupMenu(WebCore::PopupMenuClient*);
 
     virtual WebCore::PopupMenu* popupMenu();
-    virtual void saveRecentSearches(const WebCore::AtomicString& name, const Vector<WebCore::String>& searchItems);
-    virtual void loadRecentSearches(const WebCore::AtomicString& name, Vector<WebCore::String>& searchItems);
+    virtual void saveRecentSearches(const WTF::AtomicString& name, const Vector<WTF::String>& searchItems);
+    virtual void loadRecentSearches(const WTF::AtomicString& name, Vector<WTF::String>& searchItems);
     virtual bool enabled();
 
 private:
diff --git a/WebKit2/WebProcess/WebPage/WebFrame.h b/WebKit2/WebProcess/WebPage/WebFrame.h
index c8d04ac..d78044c 100644
--- a/WebKit2/WebProcess/WebPage/WebFrame.h
+++ b/WebKit2/WebProcess/WebPage/WebFrame.h
@@ -33,13 +33,13 @@
 #include <WebCore/FrameLoaderClient.h>
 #include <WebCore/FrameLoaderTypes.h>
 #include <WebCore/PolicyChecker.h>
+#include <wtf/Forward.h>
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 
 namespace WebCore {
     class Frame;
     class HTMLFrameOwnerElement;
-    class String;
 }
 
 namespace WebKit {
@@ -53,7 +53,7 @@ public:
     static const Type APIType = TypeBundleFrame;
 
     static PassRefPtr<WebFrame> createMainFrame(WebPage*);
-    static PassRefPtr<WebFrame> createSubframe(WebPage*, const WebCore::String& frameName, WebCore::HTMLFrameOwnerElement*);
+    static PassRefPtr<WebFrame> createSubframe(WebPage*, const WTF::String& frameName, WebCore::HTMLFrameOwnerElement*);
     ~WebFrame();
 
     // Called when the FrameLoaderClient (and therefore the WebCore::Frame) is being torn down.
@@ -70,9 +70,9 @@ public:
 
     // WKBundleFrame API and SPI functions
     bool isMainFrame() const;
-    WebCore::String name() const;
-    WebCore::String url() const;
-    WebCore::String innerText() const;
+    WTF::String name() const;
+    WTF::String url() const;
+    WTF::String innerText() const;
     PassRefPtr<ImmutableArray> childFrames();
     JSValueRef computedStyleIncludingVisitedInfo(JSObjectRef element);
     JSGlobalContextRef jsContext();
@@ -80,11 +80,11 @@ public:
 
     JSValueRef jsWrapperForWorld(InjectedBundleNodeHandle*, InjectedBundleScriptWorld*);
 
-    static WebCore::String counterValue(JSObjectRef element);
-    static WebCore::String markerText(JSObjectRef element);
+    static WTF::String counterValue(JSObjectRef element);
+    static WTF::String markerText(JSObjectRef element);
 
     unsigned numberOfActiveAnimations();
-    bool pauseAnimationOnElementWithId(const WebCore::String& animationName, const WebCore::String& elementID, double time);
+    bool pauseAnimationOnElementWithId(const WTF::String& animationName, const WTF::String& elementID, double time);
 
     unsigned pendingUnloadCount();
 
@@ -100,8 +100,8 @@ public:
     LoadListener* loadListener() const { return m_loadListener; }
 
 private:
-    static PassRefPtr<WebFrame> create(WebPage*, const WebCore::String& frameName, WebCore::HTMLFrameOwnerElement*);
-    WebFrame(WebPage*, const WebCore::String& frameName, WebCore::HTMLFrameOwnerElement*);
+    static PassRefPtr<WebFrame> create(WebPage*, const WTF::String& frameName, WebCore::HTMLFrameOwnerElement*);
+    WebFrame(WebPage*, const WTF::String& frameName, WebCore::HTMLFrameOwnerElement*);
 
     virtual Type type() const { return APIType; }
 
diff --git a/WebKit2/WebProcess/WebPage/WebPage.cpp b/WebKit2/WebProcess/WebPage/WebPage.cpp
index f2dfa6f..f85ea9f 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -429,7 +429,7 @@ void WebPage::show()
     WebProcess::shared().connection()->send(WebPageProxyMessage::ShowPage, m_pageID, CoreIPC::In());
 }
 
-void WebPage::runJavaScriptInMainFrame(const WebCore::String& script, uint64_t callbackID)
+void WebPage::runJavaScriptInMainFrame(const WTF::String& script, uint64_t callbackID)
 {
     // NOTE: We need to be careful when running scripts that the objects we depend on don't
     // disappear during script execution.
diff --git a/WebKit2/WebProcess/WebPage/WebPage.h b/WebKit2/WebProcess/WebPage/WebPage.h
index acc0da1..660286f 100644
--- a/WebKit2/WebProcess/WebPage/WebPage.h
+++ b/WebKit2/WebProcess/WebPage/WebPage.h
@@ -34,6 +34,7 @@
 #include "InjectedBundlePageUIClient.h"
 #include <WebCore/FrameLoaderTypes.h>
 #include <WebCore/IntRect.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/OwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -49,7 +50,6 @@ namespace WebCore {
     class GraphicsContext;
     class KeyboardEvent;
     class Page;
-    class String;
 }
 
 namespace WebKit {
@@ -108,9 +108,9 @@ public:
 
     WebFrame* mainFrame() const { return m_mainFrame.get(); }
 
-    WebCore::String renderTreeExternalRepresentation() const;
-    void executeEditingCommand(const WebCore::String& commandName, const WebCore::String& argument);
-    bool isEditingCommandEnabled(const WebCore::String& commandName);
+    WTF::String renderTreeExternalRepresentation() const;
+    void executeEditingCommand(const WTF::String& commandName, const WTF::String& argument);
+    bool isEditingCommandEnabled(const WTF::String& commandName);
     void clearMainFrameName();
     void sendClose();
 
@@ -133,7 +133,7 @@ private:
 
     // Actions
     void tryClose();
-    void loadURL(const WebCore::String&);
+    void loadURL(const WTF::String&);
     void stopLoading();
     void reload(bool reloadFromOrigin);
     void goForward(uint64_t);
@@ -145,7 +145,7 @@ private:
     void mouseEvent(const WebMouseEvent&);
     void wheelEvent(const WebWheelEvent&);
     void keyEvent(const WebKeyboardEvent&);
-    void runJavaScriptInMainFrame(const WebCore::String&, uint64_t callbackID);
+    void runJavaScriptInMainFrame(const WTF::String&, uint64_t callbackID);
     void getRenderTreeExternalRepresentation(uint64_t callbackID);
     void preferencesDidChange(const WebPreferencesStore&);
     void platformPreferencesDidChange(const WebPreferencesStore&);
diff --git a/WebKit2/WebProcess/WebProcess.cpp b/WebKit2/WebProcess/WebProcess.cpp
index 283ad1f..cc4528c 100644
--- a/WebKit2/WebProcess/WebProcess.cpp
+++ b/WebKit2/WebProcess/WebProcess.cpp
@@ -107,7 +107,7 @@ void WebProcess::setApplicationCacheDirectory(const String& directory)
     cacheStorage().setCacheDirectory(directory);
 }
 
-void WebProcess::registerURLSchemeAsEmptyDocument(const WebCore::String& urlScheme)
+void WebProcess::registerURLSchemeAsEmptyDocument(const WTF::String& urlScheme)
 {
     SchemeRegistry::registerURLSchemeAsEmptyDocument(urlScheme);
 }
diff --git a/WebKit2/WebProcess/WebProcess.h b/WebKit2/WebProcess/WebProcess.h
index 8a0111c..74c2002 100644
--- a/WebKit2/WebProcess/WebProcess.h
+++ b/WebKit2/WebProcess/WebProcess.h
@@ -31,11 +31,11 @@
 #include "SharedMemory.h"
 #include "VisitedLinkTable.h"
 #include <WebCore/LinkHash.h>
+#include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 
 namespace WebCore {
     class IntSize;
-    class String;
 }
 
 namespace WebKit {
@@ -73,12 +73,12 @@ private:
     void shutdown();
 
 #if ENABLE(WEB_PROCESS_SANDBOX)
-    void loadInjectedBundle(const WebCore::String&, const WebCore::String&);
+    void loadInjectedBundle(const WTF::String&, const WTF::String&);
 #else
-    void loadInjectedBundle(const WebCore::String&);
+    void loadInjectedBundle(const WTF::String&);
 #endif
-    void setApplicationCacheDirectory(const WebCore::String&);
-    void registerURLSchemeAsEmptyDocument(const WebCore::String&);
+    void setApplicationCacheDirectory(const WTF::String&);
+    void registerURLSchemeAsEmptyDocument(const WTF::String&);
 
     void setVisitedLinkTable(const SharedMemory::Handle&);
     void visitedLinkStateChanged(const Vector<WebCore::LinkHash>& linkHashes);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list