diff options
author | tkent@chromium.org <tkent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-25 04:55:29 +0000 |
---|---|---|
committer | tkent@chromium.org <tkent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-25 04:55:29 +0000 |
commit | 77513615b068588ddb9c07079f0dc46e35dd3392 (patch) | |
tree | 43b7ba4cf472028d5985b39fdd65d21bb86f8b01 /webkit | |
parent | 1559f51e06ea7ac7e466338eec69b6a924a10512 (diff) | |
download | chromium_src-77513615b068588ddb9c07079f0dc46e35dd3392.zip chromium_src-77513615b068588ddb9c07079f0dc46e35dd3392.tar.gz chromium_src-77513615b068588ddb9c07079f0dc46e35dd3392.tar.bz2 |
Implement resource query of webkit_support for Windows.
The code is almost identical to test_shell_win.cc. But
missingImage.gif and textAreaResizeCorner.png are put to
PRODUCT_DIR/DumpRenderTree_resources/.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/2175003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48126 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit')
-rw-r--r-- | webkit/support/platform_support_win.cc | 102 | ||||
-rw-r--r-- | webkit/support/webkit_support.gypi | 23 | ||||
-rw-r--r-- | webkit/support/webkit_support_glue.cc | 2 |
3 files changed, 120 insertions, 7 deletions
diff --git a/webkit/support/platform_support_win.cc b/webkit/support/platform_support_win.cc index 4b1c6d4..a7c264b 100644 --- a/webkit/support/platform_support_win.cc +++ b/webkit/support/platform_support_win.cc @@ -4,6 +4,43 @@ #include "webkit/support/platform_support.h" +#include "base/base_paths.h" +#include "base/file_path.h" +#include "base/file_util.h" +#include "base/logging.h" +#include "base/path_service.h" +#include "base/resource_util.h" +#include "base/string16.h" +#include "base/string_piece.h" +#include "grit/webkit_chromium_resources.h" +#include "grit/webkit_resources.h" + +#define MAX_LOADSTRING 100 + +namespace { + +FilePath GetResourceFilePath(const char* ascii_name) { + FilePath path; + PathService::Get(base::DIR_EXE, &path); + path = path.AppendASCII("DumpRenderTree_resources"); + return path.AppendASCII(ascii_name); +} + +base::StringPiece GetRawDataResource(HMODULE module, int resource_id) { + void* data_ptr; + size_t data_size; + return base::GetDataResourceFromModule(module, resource_id, &data_ptr, + &data_size) + ? base::StringPiece(static_cast<char*>(data_ptr), data_size) + : base::StringPiece(); +} + +base::StringPiece NetResourceProvider(int key) { + return GetRawDataResource(::GetModuleHandle(NULL), key); +} + +} // namespace + namespace webkit_support { // TODO(tkent): Implement some of the followings for platform-dependent tasks @@ -22,3 +59,68 @@ void AfterShutdown() { } } // namespace webkit_support + +namespace webkit_glue { + +string16 GetLocalizedString(int message_id) { + wchar_t localized[MAX_LOADSTRING]; + int length = ::LoadString(::GetModuleHandle(NULL), message_id, + localized, MAX_LOADSTRING); + if (!length && ::GetLastError() == ERROR_RESOURCE_NAME_NOT_FOUND) { + NOTREACHED(); + return L"No string for this identifier!"; + } + return string16(localized, length); +} + +base::StringPiece GetDataResource(int resource_id) { + switch (resource_id) { + case IDR_BROKENIMAGE: { + // Use webkit's broken image icon (16x16) + static std::string broken_image_data; + if (broken_image_data.empty()) { + FilePath path = GetResourceFilePath("missingImage.gif"); + bool success = file_util::ReadFileToString(path, &broken_image_data); + if (!success) { + LOG(FATAL) << "Failed reading: " << path.value(); + } + } + return broken_image_data; + } + case IDR_TEXTAREA_RESIZER: { + // Use webkit's text area resizer image. + static std::string resize_corner_data; + if (resize_corner_data.empty()) { + FilePath path = GetResourceFilePath("textAreaResizeCorner.png"); + bool success = file_util::ReadFileToString(path, &resize_corner_data); + if (!success) { + LOG(FATAL) << "Failed reading: " << path.value(); + } + } + return resize_corner_data; + } + + case IDR_SEARCH_CANCEL: + case IDR_SEARCH_CANCEL_PRESSED: + case IDR_SEARCH_MAGNIFIER: + case IDR_SEARCH_MAGNIFIER_RESULTS: + case IDR_MEDIA_PAUSE_BUTTON: + case IDR_MEDIA_PLAY_BUTTON: + case IDR_MEDIA_PLAY_BUTTON_DISABLED: + case IDR_MEDIA_SOUND_FULL_BUTTON: + case IDR_MEDIA_SOUND_NONE_BUTTON: + case IDR_MEDIA_SOUND_DISABLED: + case IDR_MEDIA_SLIDER_THUMB: + case IDR_MEDIA_VOLUME_SLIDER_THUMB: + case IDR_DEVTOOLS_INJECT_WEBKIT_JS: + case IDR_DEVTOOLS_INJECT_DISPATCH_JS: + return NetResourceProvider(resource_id); + + default: + break; + } + + return base::StringPiece(); +} + +} // namespace webkit_glue diff --git a/webkit/support/webkit_support.gypi b/webkit/support/webkit_support.gypi index 84ad4c0..9e5a358 100644 --- a/webkit/support/webkit_support.gypi +++ b/webkit/support/webkit_support.gypi @@ -53,12 +53,23 @@ '<(DEPTH)/webkit/tools/test_shell/test_shell_webmimeregistry_impl.cc', '<(DEPTH)/webkit/tools/test_shell/test_shell_webmimeregistry_impl.h', ], - 'copies': [ - { - 'destination': '<(SHARED_INTERMEDIATE_DIR)/webkit', - 'files': ['../tools/test_shell/resources/textAreaResizeCorner.png'], - }, - ] + 'conditions': [ + ['OS=="win"', { + 'copies': [{ + 'destination': '<(PRODUCT_DIR)/DumpRenderTree_resources', + 'files': [ + '../tools/test_shell/resources/missingImage.gif', + '../tools/test_shell/resources/textAreaResizeCorner.png', + ], + }], + }], + ['OS=="mac"', { + 'copies': [{ + 'destination': '<(SHARED_INTERMEDIATE_DIR)/webkit', + 'files': ['../tools/test_shell/resources/textAreaResizeCorner.png'], + }], + }], + ], }, ], } diff --git a/webkit/support/webkit_support_glue.cc b/webkit/support/webkit_support_glue.cc index df0f7da..2d77d16 100644 --- a/webkit/support/webkit_support_glue.cc +++ b/webkit/support/webkit_support_glue.cc @@ -45,7 +45,7 @@ bool IsProtocolSupportedForMedia(const GURL& url) { return false; } -#if !defined(OS_MACOSX) +#if !defined(OS_MACOSX) && !defined(OS_WIN) // These functions should be implemented in platform_support_*.cc string16 GetLocalizedString(int message_id) { // TODO(tkent): implement this. |