summaryrefslogtreecommitdiffstats
path: root/webkit
diff options
context:
space:
mode:
authortkent@chromium.org <tkent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-25 04:55:29 +0000
committertkent@chromium.org <tkent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-25 04:55:29 +0000
commit77513615b068588ddb9c07079f0dc46e35dd3392 (patch)
tree43b7ba4cf472028d5985b39fdd65d21bb86f8b01 /webkit
parent1559f51e06ea7ac7e466338eec69b6a924a10512 (diff)
downloadchromium_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.cc102
-rw-r--r--webkit/support/webkit_support.gypi23
-rw-r--r--webkit/support/webkit_support_glue.cc2
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.