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

weinig at apple.com weinig at apple.com
Wed Dec 22 11:24:58 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 4977ae4e889f3c40db907061e32ae37bd76b1b6f
Author: weinig at apple.com <weinig at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jul 22 18:18:26 2010 +0000

    Patch for https://bugs.webkit.org/show_bug.cgi?id=42836
    Add localized strings stubs for WebKit2.
    
    Reviewed by Anders Carlsson.
    
    WebCore:
    
    - Convert WebKit (mac) to use a LocalizationStrategy rather than the WebCoreViewFactory
      for localized strings.
    
    Gets us below 200 tests failing in WebKitTestRunner.
    
    * WebCore.exp.in:
    * WebCore.xcodeproj/project.pbxproj:
    * page/mac/WebCoreViewFactory.h:
    * platform/LocalizationStrategy.h: Added.
    (WebCore::LocalizationStrategy::~LocalizationStrategy):
    * platform/PlatformStrategies.h:
    (WebCore::PlatformStrategies::pluginStrategy):
    (WebCore::PlatformStrategies::localizationStrategy):
    (WebCore::PlatformStrategies::PlatformStrategies):
    (WebCore::PlatformStrategies::~PlatformStrategies):
    * platform/mac/LocalizedStringsMac.mm:
    
    WebKit/mac:
    
    - Convert WebKit (mac) to use a LocalizationStrategy rather than the WebCoreViewFactory
      for localized strings.
    
    Gets us below 200 tests failing in WebKitTestRunner.
    
    * WebCoreSupport/WebContextMenuClient.mm:
    (fixMenusReceivedFromOldClients): Use LocalizedStrings rather than the factory.
    * WebCoreSupport/WebPlatformStrategies.h:
    * WebCoreSupport/WebPlatformStrategies.mm:
    * WebCoreSupport/WebViewFactory.mm:
    
    WebKit2:
    
    Gets us below 200 tests failing in WebKitTestRunner.
    
    * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
    * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@63904 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index c062a1f..b3165d1 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,27 @@
+2010-07-22  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Patch for https://bugs.webkit.org/show_bug.cgi?id=42836
+        Add localized strings stubs for WebKit2.
+
+        - Convert WebKit (mac) to use a LocalizationStrategy rather than the WebCoreViewFactory
+          for localized strings.
+
+        Gets us below 200 tests failing in WebKitTestRunner.
+
+        * WebCore.exp.in:
+        * WebCore.xcodeproj/project.pbxproj:
+        * page/mac/WebCoreViewFactory.h:
+        * platform/LocalizationStrategy.h: Added.
+        (WebCore::LocalizationStrategy::~LocalizationStrategy):
+        * platform/PlatformStrategies.h:
+        (WebCore::PlatformStrategies::pluginStrategy):
+        (WebCore::PlatformStrategies::localizationStrategy):
+        (WebCore::PlatformStrategies::PlatformStrategies):
+        (WebCore::PlatformStrategies::~PlatformStrategies):
+        * platform/mac/LocalizedStringsMac.mm:
+
 2010-07-22  Andras Becsi  <abecsi at webkit.org>
 
         Reviewed by Antonio Gomes.
diff --git a/WebCore/WebCore.exp.in b/WebCore/WebCore.exp.in
index 904cf6e..c2c29fe 100644
--- a/WebCore/WebCore.exp.in
+++ b/WebCore/WebCore.exp.in
@@ -450,6 +450,7 @@ __ZN7WebCore21reportThreadViolationEPKcNS_20ThreadViolationRoundE
 __ZN7WebCore21setPlatformStrategiesEPNS_18PlatformStrategiesE
 __ZN7WebCore22ScriptExecutionContext26canSuspendActiveDOMObjectsEv
 __ZN7WebCore22applicationIsAppleMailEv
+__ZN7WebCore22contextMenuItemTagBoldEv
 __ZN7WebCore22counterValueForElementEPNS_7ElementE
 __ZN7WebCore22createFragmentFromTextEPNS_5RangeERKNS_6StringE
 __ZN7WebCore22externalRepresentationEPNS_5FrameEj
@@ -461,6 +462,8 @@ __ZN7WebCore23ApplicationCacheStorage5emptyEv
 __ZN7WebCore23ReplaceSelectionCommandC1EPNS_8DocumentEN3WTF10PassRefPtrINS_16DocumentFragmentEEEbbbbbNS_10EditActionE
 __ZN7WebCore23createFragmentFromNodesEPNS_8DocumentERKN3WTF6VectorIPNS_4NodeELm0EEE
 __ZN7WebCore24BinaryPropertyListWriter17writePropertyListEv
+__ZN7WebCore24contextMenuItemTagItalicEv
+__ZN7WebCore24contextMenuItemTagStylesEv
 __ZN7WebCore24createFragmentFromMarkupEPNS_8DocumentERKNS_6StringES4_NS_27FragmentScriptingPermissionE
 __ZN7WebCore24decodeURLEscapeSequencesERKNS_6StringE
 __ZN7WebCore24notifyHistoryItemChangedE
@@ -474,21 +477,53 @@ __ZN7WebCore25PluginMainThreadScheduler12scheduleCallEP4_NPPPFvPvES3_
 __ZN7WebCore25PluginMainThreadScheduler14registerPluginEP4_NPP
 __ZN7WebCore25PluginMainThreadScheduler16unregisterPluginEP4_NPP
 __ZN7WebCore25PluginMainThreadScheduler9schedulerEv
+__ZN7WebCore25contextMenuItemTagOutlineEv
 __ZN7WebCore26CSSMutableStyleDeclarationC1Ev
 __ZN7WebCore26NetscapePlugInStreamLoader6createEPNS_5FrameEPNS_32NetscapePlugInStreamLoaderClientE
+__ZN7WebCore26contextMenuItemTagFontMenuEv
+__ZN7WebCore26contextMenuItemTagOpenLinkEv
 __ZN7WebCore26usesTestModeFocusRingColorEv
 __ZN7WebCore27CSSComputedStyleDeclarationC1EN3WTF10PassRefPtrINS_4NodeEEEbRKNS_6StringE
 __ZN7WebCore27applicationIsAdobeInstallerEv
+__ZN7WebCore27contextMenuItemTagShowFontsEv
+__ZN7WebCore27contextMenuItemTagUnderlineEv
+__ZN7WebCore28contextMenuItemTagCapitalizeEv
+__ZN7WebCore28contextMenuItemTagShowColorsEv
+__ZN7WebCore28contextMenuItemTagSmartLinksEv
+__ZN7WebCore28contextMenuItemTagSpeechMenuEv
+__ZN7WebCore29contextMenuItemTagLeftToRightEv
+__ZN7WebCore29contextMenuItemTagRightToLeftEv
+__ZN7WebCore29contextMenuItemTagSmartDashesEv
+__ZN7WebCore29contextMenuItemTagSmartQuotesEv
 __ZN7WebCore29isCharacterSmartReplaceExemptEib
 __ZN7WebCore29setUsesTestModeFocusRingColorEb
+__ZN7WebCore30contextMenuItemTagSpellingMenuEv
+__ZN7WebCore30contextMenuItemTagStopSpeakingEv
 __ZN7WebCore31CrossOriginPreflightResultCache5emptyEv
 __ZN7WebCore31CrossOriginPreflightResultCache6sharedEv
 __ZN7WebCore31applicationIsMicrosoftMessengerEv
+__ZN7WebCore31contextMenuItemTagCheckSpellingEv
+__ZN7WebCore31contextMenuItemTagIgnoreGrammarEv
+__ZN7WebCore31contextMenuItemTagMakeLowerCaseEv
+__ZN7WebCore31contextMenuItemTagMakeUpperCaseEv
+__ZN7WebCore31contextMenuItemTagStartSpeakingEv
+__ZN7WebCore32contextMenuItemTagInspectElementEv
+__ZN7WebCore32contextMenuItemTagSmartCopyPasteEv
 __ZN7WebCore32plainTextToMallocAllocatedBufferEPKNS_5RangeERjb
+__ZN7WebCore33contextMenuItemTagTextReplacementEv
 __ZN7WebCore33setDefaultThreadViolationBehaviorENS_23ThreadViolationBehaviorENS_20ThreadViolationRoundE
+__ZN7WebCore34contextMenuItemTagDefaultDirectionEv
+__ZN7WebCore35contextMenuItemTagShowSpellingPanelEb
+__ZN7WebCore35contextMenuItemTagShowSubstitutionsEb
+__ZN7WebCore35contextMenuItemTagSubstitutionsMenuEv
 __ZN7WebCore36InitializeLoggingChannelsIfNecessaryEv
+__ZN7WebCore37contextMenuItemTagTransformationsMenuEv
+__ZN7WebCore38contextMenuItemTagWritingDirectionMenuEv
 __ZN7WebCore3macERKNS_10CredentialE
 __ZN7WebCore3macERKNS_23AuthenticationChallengeE
+__ZN7WebCore42contextMenuItemTagCheckGrammarWithSpellingEv
+__ZN7WebCore42contextMenuItemTagCheckSpellingWhileTypingEv
+__ZN7WebCore46contextMenuItemTagCorrectSpellingAutomaticallyEv
 __ZN7WebCore4Font11setCodePathENS0_8CodePathE
 __ZN7WebCore4Font18shouldUseSmoothingEv
 __ZN7WebCore4Font21setShouldUseSmoothingEb
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 3110d76..f465146 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -2450,7 +2450,7 @@
 		934F71420D5A6F4400018D69 /* ResourceError.h in Headers */ = {isa = PBXBuildFile; fileRef = 934F71410D5A6F4400018D69 /* ResourceError.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		934F71440D5A6F5300018D69 /* AuthenticationChallenge.h in Headers */ = {isa = PBXBuildFile; fileRef = 934F71430D5A6F5300018D69 /* AuthenticationChallenge.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		934FE9E50B5CA539003E4A73 /* FileChooser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 934FE9E40B5CA539003E4A73 /* FileChooser.cpp */; };
-		935207BE09BD410A00F2038D /* LocalizedStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 935207BD09BD410A00F2038D /* LocalizedStrings.h */; };
+		935207BE09BD410A00F2038D /* LocalizedStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = 935207BD09BD410A00F2038D /* LocalizedStrings.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		935207C009BD412100F2038D /* LocalizedStringsMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 935207BF09BD412000F2038D /* LocalizedStringsMac.mm */; };
 		9352084509BD43B900F2038D /* Language.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9352084409BD43B900F2038D /* Language.mm */; };
 		9352087709BD453400F2038D /* CookieJar.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9352087609BD453400F2038D /* CookieJar.mm */; };
@@ -4503,6 +4503,7 @@
 		BC5A86850C33676000EEA649 /* DOMSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A86820C33676000EEA649 /* DOMSelection.h */; };
 		BC5A86B50C3367E800EEA649 /* JSDOMSelection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */; };
 		BC5A86B60C3367E800EEA649 /* JSDOMSelection.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */; };
+		BC5CFCA911F793320099ED09 /* LocalizationStrategy.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5CFCA811F793320099ED09 /* LocalizationStrategy.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		BC5EB5DB0E81B7EA00B25965 /* BorderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DA0E81B7EA00B25965 /* BorderValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		BC5EB5DD0E81B8DD00B25965 /* OutlineValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DC0E81B8DD00B25965 /* OutlineValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		BC5EB5DF0E81B9AB00B25965 /* CollapsedBorderValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5EB5DE0E81B9AB00B25965 /* CollapsedBorderValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -10125,6 +10126,7 @@
 		BC5A86830C33676000EEA649 /* DOMSelection.idl */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DOMSelection.idl; sourceTree = "<group>"; };
 		BC5A86B30C3367E800EEA649 /* JSDOMSelection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMSelection.cpp; sourceTree = "<group>"; };
 		BC5A86B40C3367E800EEA649 /* JSDOMSelection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSDOMSelection.h; sourceTree = "<group>"; };
+		BC5CFCA811F793320099ED09 /* LocalizationStrategy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalizationStrategy.h; sourceTree = "<group>"; };
 		BC5EB5DA0E81B7EA00B25965 /* BorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BorderValue.h; path = style/BorderValue.h; sourceTree = "<group>"; };
 		BC5EB5DC0E81B8DD00B25965 /* OutlineValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OutlineValue.h; path = style/OutlineValue.h; sourceTree = "<group>"; };
 		BC5EB5DE0E81B9AB00B25965 /* CollapsedBorderValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CollapsedBorderValue.h; path = style/CollapsedBorderValue.h; sourceTree = "<group>"; };
@@ -16222,6 +16224,7 @@
 				A7AD2F850EC89D07008AB002 /* LinkHash.cpp */,
 				A7AD2F860EC89D07008AB002 /* LinkHash.h */,
 				935207BD09BD410A00F2038D /* LocalizedStrings.h */,
+				BC5CFCA811F793320099ED09 /* LocalizationStrategy.h */,
 				A8239DFE09B3CF8A00B60641 /* Logging.cpp */,
 				A8239DFF09B3CF8A00B60641 /* Logging.h */,
 				BC772C4C0C4EB3040083285F /* MIMETypeRegistry.cpp */,
@@ -19838,6 +19841,7 @@
 				97DD4D870FDF4D6E00ECF9A4 /* XSSAuditor.h in Headers */,
 				CE172E011136E8CE0062A533 /* ZoomMode.h in Headers */,
 				8C6EA61A11EF7E0400FD8EE3 /* RuntimeEnabledFeatures.h in Headers */,
+				BC5CFCA911F793320099ED09 /* LocalizationStrategy.h in Headers */,
 				5162C7F511F77EFB00612EFE /* SchemeRegistry.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
diff --git a/WebCore/page/mac/WebCoreViewFactory.h b/WebCore/page/mac/WebCoreViewFactory.h
index 2ca0d17..9191abe 100644
--- a/WebCore/page/mac/WebCoreViewFactory.h
+++ b/WebCore/page/mac/WebCoreViewFactory.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003, 2005, 2009 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2003, 2005, 2009, 2010 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -28,83 +28,8 @@
 
 @protocol WebCoreViewFactory
 
-- (NSString *)inputElementAltText;
-- (NSString *)resetButtonDefaultLabel;
-- (NSString *)searchableIndexIntroduction;
-- (NSString *)submitButtonDefaultLabel;
-- (NSString *)fileButtonChooseFileLabel;
-- (NSString *)fileButtonNoFileSelectedLabel;
-- (NSString *)copyImageUnknownFileLabel;
-
-#if ENABLE(CONTEXT_MENUS)
-// Context menu item titles
-- (NSString *)contextMenuItemTagOpenLinkInNewWindow;
-- (NSString *)contextMenuItemTagDownloadLinkToDisk;
-- (NSString *)contextMenuItemTagCopyLinkToClipboard;
-- (NSString *)contextMenuItemTagOpenImageInNewWindow;
-- (NSString *)contextMenuItemTagDownloadImageToDisk;
-- (NSString *)contextMenuItemTagCopyImageToClipboard;
-- (NSString *)contextMenuItemTagOpenFrameInNewWindow;
-- (NSString *)contextMenuItemTagCopy;
-- (NSString *)contextMenuItemTagGoBack;
-- (NSString *)contextMenuItemTagGoForward;
-- (NSString *)contextMenuItemTagStop;
-- (NSString *)contextMenuItemTagReload;
-- (NSString *)contextMenuItemTagCut;
-- (NSString *)contextMenuItemTagPaste;
-- (NSString *)contextMenuItemTagNoGuessesFound;
-- (NSString *)contextMenuItemTagIgnoreSpelling;
-- (NSString *)contextMenuItemTagLearnSpelling;
-- (NSString *)contextMenuItemTagSearchInSpotlight;
-- (NSString *)contextMenuItemTagSearchWeb;
-- (NSString *)contextMenuItemTagLookUpInDictionary;
-- (NSString *)contextMenuItemTagOpenLink;
-- (NSString *)contextMenuItemTagIgnoreGrammar;
-- (NSString *)contextMenuItemTagSpellingMenu;
-- (NSString *)contextMenuItemTagShowSpellingPanel:(bool)show;
-- (NSString *)contextMenuItemTagCheckSpelling;
-- (NSString *)contextMenuItemTagCheckSpellingWhileTyping;
-- (NSString *)contextMenuItemTagCheckGrammarWithSpelling;
-- (NSString *)contextMenuItemTagFontMenu;
-- (NSString *)contextMenuItemTagShowFonts;
-- (NSString *)contextMenuItemTagBold;
-- (NSString *)contextMenuItemTagItalic;
-- (NSString *)contextMenuItemTagUnderline;
-- (NSString *)contextMenuItemTagOutline;
-- (NSString *)contextMenuItemTagStyles;
-- (NSString *)contextMenuItemTagShowColors;
-- (NSString *)contextMenuItemTagSpeechMenu;
-- (NSString *)contextMenuItemTagStartSpeaking;
-- (NSString *)contextMenuItemTagStopSpeaking;
-- (NSString *)contextMenuItemTagWritingDirectionMenu;
-- (NSString *)contextMenuItemTagTextDirectionMenu;
-- (NSString *)contextMenuItemTagDefaultDirection;
-- (NSString *)contextMenuItemTagLeftToRight;
-- (NSString *)contextMenuItemTagRightToLeft;
-- (NSString *)contextMenuItemTagCorrectSpellingAutomatically;
-- (NSString *)contextMenuItemTagSubstitutionsMenu;
-- (NSString *)contextMenuItemTagShowSubstitutions:(bool)show;
-- (NSString *)contextMenuItemTagSmartCopyPaste;
-- (NSString *)contextMenuItemTagSmartQuotes;
-- (NSString *)contextMenuItemTagSmartDashes;
-- (NSString *)contextMenuItemTagSmartLinks;
-- (NSString *)contextMenuItemTagTextReplacement;
-- (NSString *)contextMenuItemTagTransformationsMenu;
-- (NSString *)contextMenuItemTagMakeUpperCase;
-- (NSString *)contextMenuItemTagMakeLowerCase;
-- (NSString *)contextMenuItemTagCapitalize;
-- (NSString *)contextMenuItemTagChangeBack:(NSString *)replacedString;
-- (NSString *)contextMenuItemTagInspectElement;
-#endif // ENABLE(CONTEXT_MENUS)
-
-- (NSString *)searchMenuNoRecentSearchesText;
-- (NSString *)searchMenuRecentSearchesText;
-- (NSString *)searchMenuClearRecentSearchesText;
-
 - (NSString *)defaultLanguageCode;
 
-- (NSString *)imageTitleForFilename:(NSString *)filename width:(int)width height:(int)height;
-
 - (BOOL)objectIsTextMarker:(id)object;
 - (BOOL)objectIsTextMarkerRange:(id)object;
 
@@ -121,45 +46,6 @@
 - (AXUIElementRef)AXUIElementForElement:(id)element;
 - (void)unregisterUniqueIdForUIElement:(id)element;
 
-- (NSString *)AXWebAreaText;
-- (NSString *)AXLinkText;
-- (NSString *)AXListMarkerText;
-- (NSString *)AXImageMapText;
-- (NSString *)AXHeadingText;
-- (NSString *)AXDefinitionListTermText;
-- (NSString *)AXDefinitionListDefinitionText;
-- (NSString *)AXARIAContentGroupText:(NSString *)ariaType;
-
-- (NSString *)AXButtonActionVerb;
-- (NSString *)AXRadioButtonActionVerb;
-- (NSString *)AXTextFieldActionVerb;
-- (NSString *)AXCheckedCheckBoxActionVerb;
-- (NSString *)AXUncheckedCheckBoxActionVerb;
-- (NSString *)AXLinkActionVerb;
-- (NSString *)AXMenuListPopupActionVerb;
-- (NSString *)AXMenuListActionVerb;
-
-- (NSString *)missingPluginText;
-- (NSString *)crashedPluginText;
-
-- (NSString *)multipleFileUploadTextForNumberOfFiles:(unsigned)numberOfFiles;
-// FTP Directory Related
-- (NSString *)unknownFileSizeText;
-
-- (NSString *)mediaElementLoadingStateText;
-- (NSString *)mediaElementLiveBroadcastStateText;
-- (NSString*)localizedMediaControlElementString:(NSString*)name;
-- (NSString*)localizedMediaControlElementHelpText:(NSString*)name;
-- (NSString*)localizedMediaTimeDescription:(float)time;
-
-- (NSString *)validationMessageValueMissingText;
-- (NSString *)validationMessageTypeMismatchText;
-- (NSString *)validationMessagePatternMismatchText;
-- (NSString *)validationMessageTooLongText;
-- (NSString *)validationMessageRangeUnderflowText;
-- (NSString *)validationMessageRangeOverflowText;
-- (NSString *)validationMessageStepMismatchText;
-
 @end
 
 @interface WebCoreViewFactory : NSObject
diff --git a/WebCore/platform/LocalizationStrategy.h b/WebCore/platform/LocalizationStrategy.h
new file mode 100644
index 0000000..9bde316
--- /dev/null
+++ b/WebCore/platform/LocalizationStrategy.h
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2010 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef LocalizationStrategy_h
+#define LocalizationStrategy_h
+
+#if USE(PLATFORM_STRATEGIES)
+
+namespace WebCore {
+
+class String;
+class IntSize;
+
+class LocalizationStrategy {
+public:    
+    virtual String inputElementAltText() = 0;
+    virtual String resetButtonDefaultLabel() = 0;
+    virtual String searchableIndexIntroduction() = 0;
+    virtual String submitButtonDefaultLabel() = 0;
+    virtual String fileButtonChooseFileLabel() = 0;
+    virtual String fileButtonNoFileSelectedLabel() = 0;
+    virtual String copyImageUnknownFileLabel() = 0;
+
+#if ENABLE(CONTEXT_MENUS)
+    virtual String contextMenuItemTagOpenLinkInNewWindow() = 0;
+    virtual String contextMenuItemTagDownloadLinkToDisk() = 0;
+    virtual String contextMenuItemTagCopyLinkToClipboard() = 0;
+    virtual String contextMenuItemTagOpenImageInNewWindow() = 0;
+    virtual String contextMenuItemTagDownloadImageToDisk() = 0;
+    virtual String contextMenuItemTagCopyImageToClipboard() = 0;
+    virtual String contextMenuItemTagOpenFrameInNewWindow() = 0;
+    virtual String contextMenuItemTagCopy() = 0;
+    virtual String contextMenuItemTagGoBack() = 0;
+    virtual String contextMenuItemTagGoForward() = 0;
+    virtual String contextMenuItemTagStop() = 0;
+    virtual String contextMenuItemTagReload() = 0;
+    virtual String contextMenuItemTagCut() = 0;
+    virtual String contextMenuItemTagPaste() = 0;
+#if PLATFORM(GTK)
+    virtual String contextMenuItemTagDelete() = 0;
+    virtual String contextMenuItemTagSelectAll() = 0;
+    virtual String contextMenuItemTagInputMethods() = 0;
+    virtual String contextMenuItemTagUnicode() = 0;
+#endif
+    virtual String contextMenuItemTagNoGuessesFound() = 0;
+    virtual String contextMenuItemTagIgnoreSpelling() = 0;
+    virtual String contextMenuItemTagLearnSpelling() = 0;
+    virtual String contextMenuItemTagSearchWeb() = 0;
+    virtual String contextMenuItemTagLookUpInDictionary() = 0;
+    virtual String contextMenuItemTagOpenLink() = 0;
+    virtual String contextMenuItemTagIgnoreGrammar() = 0;
+    virtual String contextMenuItemTagSpellingMenu() = 0;
+    virtual String contextMenuItemTagShowSpellingPanel(bool show) = 0;
+    virtual String contextMenuItemTagCheckSpelling() = 0;
+    virtual String contextMenuItemTagCheckSpellingWhileTyping() = 0;
+    virtual String contextMenuItemTagCheckGrammarWithSpelling() = 0;
+    virtual String contextMenuItemTagFontMenu() = 0;
+    virtual String contextMenuItemTagBold() = 0;
+    virtual String contextMenuItemTagItalic() = 0;
+    virtual String contextMenuItemTagUnderline() = 0;
+    virtual String contextMenuItemTagOutline() = 0;
+    virtual String contextMenuItemTagWritingDirectionMenu() = 0;
+    virtual String contextMenuItemTagTextDirectionMenu() = 0;
+    virtual String contextMenuItemTagDefaultDirection() = 0;
+    virtual String contextMenuItemTagLeftToRight() = 0;
+    virtual String contextMenuItemTagRightToLeft() = 0;
+#if PLATFORM(MAC)
+    virtual String contextMenuItemTagSearchInSpotlight() = 0;
+    virtual String contextMenuItemTagShowFonts() = 0;
+    virtual String contextMenuItemTagStyles() = 0;
+    virtual String contextMenuItemTagShowColors() = 0;
+    virtual String contextMenuItemTagSpeechMenu() = 0;
+    virtual String contextMenuItemTagStartSpeaking() = 0;
+    virtual String contextMenuItemTagStopSpeaking() = 0;
+    virtual String contextMenuItemTagCorrectSpellingAutomatically() = 0;
+    virtual String contextMenuItemTagSubstitutionsMenu() = 0;
+    virtual String contextMenuItemTagShowSubstitutions(bool show) = 0;
+    virtual String contextMenuItemTagSmartCopyPaste() = 0;
+    virtual String contextMenuItemTagSmartQuotes() = 0;
+    virtual String contextMenuItemTagSmartDashes() = 0;
+    virtual String contextMenuItemTagSmartLinks() = 0;
+    virtual String contextMenuItemTagTextReplacement() = 0;
+    virtual String contextMenuItemTagTransformationsMenu() = 0;
+    virtual String contextMenuItemTagMakeUpperCase() = 0;
+    virtual String contextMenuItemTagMakeLowerCase() = 0;
+    virtual String contextMenuItemTagCapitalize() = 0;
+    virtual String contextMenuItemTagChangeBack(const String& replacedString) = 0;
+#endif
+    virtual String contextMenuItemTagInspectElement() = 0;
+#endif // ENABLE(CONTEXT_MENUS)
+
+    virtual String searchMenuNoRecentSearchesText() = 0;
+    virtual String searchMenuRecentSearchesText() = 0;
+    virtual String searchMenuClearRecentSearchesText() = 0;
+
+    virtual String AXWebAreaText() = 0;
+    virtual String AXLinkText() = 0;
+    virtual String AXListMarkerText() = 0;
+    virtual String AXImageMapText() = 0;
+    virtual String AXHeadingText() = 0;
+    virtual String AXDefinitionListTermText() = 0;
+    virtual String AXDefinitionListDefinitionText() = 0;
+    virtual String AXARIAContentGroupText(const String& ariaType) = 0;
+    
+    virtual String AXButtonActionVerb() = 0;
+    virtual String AXRadioButtonActionVerb() = 0;
+    virtual String AXTextFieldActionVerb() = 0;
+    virtual String AXCheckedCheckBoxActionVerb() = 0;
+    virtual String AXUncheckedCheckBoxActionVerb() = 0;
+    virtual String AXMenuListActionVerb() = 0;
+    virtual String AXMenuListPopupActionVerb() = 0;
+    virtual String AXLinkActionVerb() = 0;
+
+    virtual String missingPluginText() = 0;
+    virtual String crashedPluginText() = 0;
+    virtual String multipleFileUploadText(unsigned numberOfFiles) = 0;
+    virtual String unknownFileSizeText() = 0;
+
+#if PLATFORM(WIN)
+    virtual String uploadFileText() = 0;
+    virtual String allFilesText() = 0;
+#endif
+
+    virtual String imageTitle(const String& filename, const IntSize& size) = 0;
+
+    virtual String mediaElementLoadingStateText() = 0;
+    virtual String mediaElementLiveBroadcastStateText() = 0;
+    virtual String localizedMediaControlElementString(const String&) = 0;
+    virtual String localizedMediaControlElementHelpText(const String&) = 0;
+    virtual String localizedMediaTimeDescription(float) = 0;
+
+    virtual String validationMessageValueMissingText() = 0;
+    virtual String validationMessageTypeMismatchText() = 0;
+    virtual String validationMessagePatternMismatchText() = 0;
+    virtual String validationMessageTooLongText() = 0;
+    virtual String validationMessageRangeUnderflowText() = 0;
+    virtual String validationMessageRangeOverflowText() = 0;
+    virtual String validationMessageStepMismatchText() = 0;
+
+protected:
+    virtual ~LocalizationStrategy()
+    {
+    }
+};
+
+} // namespace WebCore
+
+#endif // USE(PLATFORM_STRATEGIES)
+
+#endif // LocalizationStrategy_h
diff --git a/WebCore/platform/PlatformStrategies.h b/WebCore/platform/PlatformStrategies.h
index 22da3ac..d450587 100644
--- a/WebCore/platform/PlatformStrategies.h
+++ b/WebCore/platform/PlatformStrategies.h
@@ -31,6 +31,7 @@
 namespace WebCore {
 
 class PluginStrategy;
+class LocalizationStrategy;
 
 class PlatformStrategies {
 public:
@@ -38,21 +39,32 @@ public:
     {
         if (!m_pluginStrategy)
             m_pluginStrategy = createPluginStrategy();
-
         return m_pluginStrategy;
     }
 
+    LocalizationStrategy* localizationStrategy()
+    {
+        if (!m_localizationStrategy)
+            m_localizationStrategy = createLocalizationStrategy();
+        return m_localizationStrategy;
+    }
+
 protected:
     PlatformStrategies()
         : m_pluginStrategy(0)
     {
     }
-    virtual ~PlatformStrategies() { }
 
-private:    
+    virtual ~PlatformStrategies()
+    {
+    }
+
+private:
     virtual PluginStrategy* createPluginStrategy() = 0;
+    virtual LocalizationStrategy* createLocalizationStrategy() = 0;
 
     PluginStrategy* m_pluginStrategy;
+    LocalizationStrategy* m_localizationStrategy;
 };
 
 PlatformStrategies* platformStrategies();
diff --git a/WebCore/platform/mac/LocalizedStringsMac.mm b/WebCore/platform/mac/LocalizedStringsMac.mm
index 510249a..8b7df04 100644
--- a/WebCore/platform/mac/LocalizedStringsMac.mm
+++ b/WebCore/platform/mac/LocalizedStringsMac.mm
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2003, 2006, 2009 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2003, 2006, 2009, 2010 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -26,813 +26,514 @@
 #import "config.h"
 #import "LocalizedStrings.h"
 
-#import "BlockExceptions.h"
 #import "IntSize.h"
+#import "LocalizationStrategy.h"
+#import "PlatformStrategies.h"
 #import "PlatformString.h"
-#import "WebCoreViewFactory.h"
 
 namespace WebCore {
 
 String inputElementAltText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] inputElementAltText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->inputElementAltText();
 }
 
 String resetButtonDefaultLabel()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] resetButtonDefaultLabel];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->resetButtonDefaultLabel();
 }
 
 String searchableIndexIntroduction()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] searchableIndexIntroduction];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->searchableIndexIntroduction();
 }
 
 String submitButtonDefaultLabel()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] submitButtonDefaultLabel];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->submitButtonDefaultLabel();
 }
 
 String fileButtonChooseFileLabel()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] fileButtonChooseFileLabel];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->fileButtonChooseFileLabel();
 }
 
 String fileButtonNoFileSelectedLabel()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] fileButtonNoFileSelectedLabel];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->fileButtonNoFileSelectedLabel();
 }
 
 String copyImageUnknownFileLabel()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] copyImageUnknownFileLabel];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->copyImageUnknownFileLabel();
 }
 
 #if ENABLE(CONTEXT_MENUS)
 String contextMenuItemTagOpenLinkInNewWindow()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagOpenLinkInNewWindow];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagOpenLinkInNewWindow();
 }
 
 String contextMenuItemTagDownloadLinkToDisk()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagDownloadLinkToDisk];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagDownloadLinkToDisk();
 }
 
 String contextMenuItemTagCopyLinkToClipboard()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCopyLinkToClipboard];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCopyLinkToClipboard();
 }
 
 String contextMenuItemTagOpenImageInNewWindow()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagOpenImageInNewWindow];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagOpenImageInNewWindow();
 }
 
 String contextMenuItemTagDownloadImageToDisk()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagDownloadImageToDisk];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagDownloadImageToDisk();
 }
 
 String contextMenuItemTagCopyImageToClipboard()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCopyImageToClipboard];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCopyImageToClipboard();
 }
 
 String contextMenuItemTagOpenFrameInNewWindow()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagOpenFrameInNewWindow];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagOpenFrameInNewWindow();
 }
 
 String contextMenuItemTagCopy()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCopy];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCopy();
 }
 
 String contextMenuItemTagGoBack()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagGoBack];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagGoBack();
 }
 
 String contextMenuItemTagGoForward()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagGoForward];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagGoForward();
 }
 
 String contextMenuItemTagStop()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagStop];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagStop();
 }
 
 String contextMenuItemTagReload()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagReload];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagReload();
 }
 
 String contextMenuItemTagCut()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCut];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCut();
 }
 
 String contextMenuItemTagPaste()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagPaste];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagPaste();
 }
 
 String contextMenuItemTagNoGuessesFound()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagNoGuessesFound];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagNoGuessesFound();
 }
 
 String contextMenuItemTagIgnoreSpelling()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagIgnoreSpelling];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagIgnoreSpelling();
 }
 
 String contextMenuItemTagLearnSpelling()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagLearnSpelling];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagLearnSpelling();
 }
 
 String contextMenuItemTagSearchInSpotlight()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSearchInSpotlight];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSearchInSpotlight();
 }
 
 String contextMenuItemTagSearchWeb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSearchWeb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSearchWeb();
 }
 
 String contextMenuItemTagLookUpInDictionary()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagLookUpInDictionary];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagLookUpInDictionary();
 }
 
 String contextMenuItemTagOpenLink()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagOpenLink];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagOpenLink();
 }
 
 String contextMenuItemTagIgnoreGrammar()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagIgnoreGrammar];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagIgnoreGrammar();
 }
 
 String contextMenuItemTagSpellingMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSpellingMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSpellingMenu();
 }
 
 String contextMenuItemTagShowSpellingPanel(bool show)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagShowSpellingPanel:show];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagShowSpellingPanel(show);
 }
 
 String contextMenuItemTagCheckSpelling()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCheckSpelling];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCheckSpelling();
 }
 
 String contextMenuItemTagCheckSpellingWhileTyping()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCheckSpellingWhileTyping];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCheckSpellingWhileTyping();
 }
 
 String contextMenuItemTagCheckGrammarWithSpelling()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCheckGrammarWithSpelling];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCheckGrammarWithSpelling();
 }
 
 String contextMenuItemTagFontMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagFontMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagFontMenu();
 }
 
 String contextMenuItemTagShowFonts()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagShowFonts];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagShowFonts();
 }
 
 String contextMenuItemTagBold()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagBold];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagBold();
 }
 
 String contextMenuItemTagItalic()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagItalic];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagItalic();
 }
 
 String contextMenuItemTagUnderline()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagUnderline];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagUnderline();
 }
 
 String contextMenuItemTagOutline()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagOutline];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagOutline();
 }
 
 String contextMenuItemTagStyles()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagStyles];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagStyles();
 }
 
 String contextMenuItemTagShowColors()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagShowColors];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagShowColors();
 }
 
 String contextMenuItemTagSpeechMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSpeechMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSpeechMenu();
 }
 
 String contextMenuItemTagStartSpeaking()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagStartSpeaking];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagStartSpeaking();
 }
 
 String contextMenuItemTagStopSpeaking()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagStopSpeaking];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagStopSpeaking();
 }
 
 String contextMenuItemTagWritingDirectionMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagWritingDirectionMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagWritingDirectionMenu();
 }
 
 String contextMenuItemTagTextDirectionMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagTextDirectionMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagTextDirectionMenu();
 }
 
 String contextMenuItemTagDefaultDirection()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagDefaultDirection];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagDefaultDirection();
 }
 
 String contextMenuItemTagLeftToRight()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagLeftToRight];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagLeftToRight();
 }
 
 String contextMenuItemTagRightToLeft()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagRightToLeft];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagRightToLeft();
 }
 
 String contextMenuItemTagCorrectSpellingAutomatically()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCorrectSpellingAutomatically];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCorrectSpellingAutomatically();
 }
 
 String contextMenuItemTagSubstitutionsMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSubstitutionsMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSubstitutionsMenu();
 }
 
 String contextMenuItemTagShowSubstitutions(bool show)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagShowSubstitutions:show];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagShowSubstitutions(show);
 }
 
 String contextMenuItemTagSmartCopyPaste()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSmartCopyPaste];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSmartCopyPaste();
 }
 
 String contextMenuItemTagSmartQuotes()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSmartQuotes];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSmartQuotes();
 }
 
 String contextMenuItemTagSmartDashes()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSmartDashes];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSmartDashes();
 }
 
 String contextMenuItemTagSmartLinks()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagSmartLinks];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagSmartLinks();
 }
 
 String contextMenuItemTagTextReplacement()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagTextReplacement];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagTextReplacement();
 }
 
 String contextMenuItemTagTransformationsMenu()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagTransformationsMenu];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagTransformationsMenu();
 }
 
 String contextMenuItemTagMakeUpperCase()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagMakeUpperCase];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagMakeUpperCase();
 }
 
 String contextMenuItemTagMakeLowerCase()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagMakeLowerCase];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagMakeLowerCase();
 }
 
 String contextMenuItemTagCapitalize()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagCapitalize];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagCapitalize();
 }
 
 String contextMenuItemTagChangeBack(const String& replacedString)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagChangeBack:replacedString];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return replacedString;
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagChangeBack(replacedString);
 }
     
 String contextMenuItemTagInspectElement()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] contextMenuItemTagInspectElement];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->contextMenuItemTagInspectElement();
 }
+
 #endif // ENABLE(CONTEXT_MENUS)
 
 String searchMenuNoRecentSearchesText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] searchMenuNoRecentSearchesText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->searchMenuNoRecentSearchesText();
 }
 
 String searchMenuRecentSearchesText ()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] searchMenuRecentSearchesText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->searchMenuRecentSearchesText ();
 }
 
 String searchMenuClearRecentSearchesText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] searchMenuClearRecentSearchesText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->searchMenuClearRecentSearchesText();
 }
 
 String AXWebAreaText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXWebAreaText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXWebAreaText();
 }
 
 String AXLinkText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXLinkText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXLinkText();
 }
 
 String AXListMarkerText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXListMarkerText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXListMarkerText();
 }
 
 String AXImageMapText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXImageMapText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXImageMapText();
 }
 
 String AXHeadingText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXHeadingText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXHeadingText();
 }
 
 String AXDefinitionListTermText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXDefinitionListTermText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXDefinitionListTermText();
 }
-    
+
 String AXDefinitionListDefinitionText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXDefinitionListDefinitionText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXDefinitionListDefinitionText();
 }
-    
+
 String AXARIAContentGroupText(const String& ariaType)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXARIAContentGroupText:ariaType];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();        
+    return platformStrategies()->localizationStrategy()->AXARIAContentGroupText(ariaType);
 }
     
 String AXButtonActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXButtonActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXButtonActionVerb();
 }
 
 String AXRadioButtonActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXRadioButtonActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXRadioButtonActionVerb();
 }
 
 String AXTextFieldActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXTextFieldActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXTextFieldActionVerb();
 }
 
 String AXCheckedCheckBoxActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXCheckedCheckBoxActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXCheckedCheckBoxActionVerb();
 }
 
 String AXUncheckedCheckBoxActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXUncheckedCheckBoxActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXUncheckedCheckBoxActionVerb();
 }
 
 String AXLinkActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXLinkActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXLinkActionVerb();
 }
 
 String AXMenuListPopupActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXMenuListPopupActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXMenuListPopupActionVerb();
 }
 
 String AXMenuListActionVerb()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] AXMenuListActionVerb];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->AXMenuListActionVerb();
 }
 
 String missingPluginText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] missingPluginText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->missingPluginText();
 }
 
 String crashedPluginText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] crashedPluginText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->crashedPluginText();
 }
 
 String multipleFileUploadText(unsigned numberOfFiles)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] multipleFileUploadTextForNumberOfFiles:numberOfFiles];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->multipleFileUploadText(numberOfFiles);
 }
 
 String unknownFileSizeText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] unknownFileSizeText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->unknownFileSizeText();
 }
 
 String imageTitle(const String& filename, const IntSize& size)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] imageTitleForFilename:filename width:size.width() height:size.height()];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->imageTitle(filename, size);
 }
 
 String mediaElementLoadingStateText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] mediaElementLoadingStateText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->mediaElementLoadingStateText();
 }
 
 String mediaElementLiveBroadcastStateText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] mediaElementLiveBroadcastStateText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->mediaElementLiveBroadcastStateText();
 }
 
 String localizedMediaControlElementString(const String& controlName)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] localizedMediaControlElementString:controlName];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->localizedMediaControlElementString(controlName);
 }
 
 String localizedMediaControlElementHelpText(const String& controlName)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] localizedMediaControlElementHelpText:controlName];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->localizedMediaControlElementHelpText(controlName);
 }
 
 String localizedMediaTimeDescription(float time)
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] localizedMediaTimeDescription:time];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->localizedMediaTimeDescription(time);
 }
 
 String validationMessageValueMissingText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageValueMissingText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageValueMissingText();
 }
 
 String validationMessageTypeMismatchText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageTypeMismatchText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageTypeMismatchText();
 }
 
 String validationMessagePatternMismatchText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessagePatternMismatchText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessagePatternMismatchText();
 }
 
 String validationMessageTooLongText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageTooLongText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageTooLongText();
 }
 
 String validationMessageRangeUnderflowText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageRangeUnderflowText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageRangeUnderflowText();
 }
 
 String validationMessageRangeOverflowText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageRangeOverflowText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageRangeOverflowText();
 }
 
 String validationMessageStepMismatchText()
 {
-    BEGIN_BLOCK_OBJC_EXCEPTIONS;
-    return [[WebCoreViewFactory sharedFactory] validationMessageStepMismatchText];
-    END_BLOCK_OBJC_EXCEPTIONS;
-    return String();
+    return platformStrategies()->localizationStrategy()->validationMessageStepMismatchText();
 }
 
-}
+} // namespace WebCore
diff --git a/WebKit/mac/ChangeLog b/WebKit/mac/ChangeLog
index 4241a2e..57951da 100644
--- a/WebKit/mac/ChangeLog
+++ b/WebKit/mac/ChangeLog
@@ -1,3 +1,21 @@
+2010-07-22  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Patch for https://bugs.webkit.org/show_bug.cgi?id=42836
+        Add localized strings stubs for WebKit2.
+
+        - Convert WebKit (mac) to use a LocalizationStrategy rather than the WebCoreViewFactory
+          for localized strings.
+
+        Gets us below 200 tests failing in WebKitTestRunner.
+
+        * WebCoreSupport/WebContextMenuClient.mm:
+        (fixMenusReceivedFromOldClients): Use LocalizedStrings rather than the factory.
+        * WebCoreSupport/WebPlatformStrategies.h:
+        * WebCoreSupport/WebPlatformStrategies.mm:
+        * WebCoreSupport/WebViewFactory.mm:
+
 2010-07-21  Brady Eidson  <beidson at apple.com>
 
         Reviewed by Geoffrey Garen.
diff --git a/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm b/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm
index e4e069a..f3a85f0 100644
--- a/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm
+++ b/WebKit/mac/WebCoreSupport/WebContextMenuClient.mm
@@ -43,6 +43,7 @@
 #import "WebViewInternal.h"
 #import <WebCore/ContextMenu.h>
 #import <WebCore/KURL.h>
+#import <WebCore/LocalizedStrings.h>
 #import <WebCore/RuntimeApplicationChecks.h>
 #import <WebKit/DOMPrivate.h>
 
@@ -168,77 +169,77 @@ static void fixMenusReceivedFromOldClients(NSMutableArray *newMenuItems, NSMutab
         if (tag == WebMenuItemTagOther) {
             // Restore the specific tag for items on which we temporarily set WebMenuItemTagOther to match old behavior.
             NSString *title = [item title];
-            if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagOpenLink]])
+            if ([title isEqualToString:contextMenuItemTagOpenLink()])
                 modernTag = WebMenuItemTagOpenLink;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagIgnoreGrammar]])
+            else if ([title isEqualToString:contextMenuItemTagIgnoreGrammar()])
                 modernTag = WebMenuItemTagIgnoreGrammar;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSpellingMenu]])
+            else if ([title isEqualToString:contextMenuItemTagSpellingMenu()])
                 modernTag = WebMenuItemTagSpellingMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowSpellingPanel:true]]
-                     || [title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowSpellingPanel:false]])
+            else if ([title isEqualToString:contextMenuItemTagShowSpellingPanel(true)]
+                     || [title isEqualToString:contextMenuItemTagShowSpellingPanel(false)])
                 modernTag = WebMenuItemTagShowSpellingPanel;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagCheckSpelling]])
+            else if ([title isEqualToString:contextMenuItemTagCheckSpelling()])
                 modernTag = WebMenuItemTagCheckSpelling;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagCheckSpellingWhileTyping]])
+            else if ([title isEqualToString:contextMenuItemTagCheckSpellingWhileTyping()])
                 modernTag = WebMenuItemTagCheckSpellingWhileTyping;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagCheckGrammarWithSpelling]])
+            else if ([title isEqualToString:contextMenuItemTagCheckGrammarWithSpelling()])
                 modernTag = WebMenuItemTagCheckGrammarWithSpelling;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagFontMenu]])
+            else if ([title isEqualToString:contextMenuItemTagFontMenu()])
                 modernTag = WebMenuItemTagFontMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowFonts]])
+            else if ([title isEqualToString:contextMenuItemTagShowFonts()])
                 modernTag = WebMenuItemTagShowFonts;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagBold]])
+            else if ([title isEqualToString:contextMenuItemTagBold()])
                 modernTag = WebMenuItemTagBold;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagItalic]])
+            else if ([title isEqualToString:contextMenuItemTagItalic()])
                 modernTag = WebMenuItemTagItalic;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagUnderline]])
+            else if ([title isEqualToString:contextMenuItemTagUnderline()])
                 modernTag = WebMenuItemTagUnderline;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagOutline]])
+            else if ([title isEqualToString:contextMenuItemTagOutline()])
                 modernTag = WebMenuItemTagOutline;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagStyles]])
+            else if ([title isEqualToString:contextMenuItemTagStyles()])
                 modernTag = WebMenuItemTagStyles;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowColors]])
+            else if ([title isEqualToString:contextMenuItemTagShowColors()])
                 modernTag = WebMenuItemTagShowColors;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSpeechMenu]])
+            else if ([title isEqualToString:contextMenuItemTagSpeechMenu()])
                 modernTag = WebMenuItemTagSpeechMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagStartSpeaking]])
+            else if ([title isEqualToString:contextMenuItemTagStartSpeaking()])
                 modernTag = WebMenuItemTagStartSpeaking;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagStopSpeaking]])
+            else if ([title isEqualToString:contextMenuItemTagStopSpeaking()])
                 modernTag = WebMenuItemTagStopSpeaking;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagWritingDirectionMenu]])
+            else if ([title isEqualToString:contextMenuItemTagWritingDirectionMenu()])
                 modernTag = WebMenuItemTagWritingDirectionMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagDefaultDirection]])
+            else if ([title isEqualToString:contextMenuItemTagDefaultDirection()])
                 modernTag = WebMenuItemTagDefaultDirection;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagLeftToRight]])
+            else if ([title isEqualToString:contextMenuItemTagLeftToRight()])
                 modernTag = WebMenuItemTagLeftToRight;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagRightToLeft]])
+            else if ([title isEqualToString:contextMenuItemTagRightToLeft()])
                 modernTag = WebMenuItemTagRightToLeft;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagInspectElement]])
+            else if ([title isEqualToString:contextMenuItemTagInspectElement()])
                 modernTag = WebMenuItemTagInspectElement;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagCorrectSpellingAutomatically]])
+            else if ([title isEqualToString:contextMenuItemTagCorrectSpellingAutomatically()])
                 modernTag = WebMenuItemTagCorrectSpellingAutomatically;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSubstitutionsMenu]])
+            else if ([title isEqualToString:contextMenuItemTagSubstitutionsMenu()])
                 modernTag = WebMenuItemTagSubstitutionsMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowSubstitutions:true]]
-                     || [title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagShowSubstitutions:false]])
+            else if ([title isEqualToString:contextMenuItemTagShowSubstitutions(true)]
+                     || [title isEqualToString:contextMenuItemTagShowSubstitutions(false)])
                 modernTag = WebMenuItemTagShowSubstitutions;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSmartCopyPaste]])
+            else if ([title isEqualToString:contextMenuItemTagSmartCopyPaste()])
                 modernTag = WebMenuItemTagSmartCopyPaste;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSmartQuotes]])
+            else if ([title isEqualToString:contextMenuItemTagSmartQuotes()])
                 modernTag = WebMenuItemTagSmartQuotes;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSmartDashes]])
+            else if ([title isEqualToString:contextMenuItemTagSmartDashes()])
                 modernTag = WebMenuItemTagSmartDashes;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagSmartLinks]])
+            else if ([title isEqualToString:contextMenuItemTagSmartLinks()])
                 modernTag = WebMenuItemTagSmartLinks;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagTextReplacement]])
+            else if ([title isEqualToString:contextMenuItemTagTextReplacement()])
                 modernTag = WebMenuItemTagTextReplacement;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagTransformationsMenu]])
+            else if ([title isEqualToString:contextMenuItemTagTransformationsMenu()])
                 modernTag = WebMenuItemTagTransformationsMenu;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagMakeUpperCase]])
+            else if ([title isEqualToString:contextMenuItemTagMakeUpperCase()])
                 modernTag = WebMenuItemTagMakeUpperCase;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagMakeLowerCase]])
+            else if ([title isEqualToString:contextMenuItemTagMakeLowerCase()])
                 modernTag = WebMenuItemTagMakeLowerCase;
-            else if ([title isEqualToString:[[WebViewFactory sharedFactory] contextMenuItemTagCapitalize]])
+            else if ([title isEqualToString:contextMenuItemTagCapitalize()])
                 modernTag = WebMenuItemTagCapitalize;
             else {
             // We don't expect WebMenuItemTagOther for any items other than the ones we explicitly handle.
diff --git a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
index ce8bf9d..0ac4f16 100644
--- a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
+++ b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.h
@@ -28,8 +28,9 @@
 
 #include <WebCore/PlatformStrategies.h>
 #include <WebCore/PluginStrategy.h>
+#include <WebCore/LocalizationStrategy.h>
 
-class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::PluginStrategy {
+class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::PluginStrategy, private WebCore::LocalizationStrategy {
 public:
     static void initialize();
     
@@ -38,10 +39,115 @@ private:
     
     // WebCore::PlatformStrategies
     virtual WebCore::PluginStrategy* createPluginStrategy();
+    virtual WebCore::LocalizationStrategy* createLocalizationStrategy();
 
     // WebCore::PluginStrategy
     virtual void refreshPlugins();
     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();
+#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();
+#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();
 };
 
 #endif // WebPlatformStrategies_h
diff --git a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm
index d4bb684..6805f5e 100644
--- a/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm
+++ b/WebKit/mac/WebCoreSupport/WebPlatformStrategies.mm
@@ -25,9 +25,11 @@
 
 #import "WebPlatformStrategies.h"
 
+#import "WebLocalizableStrings.h"
 #import "WebPluginDatabase.h"
 #import "WebPluginPackage.h"
 #import <WebCore/BlockExceptions.h>
+#import <WebCore/IntSize.h>
 #import <wtf/StdLibExtras.h>
 
 #ifdef BUILDING_ON_TIGER
@@ -53,6 +55,11 @@ PluginStrategy* WebPlatformStrategies::createPluginStrategy()
     return this;
 }
 
+LocalizationStrategy* WebPlatformStrategies::createLocalizationStrategy()
+{
+    return this;
+}
+
 void WebPlatformStrategies::refreshPlugins()
 {
     [[WebPluginDatabase sharedDatabase] refresh];
@@ -72,4 +79,686 @@ void WebPlatformStrategies::getPluginInfo(Vector<WebCore::PluginInfo>& plugins)
     END_BLOCK_OBJC_EXCEPTIONS;
 }
 
+// LocalizationStrategy    
+
+String WebPlatformStrategies::inputElementAltText()
+{
+    return UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
+}
+
+String WebPlatformStrategies::resetButtonDefaultLabel()
+{
+    return UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
+}
+
+String WebPlatformStrategies::searchableIndexIntroduction()
+{
+    return UI_STRING("This is a searchable index. Enter search keywords: ",
+        "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
+}
+
+String WebPlatformStrategies::submitButtonDefaultLabel()
+{
+    return UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
+}
+
+String WebPlatformStrategies::fileButtonChooseFileLabel()
+{
+    return UI_STRING("Choose File", "title for file button used in HTML forms");
+}
+
+String WebPlatformStrategies::fileButtonNoFileSelectedLabel()
+{
+    return UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
+}
+
+String WebPlatformStrategies::copyImageUnknownFileLabel()
+{
+    return UI_STRING("unknown", "Unknown filename");
+}
+
+#if ENABLE(CONTEXT_MENUS)
+
+String WebPlatformStrategies::contextMenuItemTagOpenLinkInNewWindow()
+{
+    return UI_STRING("Open Link in New Window", "Open in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDownloadLinkToDisk()
+{
+    return UI_STRING("Download Linked File", "Download Linked File context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopyLinkToClipboard()
+{
+    return UI_STRING("Copy Link", "Copy Link context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenImageInNewWindow()
+{
+    return UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDownloadImageToDisk()
+{
+    return UI_STRING("Download Image", "Download Image context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopyImageToClipboard()
+{
+    return UI_STRING("Copy Image", "Copy Image context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenFrameInNewWindow()
+{
+    return UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopy()
+{
+    return UI_STRING("Copy", "Copy context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagGoBack()
+{
+    return UI_STRING("Back", "Back context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagGoForward()
+{
+    return UI_STRING("Forward", "Forward context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStop()
+{
+    return UI_STRING("Stop", "Stop context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagReload()
+{
+    return UI_STRING("Reload", "Reload context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCut()
+{
+    return UI_STRING("Cut", "Cut context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagPaste()
+{
+    return UI_STRING("Paste", "Paste context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagNoGuessesFound()
+{
+    return UI_STRING("No Guesses Found", "No Guesses Found context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagIgnoreSpelling()
+{
+    return UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLearnSpelling()
+{
+    return UI_STRING("Learn Spelling", "Learn Spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSearchWeb()
+{
+    return UI_STRING("Search in Google", "Search in Google context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLookUpInDictionary()
+{
+    return UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenLink()
+{
+    return UI_STRING("Open Link", "Open Link context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagIgnoreGrammar()
+{
+    return UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSpellingMenu()
+{
+#ifndef BUILDING_ON_TIGER
+    return UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
+#else
+    return UI_STRING("Spelling", "Spelling context sub-menu item");
+#endif
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowSpellingPanel(bool show)
+{
+#ifndef BUILDING_ON_TIGER
+    if (show)
+        return UI_STRING("Show Spelling and Grammar", "menu item title");
+    return UI_STRING("Hide Spelling and Grammar", "menu item title");
+#else
+    return UI_STRING("Spelling...", "menu item title");
+#endif
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckSpelling()
+{
+#ifndef BUILDING_ON_TIGER
+    return UI_STRING("Check Document Now", "Check spelling context menu item");
+#else
+    return UI_STRING("Check Spelling", "Check spelling context menu item");
+#endif
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckSpellingWhileTyping()
+{
+#ifndef BUILDING_ON_TIGER
+    return UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
+#else
+    return UI_STRING("Check Spelling as You Type", "Check spelling while typing context menu item");
+#endif
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckGrammarWithSpelling()
+{
+    return UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagFontMenu()
+{
+    return UI_STRING("Font", "Font context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagBold()
+{
+    return UI_STRING("Bold", "Bold context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagItalic()
+{
+    return UI_STRING("Italic", "Italic context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagUnderline()
+{
+    return UI_STRING("Underline", "Underline context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOutline()
+{
+    return UI_STRING("Outline", "Outline context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagWritingDirectionMenu()
+{
+#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+    return UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
+#else
+    return UI_STRING("Writing Direction", "Writing direction context sub-menu item");
+#endif
+}
+
+String WebPlatformStrategies::contextMenuItemTagTextDirectionMenu()
+{
+    return UI_STRING("Selection Direction", "Selection direction context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDefaultDirection()
+{
+    return UI_STRING("Default", "Default writing direction context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLeftToRight()
+{
+    return UI_STRING("Left to Right", "Left to Right context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagRightToLeft()
+{
+    return UI_STRING("Right to Left", "Right to Left context menu item");
+}
+
+#if PLATFORM(MAC)
+
+String WebPlatformStrategies::contextMenuItemTagSearchInSpotlight()
+{
+    return UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowFonts()
+{
+    return UI_STRING("Show Fonts", "Show fonts context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStyles()
+{
+    return UI_STRING("Styles...", "Styles context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowColors()
+{
+    return UI_STRING("Show Colors", "Show colors context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSpeechMenu()
+{
+    return UI_STRING("Speech", "Speech context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStartSpeaking()
+{
+    return UI_STRING("Start Speaking", "Start speaking context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStopSpeaking()
+{
+    return UI_STRING("Stop Speaking", "Stop speaking context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCorrectSpellingAutomatically()
+{
+    return UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSubstitutionsMenu()
+{
+    return UI_STRING("Substitutions", "Substitutions context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowSubstitutions(bool show)
+{
+    if (show) 
+        return UI_STRING("Show Substitutions", "menu item title");
+    return UI_STRING("Hide Substitutions", "menu item title");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartCopyPaste()
+{
+    return UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartQuotes()
+{
+    return UI_STRING("Smart Quotes", "Smart Quotes context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartDashes()
+{
+    return UI_STRING("Smart Dashes", "Smart Dashes context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartLinks()
+{
+    return UI_STRING("Smart Links", "Smart Links context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagTextReplacement()
+{
+    return UI_STRING("Text Replacement", "Text Replacement context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagTransformationsMenu()
+{
+    return UI_STRING("Transformations", "Transformations context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagMakeUpperCase()
+{
+    return UI_STRING("Make Upper Case", "Make Upper Case context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagMakeLowerCase()
+{
+    return UI_STRING("Make Lower Case", "Make Lower Case context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCapitalize()
+{
+    return UI_STRING("Capitalize", "Capitalize context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagChangeBack(const String& replacedString)
+{
+    static NSString *formatString = nil;
+#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
+    static bool lookedUpString = false;
+    if (!lookedUpString) {
+        formatString = [[[NSBundle bundleForClass:[NSSpellChecker class]] localizedStringForKey:@"Change Back to \\U201C%@\\U201D" value:nil table:@"MenuCommands"] retain];
+        lookedUpString = true;
+    }
+#endif
+    if (!formatString)
+        return replacedString;
+    return [NSString stringWithFormat:formatString, (NSString *)replacedString];
+}
+
+#endif
+
+String WebPlatformStrategies::contextMenuItemTagInspectElement()
+{
+    return UI_STRING("Inspect Element", "Inspect Element context menu item");
+}
+
+#endif // ENABLE(CONTEXT_MENUS)
+
+String WebPlatformStrategies::searchMenuNoRecentSearchesText()
+{
+    return UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
+}
+
+String WebPlatformStrategies::searchMenuRecentSearchesText()
+{
+    return UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
+}
+
+String WebPlatformStrategies::searchMenuClearRecentSearchesText()
+{
+    return UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
+}
+
+String WebPlatformStrategies::AXWebAreaText()
+{
+    return UI_STRING("HTML content", "accessibility role description for web area");
+}
+
+String WebPlatformStrategies::AXLinkText()
+{
+    return UI_STRING("link", "accessibility role description for link");
+}
+
+String WebPlatformStrategies::AXListMarkerText()
+{
+    return UI_STRING("list marker", "accessibility role description for list marker");
+}
+
+String WebPlatformStrategies::AXImageMapText()
+{
+    return UI_STRING("image map", "accessibility role description for image map");
+}
+
+String WebPlatformStrategies::AXHeadingText()
+{
+    return UI_STRING("heading", "accessibility role description for headings");
+}
+
+String WebPlatformStrategies::AXDefinitionListTermText()
+{
+    return UI_STRING("term", "term word of a definition");
+}
+
+String WebPlatformStrategies::AXDefinitionListDefinitionText()
+{
+    return UI_STRING("definition", "definition phrase");
+}
+
+String WebPlatformStrategies::AXARIAContentGroupText(const String& ariaType)
+{
+    if (ariaType == "ARIAApplicationAlert")
+        return UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
+    if (ariaType == "ARIAApplicationAlertDialog")
+        return UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
+    if (ariaType == "ARIAApplicationDialog")
+        return UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
+    if (ariaType == "ARIAApplicationLog")
+        return UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
+    if (ariaType == "ARIAApplicationMarquee")
+        return UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");    
+    if (ariaType == "ARIAApplicationStatus")
+        return UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");    
+    if (ariaType == "ARIAApplicationTimer")
+        return UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");    
+    if (ariaType == "ARIADocument")
+        return UI_STRING("document", "An ARIA accessibility group that acts as a document.");    
+    if (ariaType == "ARIADocumentArticle")
+        return UI_STRING("article", "An ARIA accessibility group that acts as an article.");    
+    if (ariaType == "ARIADocumentNote")
+        return UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");    
+    if (ariaType == "ARIADocumentRegion")
+        return UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");    
+    if (ariaType == "ARIALandmarkApplication")
+        return UI_STRING("application", "An ARIA accessibility group that acts as an application.");    
+    if (ariaType == "ARIALandmarkBanner")
+        return UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");    
+    if (ariaType == "ARIALandmarkComplementary")
+        return UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");    
+    if (ariaType == "ARIALandmarkContentInfo")
+        return UI_STRING("content", "An ARIA accessibility group that contains content.");    
+    if (ariaType == "ARIALandmarkMain")
+        return UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");    
+    if (ariaType == "ARIALandmarkNavigation")
+        return UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");    
+    if (ariaType == "ARIALandmarkSearch")
+        return UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");    
+    if (ariaType == "ARIAUserInterfaceTooltip")
+        return UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");    
+    if (ariaType == "ARIATabPanel")
+        return UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
+    if (ariaType == "ARIADocumentMath")
+        return UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
+    return String();
+}
+
+String WebPlatformStrategies::AXButtonActionVerb()
+{
+    return UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXRadioButtonActionVerb() 
+{
+    return UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXTextFieldActionVerb()
+{
+    return UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXCheckedCheckBoxActionVerb()
+{
+    return UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXUncheckedCheckBoxActionVerb()
+{
+    return UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXMenuListActionVerb()
+{
+    return String();
+}
+
+String WebPlatformStrategies::AXMenuListPopupActionVerb()
+{
+    return String();
+}
+
+String WebPlatformStrategies::AXLinkActionVerb()
+{
+    return UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::missingPluginText()
+{
+    return UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
+}
+
+String WebPlatformStrategies::crashedPluginText()
+{
+    return UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
+}
+
+String WebPlatformStrategies::multipleFileUploadText(unsigned numberOfFiles)
+{
+    return [NSString stringWithFormat:UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles];
+}
+
+String WebPlatformStrategies::unknownFileSizeText()
+{
+    return UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
+}
+
+String WebPlatformStrategies::imageTitle(const String& filename, const IntSize& size)
+{
+    return [NSString stringWithFormat:UI_STRING("%@ %d×%d pixels", "window title for a standalone image (uses multiplication symbol, not x)"), (NSString *)filename, size.width(), size.height()];
+}
+
+String WebPlatformStrategies::mediaElementLoadingStateText()
+{
+    return UI_STRING("Loading...", "Media controller status message when the media is loading");
+}
+
+String WebPlatformStrategies::mediaElementLiveBroadcastStateText()
+{
+    return UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
+}
+
+String WebPlatformStrategies::localizedMediaControlElementString(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element controller", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element controller", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute", "accessibility role description for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute", "accessibility role description for turn mute off button");
+    if (name == "PlayButton")
+        return UI_STRING("play", "accessibility role description for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause", "accessibility role description for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time", "accessibility role description for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
+    if (name == "RewindButton")
+        return UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return to realtime", "accessibility role description for return to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("elapsed time", "accessibility role description for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("remaining time", "accessibility role description for time remaining display");
+    if (name == "StatusDisplay")
+        return UI_STRING("status", "accessibility role description for movie status");
+    if (name == "FullscreenButton")
+        return UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("fast forward", "accessibility role description for fast forward button");
+    if (name == "SeekBackButton")
+        return UI_STRING("fast reverse", "accessibility role description for fast reverse button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("show closed captions", "accessibility role description for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
+
+    // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
+    if (name == "ControlsPanel")
+        return String();
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String WebPlatformStrategies::localizedMediaControlElementHelpText(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute audio tracks", "accessibility help text for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
+    if (name == "PlayButton")
+        return UI_STRING("begin playback", "accessibility help text for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause playback", "accessibility help text for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
+    if (name == "RewindButton")
+        return UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
+    if (name == "StatusDisplay")
+        return UI_STRING("current movie status", "accessibility help text for movie status display");
+    if (name == "SeekBackButton")
+        return UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
+    if (name == "FullscreenButton")
+        return UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String WebPlatformStrategies::localizedMediaTimeDescription(float time)
+{
+    if (!isfinite(time))
+        return UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
+
+    int seconds = (int)fabsf(time); 
+    int days = seconds / (60 * 60 * 24);
+    int hours = seconds / (60 * 60);
+    int minutes = (seconds / 60) % 60;
+    seconds %= 60;
+
+    if (days)
+        return [NSString stringWithFormat:UI_STRING("%1$d days %2$d hours %3$d minutes %4$d seconds", "accessibility help text for media controller time value >= 1 day"), days, hours, minutes, seconds];
+    else if (hours)
+        return [NSString stringWithFormat:UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds];
+    else if (minutes)
+        return [NSString stringWithFormat:UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds];
+
+    return [NSString stringWithFormat:UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds];
+}
+
+String WebPlatformStrategies::validationMessageValueMissingText()
+{
+    return UI_STRING("value missing", "Validation message for required form control elements that have no value");
+}
+
+String WebPlatformStrategies::validationMessageTypeMismatchText()
+{
+    return UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
+}
+
+String WebPlatformStrategies::validationMessagePatternMismatchText()
+{
+    return UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
+}
+
+String WebPlatformStrategies::validationMessageTooLongText()
+{
+    return UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
+}
+
+String WebPlatformStrategies::validationMessageRangeUnderflowText()
+{
+    return UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
+}
+
+String WebPlatformStrategies::validationMessageRangeOverflowText()
+{
+    return UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
+}
+
+String WebPlatformStrategies::validationMessageStepMismatchText()
+{
+    return UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
+}
 
diff --git a/WebKit/mac/WebCoreSupport/WebViewFactory.mm b/WebKit/mac/WebCoreSupport/WebViewFactory.mm
index a97d5a5..6c7347f 100644
--- a/WebKit/mac/WebCoreSupport/WebViewFactory.mm
+++ b/WebKit/mac/WebCoreSupport/WebViewFactory.mm
@@ -31,7 +31,6 @@
 #import <WebKit/WebFrameInternal.h>
 #import <WebKit/WebViewInternal.h>
 #import <WebKit/WebHTMLViewInternal.h>
-#import <WebKit/WebLocalizableStrings.h>
 #import <WebKit/WebNSUserDefaultsExtras.h>
 #import <WebKit/WebNSObjectExtras.h>
 #import <WebKit/WebNSViewExtras.h>
@@ -64,379 +63,11 @@
     ASSERT([[self sharedFactory] isKindOfClass:self]);
 }
 
-- (NSString *)inputElementAltText
-{
-    return UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
-}
-
-- (NSString *)resetButtonDefaultLabel
-{
-    return UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
-}
-
-- (NSString *)searchableIndexIntroduction
-{
-    return UI_STRING("This is a searchable index. Enter search keywords: ",
-        "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
-}
-
-- (NSString *)submitButtonDefaultLabel
-{
-    return UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
-}
-
-- (NSString *)fileButtonChooseFileLabel
-{
-    return UI_STRING("Choose File", "title for file button used in HTML forms");
-}
-
-- (NSString *)fileButtonNoFileSelectedLabel
-{
-    return UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
-}
-
-- (NSString *)copyImageUnknownFileLabel
-{
-    return UI_STRING("unknown", "Unknown filename");
-}
-
-- (NSString *)searchMenuNoRecentSearchesText
-{
-    return UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
-}
-
-- (NSString *)searchMenuRecentSearchesText
-{
-    return UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
-}
-
-- (NSString *)searchMenuClearRecentSearchesText
-{
-    return UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
-}
-
 - (NSString *)defaultLanguageCode
 {
     return [NSUserDefaults _webkit_preferredLanguageCode];
 }
 
-- (NSString *)contextMenuItemTagOpenLinkInNewWindow
-{
-    return UI_STRING("Open Link in New Window", "Open in New Window context menu item");
-}
-
-- (NSString *)contextMenuItemTagDownloadLinkToDisk
-{
-    return UI_STRING("Download Linked File", "Download Linked File context menu item");
-}
-
-- (NSString *)contextMenuItemTagCopyLinkToClipboard
-{
-    return UI_STRING("Copy Link", "Copy Link context menu item");
-}
-
-- (NSString *)contextMenuItemTagOpenImageInNewWindow
-{
-    return UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
-}
-
-- (NSString *)contextMenuItemTagDownloadImageToDisk
-{
-    return UI_STRING("Download Image", "Download Image context menu item");
-}
-
-- (NSString *)contextMenuItemTagCopyImageToClipboard
-{
-    return UI_STRING("Copy Image", "Copy Image context menu item");
-}
-
-- (NSString *)contextMenuItemTagOpenFrameInNewWindow
-{
-    return UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
-}
-
-- (NSString *)contextMenuItemTagCopy
-{
-    return UI_STRING("Copy", "Copy context menu item");
-}
-
-- (NSString *)contextMenuItemTagGoBack
-{
-    return UI_STRING("Back", "Back context menu item");
-}
-
-- (NSString *)contextMenuItemTagGoForward
-{
-    return UI_STRING("Forward", "Forward context menu item");
-}
-
-- (NSString *)contextMenuItemTagStop
-{
-    return UI_STRING("Stop", "Stop context menu item");
-}
-
-- (NSString *)contextMenuItemTagReload
-{
-    return UI_STRING("Reload", "Reload context menu item");
-}
-
-- (NSString *)contextMenuItemTagCut
-{
-    return UI_STRING("Cut", "Cut context menu item");
-}
-
-- (NSString *)contextMenuItemTagPaste
-{
-    return UI_STRING("Paste", "Paste context menu item");
-}
-
-- (NSString *)contextMenuItemTagNoGuessesFound
-{
-    return UI_STRING("No Guesses Found", "No Guesses Found context menu item");
-}
-
-- (NSString *)contextMenuItemTagIgnoreSpelling
-{
-    return UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
-}
-
-- (NSString *)contextMenuItemTagLearnSpelling
-{
-    return UI_STRING("Learn Spelling", "Learn Spelling context menu item");
-}
-
-- (NSString *)contextMenuItemTagSearchInSpotlight
-{
-    return UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
-}
-
-- (NSString *)contextMenuItemTagSearchWeb
-{
-    return UI_STRING("Search in Google", "Search in Google context menu item");
-}
-
-- (NSString *)contextMenuItemTagLookUpInDictionary
-{
-    return UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
-}
-
-- (NSString *)contextMenuItemTagOpenLink
-{
-    return UI_STRING("Open Link", "Open Link context menu item");
-}
-
-- (NSString *)contextMenuItemTagIgnoreGrammar
-{
-    return UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
-}
-
-- (NSString *)contextMenuItemTagSpellingMenu
-{
-#ifndef BUILDING_ON_TIGER
-    return UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
-#else
-    return UI_STRING("Spelling", "Spelling context sub-menu item");
-#endif
-}
-
-- (NSString *)contextMenuItemTagShowSpellingPanel:(bool)show
-{
-#ifndef BUILDING_ON_TIGER
-    if (show)
-        return UI_STRING("Show Spelling and Grammar", "menu item title");
-    return UI_STRING("Hide Spelling and Grammar", "menu item title");
-#else
-    return UI_STRING("Spelling...", "menu item title");
-#endif
-}
-
-- (NSString *)contextMenuItemTagCheckSpelling
-{
-#ifndef BUILDING_ON_TIGER
-    return UI_STRING("Check Document Now", "Check spelling context menu item");
-#else
-    return UI_STRING("Check Spelling", "Check spelling context menu item");
-#endif
-}
-
-- (NSString *)contextMenuItemTagCheckSpellingWhileTyping
-{
-#ifndef BUILDING_ON_TIGER
-    return UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
-#else
-    return UI_STRING("Check Spelling as You Type", "Check spelling while typing context menu item");
-#endif
-}
-
-- (NSString *)contextMenuItemTagCheckGrammarWithSpelling
-{
-    return UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
-}
-
-- (NSString *)contextMenuItemTagFontMenu
-{
-    return UI_STRING("Font", "Font context sub-menu item");
-}
-
-- (NSString *)contextMenuItemTagShowFonts
-{
-    return UI_STRING("Show Fonts", "Show fonts context menu item");
-}
-
-- (NSString *)contextMenuItemTagBold
-{
-    return UI_STRING("Bold", "Bold context menu item");
-}
-
-- (NSString *)contextMenuItemTagItalic
-{
-    return UI_STRING("Italic", "Italic context menu item");
-}
-
-- (NSString *)contextMenuItemTagUnderline
-{
-    return UI_STRING("Underline", "Underline context menu item");
-}
-
-- (NSString *)contextMenuItemTagOutline
-{
-    return UI_STRING("Outline", "Outline context menu item");
-}
-
-- (NSString *)contextMenuItemTagStyles
-{
-    return UI_STRING("Styles...", "Styles context menu item");
-}
-
-- (NSString *)contextMenuItemTagShowColors
-{
-    return UI_STRING("Show Colors", "Show colors context menu item");
-}
-
-- (NSString *)contextMenuItemTagSpeechMenu
-{
-    return UI_STRING("Speech", "Speech context sub-menu item");
-}
-
-- (NSString *)contextMenuItemTagStartSpeaking
-{
-    return UI_STRING("Start Speaking", "Start speaking context menu item");
-}
-
-- (NSString *)contextMenuItemTagStopSpeaking
-{
-    return UI_STRING("Stop Speaking", "Stop speaking context menu item");
-}
-
-- (NSString *)contextMenuItemTagWritingDirectionMenu
-{
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
-    return UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
-#else
-    return UI_STRING("Writing Direction", "Writing direction context sub-menu item");
-#endif
-}
-
-- (NSString *)contextMenuItemTagTextDirectionMenu
-{
-    return UI_STRING("Selection Direction", "Selection direction context sub-menu item");
-}
-
-- (NSString *)contextMenuItemTagDefaultDirection
-{
-    return UI_STRING("Default", "Default writing direction context menu item");
-}
-
-- (NSString *)contextMenuItemTagLeftToRight
-{
-    return UI_STRING("Left to Right", "Left to Right context menu item");
-}
-
-- (NSString *)contextMenuItemTagRightToLeft
-{
-    return UI_STRING("Right to Left", "Right to Left context menu item");
-}
-
-- (NSString *)contextMenuItemTagCorrectSpellingAutomatically
-{
-    return UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
-}
-
-- (NSString *)contextMenuItemTagSubstitutionsMenu
-{
-    return UI_STRING("Substitutions", "Substitutions context sub-menu item");
-}
-
-- (NSString *)contextMenuItemTagShowSubstitutions:(bool)show
-{
-    if (show) 
-        return UI_STRING("Show Substitutions", "menu item title");
-    return UI_STRING("Hide Substitutions", "menu item title");
-}
-
-- (NSString *)contextMenuItemTagSmartCopyPaste
-{
-    return UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
-}
-
-- (NSString *)contextMenuItemTagSmartQuotes
-{
-    return UI_STRING("Smart Quotes", "Smart Quotes context menu item");
-}
-
-- (NSString *)contextMenuItemTagSmartDashes
-{
-    return UI_STRING("Smart Dashes", "Smart Dashes context menu item");
-}
-
-- (NSString *)contextMenuItemTagSmartLinks
-{
-    return UI_STRING("Smart Links", "Smart Links context menu item");
-}
-
-- (NSString *)contextMenuItemTagTextReplacement
-{
-    return UI_STRING("Text Replacement", "Text Replacement context menu item");
-}
-
-- (NSString *)contextMenuItemTagTransformationsMenu
-{
-    return UI_STRING("Transformations", "Transformations context sub-menu item");
-}
-
-- (NSString *)contextMenuItemTagMakeUpperCase
-{
-    return UI_STRING("Make Upper Case", "Make Upper Case context menu item");
-}
-
-- (NSString *)contextMenuItemTagMakeLowerCase
-{
-    return UI_STRING("Make Lower Case", "Make Lower Case context menu item");
-}
-
-- (NSString *)contextMenuItemTagCapitalize
-{
-    return UI_STRING("Capitalize", "Capitalize context menu item");
-}
-
-- (NSString *)contextMenuItemTagChangeBack:(NSString *)replacedString
-{
-    static NSString *formatString = nil;
-#if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
-    static bool lookedUpString = false;
-    if (!lookedUpString) {
-        formatString = [[[NSBundle bundleForClass:[NSSpellChecker class]] localizedStringForKey:@"Change Back to \\U201C%@\\U201D" value:nil table:@"MenuCommands"] retain];
-        lookedUpString = true;
-    }
-#endif
-    return formatString ? [NSString stringWithFormat:formatString, replacedString] : replacedString;
-}
-
-- (NSString *)contextMenuItemTagInspectElement
-{
-    return UI_STRING("Inspect Element", "Inspect Element context menu item");
-}
-
 - (BOOL)objectIsTextMarker:(id)object
 {
     return object != nil && CFGetTypeID(object) == WKGetAXTextMarkerTypeID();
@@ -507,308 +138,4 @@
     WKUnregisterUniqueIdForElement(element);
 }
 
-- (NSString *)AXWebAreaText
-{
-    return UI_STRING("HTML content", "accessibility role description for web area");
-}
-
-- (NSString *)AXLinkText
-{
-    return UI_STRING("link", "accessibility role description for link");
-}
-
-- (NSString *)AXListMarkerText
-{
-    return UI_STRING("list marker", "accessibility role description for list marker");
-}
-
-- (NSString *)AXImageMapText
-{
-    return UI_STRING("image map", "accessibility role description for image map");
-}
-
-- (NSString *)AXHeadingText
-{
-    return UI_STRING("heading", "accessibility role description for headings");
-}
-
-- (NSString *)AXDefinitionListTermText
-{
-    return UI_STRING("term", "term word of a definition");
-}
-
-- (NSString *)AXDefinitionListDefinitionText
-{
-    return UI_STRING("definition", "definition phrase");
-}
-
-- (NSString *)AXARIAContentGroupText:(NSString *)ariaType
-{
-    if ([ariaType isEqualToString:@"ARIAApplicationAlert"])
-        return UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
-    if ([ariaType isEqualToString:@"ARIAApplicationAlertDialog"])
-        return UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
-    if ([ariaType isEqualToString:@"ARIAApplicationDialog"])
-        return UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
-    if ([ariaType isEqualToString:@"ARIAApplicationLog"])
-        return UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
-    if ([ariaType isEqualToString:@"ARIAApplicationMarquee"])
-        return UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");    
-    if ([ariaType isEqualToString:@"ARIAApplicationStatus"])
-        return UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");    
-    if ([ariaType isEqualToString:@"ARIAApplicationTimer"])
-        return UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");    
-    if ([ariaType isEqualToString:@"ARIADocument"])
-        return UI_STRING("document", "An ARIA accessibility group that acts as a document.");    
-    if ([ariaType isEqualToString:@"ARIADocumentArticle"])
-        return UI_STRING("article", "An ARIA accessibility group that acts as an article.");    
-    if ([ariaType isEqualToString:@"ARIADocumentNote"])
-        return UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");    
-    if ([ariaType isEqualToString:@"ARIADocumentRegion"])
-        return UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkApplication"])
-        return UI_STRING("application", "An ARIA accessibility group that acts as an application.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkBanner"])
-        return UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkComplementary"])
-        return UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkContentInfo"])
-        return UI_STRING("content", "An ARIA accessibility group that contains content.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkMain"])
-        return UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkNavigation"])
-        return UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");    
-    if ([ariaType isEqualToString:@"ARIALandmarkSearch"])
-        return UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");    
-    if ([ariaType isEqualToString:@"ARIAUserInterfaceTooltip"])
-        return UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");    
-    if ([ariaType isEqualToString:@"ARIATabPanel"])
-        return UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
-    if ([ariaType isEqualToString:@"ARIADocumentMath"])
-        return UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
-    return nil;
-}
-
-- (NSString *)AXButtonActionVerb
-{
-    return UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
-}
-
-- (NSString *)AXRadioButtonActionVerb
-{
-    return UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
-}
-
-- (NSString *)AXTextFieldActionVerb
-{
-    return UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
-}
-
-- (NSString *)AXCheckedCheckBoxActionVerb
-{
-    return UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
-}
-
-- (NSString *)AXUncheckedCheckBoxActionVerb
-{
-    return UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
-}
-
-- (NSString *)AXLinkActionVerb
-{
-    return UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
-}
-
-- (NSString *)AXMenuListPopupActionVerb
-{
-    return nil;
-}
-
-- (NSString *)AXMenuListActionVerb
-{
-    return nil;
-}
-
-- (NSString *)missingPluginText
-{
-    return UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
-}
-
-- (NSString *)crashedPluginText
-{
-    return UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
-}
-
-- (NSString *)multipleFileUploadTextForNumberOfFiles:(unsigned)numberOfFiles
-{
-    return [NSString stringWithFormat:UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles];
-}
-
-- (NSString *)unknownFileSizeText
-{
-    return UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
-}
-
-- (NSString*)imageTitleForFilename:(NSString*)filename width:(int)width height:(int)height
-{
-    return [NSString stringWithFormat:UI_STRING("%@ %d×%d pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filename, width, height];
-}
-
-- (NSString*)mediaElementLoadingStateText
-{
-    return UI_STRING("Loading...", "Media controller status message when the media is loading");
-}
-
-- (NSString*)mediaElementLiveBroadcastStateText
-{
-    return UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
-}
-
-- (NSString*)localizedMediaControlElementString:(NSString*)name
-{
-    if ([name isEqualToString:@"AudioElement"])
-        return UI_STRING("audio element controller", "accessibility role description for audio element controller");
-    if ([name isEqualToString:@"VideoElement"])
-        return UI_STRING("video element controller", "accessibility role description for video element controller");
-
-    // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
-    if ([name isEqualToString:@"ControlsPanel"])
-        return @"";
-
-    if ([name isEqualToString:@"MuteButton"])
-        return UI_STRING("mute", "accessibility role description for mute button");
-    if ([name isEqualToString:@"UnMuteButton"])
-        return UI_STRING("unmute", "accessibility role description for turn mute off button");
-    if ([name isEqualToString:@"PlayButton"])
-        return UI_STRING("play", "accessibility role description for play button");
-    if ([name isEqualToString:@"PauseButton"])
-        return UI_STRING("pause", "accessibility role description for pause button");
-    if ([name isEqualToString:@"Slider"])
-        return UI_STRING("movie time", "accessibility role description for timeline slider");
-    if ([name isEqualToString:@"SliderThumb"])
-        return UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
-    if ([name isEqualToString:@"RewindButton"])
-        return UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
-    if ([name isEqualToString:@"ReturnToRealtimeButton"])
-        return UI_STRING("return to realtime", "accessibility role description for return to real time button");
-    if ([name isEqualToString:@"CurrentTimeDisplay"])
-        return UI_STRING("elapsed time", "accessibility role description for elapsed time display");
-    if ([name isEqualToString:@"TimeRemainingDisplay"])
-        return UI_STRING("remaining time", "accessibility role description for time remaining display");
-    if ([name isEqualToString:@"StatusDisplay"])
-        return UI_STRING("status", "accessibility role description for movie status");
-    if ([name isEqualToString:@"FullscreenButton"])
-        return UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
-    if ([name isEqualToString:@"SeekForwardButton"])
-        return UI_STRING("fast forward", "accessibility role description for fast forward button");
-    if ([name isEqualToString:@"SeekBackButton"])
-        return UI_STRING("fast reverse", "accessibility role description for fast reverse button");
-    if ([name isEqualToString:@"ShowClosedCaptionsButton"])
-        return UI_STRING("show closed captions", "accessibility role description for show closed captions button");
-    if ([name isEqualToString:@"HideClosedCaptionsButton"])
-        return UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
-
-    ASSERT_NOT_REACHED();
-    return @"";
-}
-
-- (NSString*)localizedMediaControlElementHelpText:(NSString*)name
-{
-    if ([name isEqualToString:@"AudioElement"])
-        return UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
-    if ([name isEqualToString:@"VideoElement"])
-        return UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
-
-    if ([name isEqualToString:@"MuteButton"])
-        return UI_STRING("mute audio tracks", "accessibility help text for mute button");
-    if ([name isEqualToString:@"UnMuteButton"])
-        return UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
-    if ([name isEqualToString:@"PlayButton"])
-        return UI_STRING("begin playback", "accessibility help text for play button");
-    if ([name isEqualToString:@"PauseButton"])
-        return UI_STRING("pause playback", "accessibility help text for pause button");
-    if ([name isEqualToString:@"Slider"])
-        return UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
-    if ([name isEqualToString:@"SliderThumb"])
-        return UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
-    if ([name isEqualToString:@"RewindButton"])
-        return UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
-    if ([name isEqualToString:@"ReturnToRealtimeButton"])
-        return UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
-    if ([name isEqualToString:@"CurrentTimeDisplay"])
-        return UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
-    if ([name isEqualToString:@"TimeRemainingDisplay"])
-        return UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
-    if ([name isEqualToString:@"StatusDisplay"])
-        return UI_STRING("current movie status", "accessibility help text for movie status display");
-    if ([name isEqualToString:@"SeekBackButton"])
-        return UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
-    if ([name isEqualToString:@"SeekForwardButton"])
-        return UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
-    if ([name isEqualToString:@"FullscreenButton"])
-        return UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
-    if ([name isEqualToString:@"ShowClosedCaptionsButton"])
-        return UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
-    if ([name isEqualToString:@"HideClosedCaptionsButton"])
-        return UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
-    ASSERT_NOT_REACHED();
-    return @"";
-}
-
-- (NSString*)localizedMediaTimeDescription:(float)time
-{
-    if (!isfinite(time))
-        return UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
-
-    int seconds = (int)fabsf(time); 
-    int days = seconds / (60 * 60 * 24);
-    int hours = seconds / (60 * 60);
-    int minutes = (seconds / 60) % 60;
-    seconds %= 60;
-
-    if (days)
-        return [NSString stringWithFormat:UI_STRING("%1$d days %2$d hours %3$d minutes %4$d seconds", "accessibility help text for media controller time value >= 1 day"), days, hours, minutes, seconds];
-    else if (hours)
-        return [NSString stringWithFormat:UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds];
-    else if (minutes)
-        return [NSString stringWithFormat:UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds];
-
-    return [NSString stringWithFormat:UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds];
-}
-
-- (NSString *)validationMessageValueMissingText
-{
-    return UI_STRING("value missing", "Validation message for required form control elements that have no value");
-}
-
-- (NSString *)validationMessageTypeMismatchText
-{
-    return UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
-}
-
-- (NSString *)validationMessagePatternMismatchText
-{
-    return UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
-}
-
-- (NSString *)validationMessageTooLongText
-{
-    return UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
-}
-
-- (NSString *)validationMessageRangeUnderflowText
-{
-    return UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
-}
-
-- (NSString *)validationMessageRangeOverflowText
-{
-    return UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
-}
-
-- (NSString *)validationMessageStepMismatchText
-{
-    return UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
-}
-
 @end
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 45b7f50..f205b36 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,15 @@
+2010-07-22  Sam Weinig  <sam at webkit.org>
+
+        Reviewed by Anders Carlsson.
+
+        Patch for https://bugs.webkit.org/show_bug.cgi?id=42836
+        Add localized strings stubs for WebKit2.
+
+        Gets us below 200 tests failing in WebKitTestRunner.
+
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
+        * WebProcess/WebCoreSupport/WebPlatformStrategies.h:
+
 2010-07-22  Andras Becsi  <abecsi at webkit.org>
 
         Unreviewed trivial build fix.
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
index 8114a3e..5f5a009 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
+++ b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
@@ -27,10 +27,17 @@
 
 #if USE(PLATFORM_STRATEGIES)
 
+#include "NotImplemented.h"
 #include "PluginInfoStore.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebProcess.h"
 #include "WebProcessProxyMessageKinds.h"
+#include <wtf/MathExtras.h>
+#include <wtf/text/CString.h>
+
+// FIXME: Implement localization.
+#define UI_STRING(string, description) string
+#define UI_STRING_KEY(string, key, description) string
 
 using namespace WebCore;
 
@@ -55,6 +62,13 @@ PluginStrategy* WebPlatformStrategies::createPluginStrategy()
     return this;
 }
 
+LocalizationStrategy* WebPlatformStrategies::createLocalizationStrategy()
+{
+    return this;
+}
+
+// PluginStrategy
+
 void WebPlatformStrategies::populatePluginCache()
 {
     if (m_pluginCacheIsPopulated)
@@ -87,6 +101,705 @@ void WebPlatformStrategies::getPluginInfo(Vector<WebCore::PluginInfo>& plugins)
     plugins = m_cachedPlugins;
 }
 
+// LocalizationStrategy    
+
+String WebPlatformStrategies::inputElementAltText()
+{
+    return UI_STRING_KEY("Submit", "Submit (input element)", "alt text for <input> elements with no alt, title, or value");
+}
+
+String WebPlatformStrategies::resetButtonDefaultLabel()
+{
+    return UI_STRING("Reset", "default label for Reset buttons in forms on web pages");
+}
+
+String WebPlatformStrategies::searchableIndexIntroduction()
+{
+    return UI_STRING("This is a searchable index. Enter search keywords: ",
+        "text that appears at the start of nearly-obsolete web pages in the form of a 'searchable index'");
+}
+
+String WebPlatformStrategies::submitButtonDefaultLabel()
+{
+    return UI_STRING("Submit", "default label for Submit buttons in forms on web pages");
+}
+
+String WebPlatformStrategies::fileButtonChooseFileLabel()
+{
+    return UI_STRING("Choose File", "title for file button used in HTML forms");
+}
+
+String WebPlatformStrategies::fileButtonNoFileSelectedLabel()
+{
+    return UI_STRING("no file selected", "text to display in file button used in HTML forms when no file is selected");
+}
+
+String WebPlatformStrategies::copyImageUnknownFileLabel()
+{
+    return UI_STRING("unknown", "Unknown filename");
+}
+
+#if ENABLE(CONTEXT_MENUS)
+
+String WebPlatformStrategies::contextMenuItemTagOpenLinkInNewWindow()
+{
+    return UI_STRING("Open Link in New Window", "Open in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDownloadLinkToDisk()
+{
+    return UI_STRING("Download Linked File", "Download Linked File context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopyLinkToClipboard()
+{
+    return UI_STRING("Copy Link", "Copy Link context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenImageInNewWindow()
+{
+    return UI_STRING("Open Image in New Window", "Open Image in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDownloadImageToDisk()
+{
+    return UI_STRING("Download Image", "Download Image context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopyImageToClipboard()
+{
+    return UI_STRING("Copy Image", "Copy Image context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenFrameInNewWindow()
+{
+    return UI_STRING("Open Frame in New Window", "Open Frame in New Window context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCopy()
+{
+    return UI_STRING("Copy", "Copy context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagGoBack()
+{
+    return UI_STRING("Back", "Back context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagGoForward()
+{
+    return UI_STRING("Forward", "Forward context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStop()
+{
+    return UI_STRING("Stop", "Stop context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagReload()
+{
+    return UI_STRING("Reload", "Reload context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCut()
+{
+    return UI_STRING("Cut", "Cut context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagPaste()
+{
+    return UI_STRING("Paste", "Paste context menu item");
+}
+
+#if PLATFORM(GTK)
+
+String WebPlatformStrategies::contextMenuItemTagDelete()
+{
+    notImplemented();
+    return "Delete";
+}
+
+String WebPlatformStrategies::contextMenuItemTagSelectAll()
+{
+    notImplemented();
+    return "Select All";
+}
+
+String WebPlatformStrategies::contextMenuItemTagInputMethods()
+{
+    notImplemented();
+    return "Input Methods";
+}
+
+String WebPlatformStrategies::contextMenuItemTagUnicode()
+{
+    notImplemented();
+    return "Unicode";
+}
+
+#endif
+
+String WebPlatformStrategies::contextMenuItemTagNoGuessesFound()
+{
+    return UI_STRING("No Guesses Found", "No Guesses Found context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagIgnoreSpelling()
+{
+    return UI_STRING("Ignore Spelling", "Ignore Spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLearnSpelling()
+{
+    return UI_STRING("Learn Spelling", "Learn Spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSearchWeb()
+{
+    return UI_STRING("Search in Google", "Search in Google context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLookUpInDictionary()
+{
+    return UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOpenLink()
+{
+    return UI_STRING("Open Link", "Open Link context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagIgnoreGrammar()
+{
+    return UI_STRING("Ignore Grammar", "Ignore Grammar context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSpellingMenu()
+{
+    return UI_STRING("Spelling and Grammar", "Spelling and Grammar context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowSpellingPanel(bool show)
+{
+    if (show)
+        return UI_STRING("Show Spelling and Grammar", "menu item title");
+    return UI_STRING("Hide Spelling and Grammar", "menu item title");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckSpelling()
+{
+    return UI_STRING("Check Document Now", "Check spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckSpellingWhileTyping()
+{
+    return UI_STRING("Check Spelling While Typing", "Check spelling while typing context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCheckGrammarWithSpelling()
+{
+    return UI_STRING("Check Grammar With Spelling", "Check grammar with spelling context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagFontMenu()
+{
+    return UI_STRING("Font", "Font context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagBold()
+{
+    return UI_STRING("Bold", "Bold context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagItalic()
+{
+    return UI_STRING("Italic", "Italic context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagUnderline()
+{
+    return UI_STRING("Underline", "Underline context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagOutline()
+{
+    return UI_STRING("Outline", "Outline context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagWritingDirectionMenu()
+{
+    return UI_STRING("Paragraph Direction", "Paragraph direction context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagTextDirectionMenu()
+{
+    return UI_STRING("Selection Direction", "Selection direction context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagDefaultDirection()
+{
+    return UI_STRING("Default", "Default writing direction context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagLeftToRight()
+{
+    return UI_STRING("Left to Right", "Left to Right context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagRightToLeft()
+{
+    return UI_STRING("Right to Left", "Right to Left context menu item");
+}
+
+#if PLATFORM(MAC)
+
+String WebPlatformStrategies::contextMenuItemTagSearchInSpotlight()
+{
+    return UI_STRING("Search in Spotlight", "Search in Spotlight context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowFonts()
+{
+    return UI_STRING("Show Fonts", "Show fonts context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStyles()
+{
+    return UI_STRING("Styles...", "Styles context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowColors()
+{
+    return UI_STRING("Show Colors", "Show colors context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSpeechMenu()
+{
+    return UI_STRING("Speech", "Speech context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStartSpeaking()
+{
+    return UI_STRING("Start Speaking", "Start speaking context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagStopSpeaking()
+{
+    return UI_STRING("Stop Speaking", "Stop speaking context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCorrectSpellingAutomatically()
+{
+    return UI_STRING("Correct Spelling Automatically", "Correct Spelling Automatically context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSubstitutionsMenu()
+{
+    return UI_STRING("Substitutions", "Substitutions context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagShowSubstitutions(bool show)
+{
+    if (show) 
+        return UI_STRING("Show Substitutions", "menu item title");
+    return UI_STRING("Hide Substitutions", "menu item title");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartCopyPaste()
+{
+    return UI_STRING("Smart Copy/Paste", "Smart Copy/Paste context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartQuotes()
+{
+    return UI_STRING("Smart Quotes", "Smart Quotes context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartDashes()
+{
+    return UI_STRING("Smart Dashes", "Smart Dashes context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagSmartLinks()
+{
+    return UI_STRING("Smart Links", "Smart Links context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagTextReplacement()
+{
+    return UI_STRING("Text Replacement", "Text Replacement context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagTransformationsMenu()
+{
+    return UI_STRING("Transformations", "Transformations context sub-menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagMakeUpperCase()
+{
+    return UI_STRING("Make Upper Case", "Make Upper Case context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagMakeLowerCase()
+{
+    return UI_STRING("Make Lower Case", "Make Lower Case context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagCapitalize()
+{
+    return UI_STRING("Capitalize", "Capitalize context menu item");
+}
+
+String WebPlatformStrategies::contextMenuItemTagChangeBack(const String& replacedString)
+{
+    notImplemented();
+    return replacedString;
+}
+
+#endif
+
+String WebPlatformStrategies::contextMenuItemTagInspectElement()
+{
+    return UI_STRING("Inspect Element", "Inspect Element context menu item");
+}
+
+#endif // ENABLE(CONTEXT_MENUS)
+
+String WebPlatformStrategies::searchMenuNoRecentSearchesText()
+{
+    return UI_STRING("No recent searches", "Label for only item in menu that appears when clicking on the search field image, when no searches have been performed");
+}
+
+String WebPlatformStrategies::searchMenuRecentSearchesText()
+{
+    return UI_STRING("Recent Searches", "label for first item in the menu that appears when clicking on the search field image, used as embedded menu title");
+}
+
+String WebPlatformStrategies::searchMenuClearRecentSearchesText()
+{
+    return UI_STRING("Clear Recent Searches", "menu item in Recent Searches menu that empties menu's contents");
+}
+
+String WebPlatformStrategies::AXWebAreaText()
+{
+    return UI_STRING("HTML content", "accessibility role description for web area");
+}
+
+String WebPlatformStrategies::AXLinkText()
+{
+    return UI_STRING("link", "accessibility role description for link");
+}
+
+String WebPlatformStrategies::AXListMarkerText()
+{
+    return UI_STRING("list marker", "accessibility role description for list marker");
+}
+
+String WebPlatformStrategies::AXImageMapText()
+{
+    return UI_STRING("image map", "accessibility role description for image map");
+}
+
+String WebPlatformStrategies::AXHeadingText()
+{
+    return UI_STRING("heading", "accessibility role description for headings");
+}
+
+String WebPlatformStrategies::AXDefinitionListTermText()
+{
+    return UI_STRING("term", "term word of a definition");
+}
+
+String WebPlatformStrategies::AXDefinitionListDefinitionText()
+{
+    return UI_STRING("definition", "definition phrase");
+}
+
+String WebPlatformStrategies::AXARIAContentGroupText(const String& ariaType)
+{
+    if (ariaType == "ARIAApplicationAlert")
+        return UI_STRING("alert", "An ARIA accessibility group that acts as an alert.");
+    if (ariaType == "ARIAApplicationAlertDialog")
+        return UI_STRING("alert dialog", "An ARIA accessibility group that acts as an alert dialog.");
+    if (ariaType == "ARIAApplicationDialog")
+        return UI_STRING("dialog", "An ARIA accessibility group that acts as an dialog.");
+    if (ariaType == "ARIAApplicationLog")
+        return UI_STRING("log", "An ARIA accessibility group that acts as a console log.");
+    if (ariaType == "ARIAApplicationMarquee")
+        return UI_STRING("marquee", "An ARIA accessibility group that acts as a marquee.");    
+    if (ariaType == "ARIAApplicationStatus")
+        return UI_STRING("application status", "An ARIA accessibility group that acts as a status update.");    
+    if (ariaType == "ARIAApplicationTimer")
+        return UI_STRING("timer", "An ARIA accessibility group that acts as an updating timer.");    
+    if (ariaType == "ARIADocument")
+        return UI_STRING("document", "An ARIA accessibility group that acts as a document.");    
+    if (ariaType == "ARIADocumentArticle")
+        return UI_STRING("article", "An ARIA accessibility group that acts as an article.");    
+    if (ariaType == "ARIADocumentNote")
+        return UI_STRING("note", "An ARIA accessibility group that acts as a note in a document.");    
+    if (ariaType == "ARIADocumentRegion")
+        return UI_STRING("region", "An ARIA accessibility group that acts as a distinct region in a document.");    
+    if (ariaType == "ARIALandmarkApplication")
+        return UI_STRING("application", "An ARIA accessibility group that acts as an application.");    
+    if (ariaType == "ARIALandmarkBanner")
+        return UI_STRING("banner", "An ARIA accessibility group that acts as a banner.");    
+    if (ariaType == "ARIALandmarkComplementary")
+        return UI_STRING("complementary", "An ARIA accessibility group that acts as a region of complementary information.");    
+    if (ariaType == "ARIALandmarkContentInfo")
+        return UI_STRING("content", "An ARIA accessibility group that contains content.");    
+    if (ariaType == "ARIALandmarkMain")
+        return UI_STRING("main", "An ARIA accessibility group that is the main portion of the website.");    
+    if (ariaType == "ARIALandmarkNavigation")
+        return UI_STRING("navigation", "An ARIA accessibility group that contains the main navigation elements of a website.");    
+    if (ariaType == "ARIALandmarkSearch")
+        return UI_STRING("search", "An ARIA accessibility group that contains a search feature of a website.");    
+    if (ariaType == "ARIAUserInterfaceTooltip")
+        return UI_STRING("tooltip", "An ARIA accessibility group that acts as a tooltip.");    
+    if (ariaType == "ARIATabPanel")
+        return UI_STRING("tab panel", "An ARIA accessibility group that contains the content of a tab.");
+    if (ariaType == "ARIADocumentMath")
+        return UI_STRING("math", "An ARIA accessibility group that contains mathematical symbols.");
+    return String();
+}
+
+String WebPlatformStrategies::AXButtonActionVerb()
+{
+    return UI_STRING("press", "Verb stating the action that will occur when a button is pressed, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXRadioButtonActionVerb() 
+{
+    return UI_STRING("select", "Verb stating the action that will occur when a radio button is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXTextFieldActionVerb()
+{
+    return UI_STRING("activate", "Verb stating the action that will occur when a text field is selected, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXCheckedCheckBoxActionVerb()
+{
+    return UI_STRING("uncheck", "Verb stating the action that will occur when a checked checkbox is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXUncheckedCheckBoxActionVerb()
+{
+    return UI_STRING("check", "Verb stating the action that will occur when an unchecked checkbox is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::AXMenuListActionVerb()
+{
+    notImplemented();
+    return "select";
+}
+
+String WebPlatformStrategies::AXMenuListPopupActionVerb()
+{
+    notImplemented();
+    return "select";
+}
+
+String WebPlatformStrategies::AXLinkActionVerb()
+{
+    return UI_STRING("jump", "Verb stating the action that will occur when a link is clicked, as used by accessibility");
+}
+
+String WebPlatformStrategies::missingPluginText()
+{
+    return UI_STRING("Missing Plug-in", "Label text to be used when a plugin is missing");
+}
+
+String WebPlatformStrategies::crashedPluginText()
+{
+    return UI_STRING("Plug-in Failure", "Label text to be used if plugin host process has crashed");
+}
+
+String WebPlatformStrategies::multipleFileUploadText(unsigned numberOfFiles)
+{
+    return String::format(UI_STRING("%d files", "Label to describe the number of files selected in a file upload control that allows multiple files"), numberOfFiles);
+}
+
+String WebPlatformStrategies::unknownFileSizeText()
+{
+    return UI_STRING("Unknown", "Unknown filesize FTP directory listing item");
+}
+
+#if PLATFORM(WIN)
+
+String WebPlatformStrategies::uploadFileText()
+{
+    notImplemented();
+    return "upload";
+}
+
+String WebPlatformStrategies::allFilesText()
+{
+    notImplemented();
+    return "all files";
+}
+
+#endif
+
+String WebPlatformStrategies::imageTitle(const String& filename, const IntSize& size)
+{
+    return String::format(UI_STRING("%s %d×%d pixels", "window title for a standalone image (uses multiplication symbol, not x)"), filename.utf8().data(), size.width(), size.height());
+}
+
+String WebPlatformStrategies::mediaElementLoadingStateText()
+{
+    return UI_STRING("Loading...", "Media controller status message when the media is loading");
+}
+
+String WebPlatformStrategies::mediaElementLiveBroadcastStateText()
+{
+    return UI_STRING("Live Broadcast", "Media controller status message when watching a live broadcast");
+}
+
+String WebPlatformStrategies::localizedMediaControlElementString(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element controller", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element controller", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute", "accessibility role description for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute", "accessibility role description for turn mute off button");
+    if (name == "PlayButton")
+        return UI_STRING("play", "accessibility role description for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause", "accessibility role description for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time", "accessibility role description for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("timeline slider thumb", "accessibility role description for timeline thumb");
+    if (name == "RewindButton")
+        return UI_STRING("back 30 seconds", "accessibility role description for seek back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return to realtime", "accessibility role description for return to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("elapsed time", "accessibility role description for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("remaining time", "accessibility role description for time remaining display");
+    if (name == "StatusDisplay")
+        return UI_STRING("status", "accessibility role description for movie status");
+    if (name == "FullscreenButton")
+        return UI_STRING("fullscreen", "accessibility role description for enter fullscreen button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("fast forward", "accessibility role description for fast forward button");
+    if (name == "SeekBackButton")
+        return UI_STRING("fast reverse", "accessibility role description for fast reverse button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("show closed captions", "accessibility role description for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("hide closed captions", "accessibility role description for hide closed captions button");
+
+    // FIXME: the ControlsPanel container should never be visible in the accessibility hierarchy.
+    if (name == "ControlsPanel")
+        return String();
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String WebPlatformStrategies::localizedMediaControlElementHelpText(const String& name)
+{
+    if (name == "AudioElement")
+        return UI_STRING("audio element playback controls and status display", "accessibility role description for audio element controller");
+    if (name == "VideoElement")
+        return UI_STRING("video element playback controls and status display", "accessibility role description for video element controller");
+    if (name == "MuteButton")
+        return UI_STRING("mute audio tracks", "accessibility help text for mute button");
+    if (name == "UnMuteButton")
+        return UI_STRING("unmute audio tracks", "accessibility help text for un mute button");
+    if (name == "PlayButton")
+        return UI_STRING("begin playback", "accessibility help text for play button");
+    if (name == "PauseButton")
+        return UI_STRING("pause playback", "accessibility help text for pause button");
+    if (name == "Slider")
+        return UI_STRING("movie time scrubber", "accessibility help text for timeline slider");
+    if (name == "SliderThumb")
+        return UI_STRING("movie time scrubber thumb", "accessibility help text for timeline slider thumb");
+    if (name == "RewindButton")
+        return UI_STRING("seek movie back 30 seconds", "accessibility help text for jump back 30 seconds button");
+    if (name == "ReturnToRealtimeButton")
+        return UI_STRING("return streaming movie to real time", "accessibility help text for return streaming movie to real time button");
+    if (name == "CurrentTimeDisplay")
+        return UI_STRING("current movie time in seconds", "accessibility help text for elapsed time display");
+    if (name == "TimeRemainingDisplay")
+        return UI_STRING("number of seconds of movie remaining", "accessibility help text for remaining time display");
+    if (name == "StatusDisplay")
+        return UI_STRING("current movie status", "accessibility help text for movie status display");
+    if (name == "SeekBackButton")
+        return UI_STRING("seek quickly back", "accessibility help text for fast rewind button");
+    if (name == "SeekForwardButton")
+        return UI_STRING("seek quickly forward", "accessibility help text for fast forward button");
+    if (name == "FullscreenButton")
+        return UI_STRING("Play movie in fullscreen mode", "accessibility help text for enter fullscreen button");
+    if (name == "ShowClosedCaptionsButton")
+        return UI_STRING("start displaying closed captions", "accessibility help text for show closed captions button");
+    if (name == "HideClosedCaptionsButton")
+        return UI_STRING("stop displaying closed captions", "accessibility help text for hide closed captions button");
+
+    ASSERT_NOT_REACHED();
+    return String();
+}
+
+String WebPlatformStrategies::localizedMediaTimeDescription(float time)
+{
+    if (!isfinite(time))
+        return UI_STRING("indefinite time", "accessibility help text for an indefinite media controller time value");
+
+    int seconds = static_cast<int>(fabsf(time)); 
+    int days = seconds / (60 * 60 * 24);
+    int hours = seconds / (60 * 60);
+    int minutes = (seconds / 60) % 60;
+    seconds %= 60;
+
+    if (days)
+        return String::format(UI_STRING("%1$d days %2$d hours %3$d minutes %4$d seconds", "accessibility help text for media controller time value >= 1 day"), days, hours, minutes, seconds);
+    if (hours)
+        return String::format(UI_STRING("%1$d hours %2$d minutes %3$d seconds", "accessibility help text for media controller time value >= 60 minutes"), hours, minutes, seconds);
+    if (minutes)
+        return String::format(UI_STRING("%1$d minutes %2$d seconds", "accessibility help text for media controller time value >= 60 seconds"), minutes, seconds);
+    return String::format(UI_STRING("%1$d seconds", "accessibility help text for media controller time value < 60 seconds"), seconds);
+}
+
+String WebPlatformStrategies::validationMessageValueMissingText()
+{
+    return UI_STRING("value missing", "Validation message for required form control elements that have no value");
+}
+
+String WebPlatformStrategies::validationMessageTypeMismatchText()
+{
+    return UI_STRING("type mismatch", "Validation message for input form controls with a value not matching type");
+}
+
+String WebPlatformStrategies::validationMessagePatternMismatchText()
+{
+    return UI_STRING("pattern mismatch", "Validation message for input form controls requiring a constrained value according to pattern");
+}
+
+String WebPlatformStrategies::validationMessageTooLongText()
+{
+    return UI_STRING("too long", "Validation message for form control elements with a value longer than maximum allowed length");
+}
+
+String WebPlatformStrategies::validationMessageRangeUnderflowText()
+{
+    return UI_STRING("range underflow", "Validation message for input form controls with value lower than allowed minimum");
+}
+
+String WebPlatformStrategies::validationMessageRangeOverflowText()
+{
+    return UI_STRING("range overflow", "Validation message for input form controls with value higher than allowed maximum");
+}
+
+String WebPlatformStrategies::validationMessageStepMismatchText()
+{
+    return UI_STRING("step mismatch", "Validation message for input form controls with value not respecting the step attribute");
+}
+
 } // namespace WebKit
 
 #endif // USE(PLATFORM_STRATEGIES)
diff --git a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
index b9cb056..bf2e031 100644
--- a/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
+++ b/WebKit2/WebProcess/WebCoreSupport/WebPlatformStrategies.h
@@ -30,10 +30,11 @@
 
 #include <WebCore/PlatformStrategies.h>
 #include <WebCore/PluginStrategy.h>
+#include <WebCore/LocalizationStrategy.h>
 
 namespace WebKit {
 
-class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::PluginStrategy {
+class WebPlatformStrategies : public WebCore::PlatformStrategies, private WebCore::PluginStrategy, private WebCore::LocalizationStrategy {
 public:
     static void initialize();
     
@@ -42,11 +43,128 @@ private:
     
     // WebCore::PlatformStrategies
     virtual WebCore::PluginStrategy* createPluginStrategy();
+    virtual WebCore::LocalizationStrategy* createLocalizationStrategy();
 
     // WebCore::PluginStrategy
     virtual void refreshPlugins();
     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();
+#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();
+#if PLATFORM(GTK)
+    virtual WebCore::String contextMenuItemTagDelete();
+    virtual WebCore::String contextMenuItemTagSelectAll();
+    virtual WebCore::String contextMenuItemTagInputMethods();
+    virtual WebCore::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();
+#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);
+#endif
+    virtual WebCore::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();
+#if PLATFORM(WIN)
+    virtual WebCore::String uploadFileText();
+    virtual WebCore::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();
+
     void populatePluginCache();
 
     bool m_pluginCacheIsPopulated;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list