Index: webkit/tools/test_shell/test_shell_win.cc |
diff --git a/webkit/tools/test_shell/test_shell_win.cc b/webkit/tools/test_shell/test_shell_win.cc |
deleted file mode 100644 |
index a11f39eee9d1c1ebec49dbec9ea4e4ad4eed31a4..0000000000000000000000000000000000000000 |
--- a/webkit/tools/test_shell/test_shell_win.cc |
+++ /dev/null |
@@ -1,676 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "webkit/tools/test_shell/test_shell.h" |
- |
-#include <windows.h> |
-#include <commdlg.h> |
-#include <objbase.h> |
-#include <process.h> |
-#include <shlwapi.h> |
- |
-#include "base/command_line.h" |
-#include "base/containers/stack_container.h" |
-#include "base/debug/trace_event.h" |
-#include "base/file_util.h" |
-#include "base/message_loop.h" |
-#include "base/path_service.h" |
-#include "base/string_util.h" |
-#include "base/strings/string_piece.h" |
-#include "base/utf_string_conversions.h" |
-#include "base/win/resource_util.h" |
-#include "breakpad/src/client/windows/handler/exception_handler.h" |
-#include "grit/webkit_chromium_resources.h" |
-#include "grit/webkit_resources.h" |
-#include "net/base/net_module.h" |
-#include "net/url_request/url_request_file_job.h" |
-#include "skia/ext/bitmap_platform_device.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
-#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
-#include "ui/base/win/hwnd_util.h" |
-#include "ui/base/win/scoped_ole_initializer.h" |
-#include "webkit/glue/webkit_glue.h" |
-#include "webkit/glue/webpreferences.h" |
-#include "webkit/plugins/npapi/plugin_list.h" |
-#include "webkit/tools/test_shell/resource.h" |
-#include "webkit/tools/test_shell/test_navigation_controller.h" |
-#include "webkit/tools/test_shell/test_shell_devtools_agent.h" |
-#include "webkit/tools/test_shell/test_shell_switches.h" |
-#include "webkit/tools/test_shell/test_shell_webkit_init.h" |
-#include "webkit/tools/test_shell/test_webview_delegate.h" |
- |
-using WebKit::WebWidget; |
- |
-#define MAX_LOADSTRING 100 |
- |
-#define BUTTON_WIDTH 72 |
-#define URLBAR_HEIGHT 24 |
- |
-// Global Variables: |
-static wchar_t g_windowTitle[MAX_LOADSTRING]; // The title bar text |
-static wchar_t g_windowClass[MAX_LOADSTRING]; // The main window class name |
- |
-// This is only set for layout tests. It is used to determine the name of a |
-// minidump file. |
-static const size_t kPathBufSize = 2048; |
-static wchar_t g_currentTestName[kPathBufSize]; |
- |
-// Forward declarations of functions included in this code module: |
-static INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); |
- |
-// Hide the window offscreen when in layout test mode. |
-// This would correspond with a minimized window position if x = y = -32000. |
-// However we shift the x to 0 to pass test cross-frame-access-put.html |
-// which expects screenX/screenLeft to be 0 (http://b/issue?id=1227945). |
-// TODO(ericroman): x should be defined as 0 rather than -4. There is |
-// probably a frameborder not being accounted for in the setting/getting. |
-const int kTestWindowXLocation = -4; |
-const int kTestWindowYLocation = -32000; |
- |
-namespace { |
- |
-// This method is used to keep track of the current test name so when we write |
-// a minidump file, we have the test name in the minidump filename. |
-void SetCurrentTestName(const char* path) { |
- const char* lastSlash = strrchr(path, '/'); |
- if (lastSlash) { |
- ++lastSlash; |
- } else { |
- lastSlash = path; |
- } |
- |
- base::wcslcpy(g_currentTestName, |
- UTF8ToWide(lastSlash).c_str(), |
- arraysize(g_currentTestName)); |
-} |
- |
-bool MinidumpCallback(const wchar_t *dumpPath, |
- const wchar_t *minidumpID, |
- void *context, |
- EXCEPTION_POINTERS *exinfo, |
- MDRawAssertionInfo *assertion, |
- bool succeeded) { |
- // Warning: Don't use the heap in this function. It may be corrupted. |
- if (!g_currentTestName[0]) |
- return false; |
- |
- // Try to rename the minidump file to include the crashed test's name. |
- // StackString uses the stack but overflows onto the heap. But we don't |
- // care too much about being completely correct here, since most crashes |
- // will be happening on developers' machines where they have debuggers. |
- base::StackString16<kPathBufSize * 2> origPath; |
- origPath->append(dumpPath); |
- origPath->push_back(base::FilePath::kSeparators[0]); |
- origPath->append(minidumpID); |
- origPath->append(L".dmp"); |
- |
- base::StackString16<kPathBufSize * 2> newPath; |
- newPath->append(dumpPath); |
- newPath->push_back(base::FilePath::kSeparators[0]); |
- newPath->append(g_currentTestName); |
- newPath->append(L"-"); |
- newPath->append(minidumpID); |
- newPath->append(L".dmp"); |
- |
- // May use the heap, but oh well. If this fails, we'll just have the |
- // original dump file lying around. |
- _wrename(origPath->c_str(), newPath->c_str()); |
- |
- return false; |
-} |
- |
-// Helper method for getting the path to the test shell resources directory. |
-base::FilePath GetResourcesFilePath() { |
- base::FilePath path; |
- PathService::Get(base::DIR_SOURCE_ROOT, &path); |
- path = path.AppendASCII("webkit"); |
- path = path.AppendASCII("tools"); |
- path = path.AppendASCII("test_shell"); |
- return path.AppendASCII("resources"); |
-} |
- |
-static base::StringPiece GetRawDataResource(HMODULE module, int resource_id) { |
- void* data_ptr; |
- size_t data_size; |
- return base::win::GetDataResourceFromModule(module, resource_id, &data_ptr, |
- &data_size) |
- ? base::StringPiece(static_cast<char*>(data_ptr), data_size) |
- : base::StringPiece(); |
-} |
- |
-} // namespace |
- |
-// static |
-HINSTANCE TestShell::instance_handle_; |
-ui::ScopedOleInitializer* TestShell::ole_initializer_; |
- |
-///////////////////////////////////////////////////////////////////////////// |
-// static methods on TestShell |
- |
-const MINIDUMP_TYPE kFullDumpType = static_cast<MINIDUMP_TYPE>( |
- MiniDumpWithFullMemory | // Full memory from process. |
- MiniDumpWithProcessThreadData | // Get PEB and TEB. |
- MiniDumpWithHandleData); // Get all handle information. |
- |
-void TestShell::InitializeTestShell(bool layout_test_mode, |
- bool allow_external_pages) { |
- ole_initializer_ = new ui::ScopedOleInitializer(); |
- |
- window_list_ = new WindowList; |
- instance_handle_ = ::GetModuleHandle(NULL); |
- layout_test_mode_ = layout_test_mode; |
- allow_external_pages_ = allow_external_pages; |
- |
- web_prefs_ = new WebPreferences; |
- |
- ResetWebPreferences(); |
- |
- // Register the Ahem font used by layout tests. |
- DWORD num_fonts = 1; |
- void* font_ptr; |
- size_t font_size; |
- if (base::win::GetDataResourceFromModule(::GetModuleHandle(NULL), |
- IDR_AHEM_FONT, &font_ptr, &font_size)) { |
- HANDLE rc = AddFontMemResourceEx(font_ptr, font_size, 0, &num_fonts); |
- DCHECK(rc != 0); |
- } |
- |
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
- if (parsed_command_line.HasSwitch(test_shell::kCrashDumps)) { |
- base::string16 dir( |
- parsed_command_line.GetSwitchValueNative(test_shell::kCrashDumps)); |
- if (parsed_command_line.HasSwitch(test_shell::kCrashDumpsFulldump)) { |
- new google_breakpad::ExceptionHandler( |
- dir, // dump_path |
- NULL, // filter |
- &MinidumpCallback, // callback |
- NULL, // callback_context |
- google_breakpad::ExceptionHandler::HANDLER_ALL, // handler_types |
- kFullDumpType, // dump_type |
- static_cast<const wchar_t*>(NULL), // pipe_name |
- NULL); // custom_info |
- } else { |
- new google_breakpad::ExceptionHandler( |
- dir, // dump_path |
- NULL, // filter |
- &MinidumpCallback, // callback |
- NULL, // callback_context |
- google_breakpad::ExceptionHandler::HANDLER_ALL); // handler_tpes |
- } |
- } |
-} |
- |
-void TestShell::DestroyWindow(gfx::NativeWindow windowHandle) { |
- // Do we want to tear down some of the machinery behind the scenes too? |
- RemoveWindowFromList(windowHandle); |
- ::DestroyWindow(windowHandle); |
-} |
- |
-void TestShell::PlatformShutdown() { |
- delete ole_initializer_; |
- ole_initializer_ = NULL; |
-} |
- |
-ATOM TestShell::RegisterWindowClass() { |
- LoadString(instance_handle_, IDS_APP_TITLE, g_windowTitle, MAX_LOADSTRING); |
- LoadString(instance_handle_, IDC_TESTSHELL, g_windowClass, MAX_LOADSTRING); |
- |
- WNDCLASSEX wcex = { |
- sizeof(WNDCLASSEX), |
- CS_HREDRAW | CS_VREDRAW, |
- TestShell::WndProc, |
- 0, |
- 0, |
- instance_handle_, |
- LoadIcon(instance_handle_, MAKEINTRESOURCE(IDI_TESTSHELL)), |
- LoadCursor(NULL, IDC_ARROW), |
- 0, |
- MAKEINTRESOURCE(IDC_TESTSHELL), |
- g_windowClass, |
- LoadIcon(instance_handle_, MAKEINTRESOURCE(IDI_SMALL)), |
- }; |
- return RegisterClassEx(&wcex); |
-} |
- |
-void TestShell::DumpAllBackForwardLists(base::string16* result) { |
- result->clear(); |
- for (WindowList::iterator iter = TestShell::windowList()->begin(); |
- iter != TestShell::windowList()->end(); iter++) { |
- HWND hwnd = *iter; |
- TestShell* shell = |
- static_cast<TestShell*>(ui::GetWindowUserData(hwnd)); |
- shell->DumpBackForwardList(result); |
- } |
-} |
- |
-std::string TestShell::RewriteLocalUrl(const std::string& url) { |
- // Convert file:///tmp/LayoutTests urls to the actual location on disk. |
- const char kPrefix[] = "file:///tmp/LayoutTests/"; |
- const int kPrefixLen = arraysize(kPrefix) - 1; |
- |
- std::string new_url(url); |
- if (url.compare(0, kPrefixLen, kPrefix, kPrefixLen) == 0) { |
- base::FilePath replace_url; |
- PathService::Get(base::DIR_EXE, &replace_url); |
- replace_url = replace_url.DirName(); |
- replace_url = replace_url.DirName(); |
- replace_url = replace_url.AppendASCII("third_party"); |
- replace_url = replace_url.AppendASCII("WebKit"); |
- replace_url = replace_url.AppendASCII("LayoutTests"); |
- base::string16 replace_url_str = replace_url.value(); |
- replace_url_str.push_back(L'/'); |
- new_url = std::string("file:///") + |
- UTF16ToUTF8(replace_url_str).append(url.substr(kPrefixLen)); |
- } |
- return new_url; |
-} |
- |
- |
- |
-///////////////////////////////////////////////////////////////////////////// |
-// TestShell implementation |
- |
-void TestShell::PlatformCleanUp() { |
- // When the window is destroyed, tell the Edit field to forget about us, |
- // otherwise we will crash. |
- ui::SetWindowProc(m_editWnd, default_edit_wnd_proc_); |
- ui::SetWindowUserData(m_editWnd, NULL); |
-} |
- |
-void TestShell::EnableUIControl(UIControl control, bool is_enabled) { |
- int id; |
- switch (control) { |
- case BACK_BUTTON: |
- id = IDC_NAV_BACK; |
- break; |
- case FORWARD_BUTTON: |
- id = IDC_NAV_FORWARD; |
- break; |
- case STOP_BUTTON: |
- id = IDC_NAV_STOP; |
- break; |
- default: |
- NOTREACHED() << "Unknown UI control"; |
- return; |
- } |
- EnableWindow(GetDlgItem(m_mainWnd, id), is_enabled); |
-} |
- |
-bool TestShell::Initialize(const GURL& starting_url) { |
- // Perform application initialization: |
- m_mainWnd = CreateWindow(g_windowClass, g_windowTitle, |
- WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, |
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, |
- NULL, NULL, instance_handle_, NULL); |
- ui::SetWindowUserData(m_mainWnd, this); |
- |
- HWND hwnd; |
- int x = 0; |
- |
- hwnd = CreateWindow(L"BUTTON", L"Back", |
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , |
- x, 0, BUTTON_WIDTH, URLBAR_HEIGHT, |
- m_mainWnd, (HMENU) IDC_NAV_BACK, instance_handle_, 0); |
- x += BUTTON_WIDTH; |
- |
- hwnd = CreateWindow(L"BUTTON", L"Forward", |
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , |
- x, 0, BUTTON_WIDTH, URLBAR_HEIGHT, |
- m_mainWnd, (HMENU) IDC_NAV_FORWARD, instance_handle_, 0); |
- x += BUTTON_WIDTH; |
- |
- hwnd = CreateWindow(L"BUTTON", L"Reload", |
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , |
- x, 0, BUTTON_WIDTH, URLBAR_HEIGHT, |
- m_mainWnd, (HMENU) IDC_NAV_RELOAD, instance_handle_, 0); |
- x += BUTTON_WIDTH; |
- |
- hwnd = CreateWindow(L"BUTTON", L"Stop", |
- WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON , |
- x, 0, BUTTON_WIDTH, URLBAR_HEIGHT, |
- m_mainWnd, (HMENU) IDC_NAV_STOP, instance_handle_, 0); |
- x += BUTTON_WIDTH; |
- |
- // this control is positioned by ResizeSubViews |
- m_editWnd = CreateWindow(L"EDIT", 0, |
- WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | |
- ES_AUTOVSCROLL | ES_AUTOHSCROLL, |
- x, 0, 0, 0, m_mainWnd, 0, instance_handle_, 0); |
- |
- default_edit_wnd_proc_ = ui::SetWindowProc(m_editWnd, TestShell::EditWndProc); |
- ui::SetWindowUserData(m_editWnd, this); |
- |
- dev_tools_agent_.reset(new TestShellDevToolsAgent()); |
- |
- // create webview |
- m_webViewHost.reset( |
- WebViewHost::Create(m_mainWnd, |
- delegate_.get(), |
- dev_tools_agent_.get(), |
- *TestShell::web_prefs_)); |
- dev_tools_agent_->SetWebView(m_webViewHost->webview()); |
- delegate_->RegisterDragDrop(); |
- |
- // Load our initial content. |
- if (starting_url.is_valid()) |
- LoadURL(starting_url); |
- |
- ShowWindow(webViewWnd(), SW_SHOW); |
- |
- if (IsSVGTestURL(starting_url)) { |
- SizeToSVG(); |
- } else { |
- SizeToDefault(); |
- } |
- |
- return true; |
-} |
- |
-void TestShell::InteractiveSetFocus(WebWidgetHost* host, bool enable) { |
- if (!enable && ::GetFocus() == host->view_handle()) |
- ::SetFocus(NULL); |
-} |
- |
-WebWidget* TestShell::CreatePopupWidget() { |
- DCHECK(!m_popupHost); |
- m_popupHost = WebWidgetHost::Create(NULL, popup_delegate_.get()); |
- ShowWindow(popupWnd(), SW_SHOW); |
- |
- return m_popupHost->webwidget(); |
-} |
- |
-void TestShell::ClosePopup() { |
- PostMessage(popupWnd(), WM_CLOSE, 0, 0); |
- m_popupHost = NULL; |
-} |
- |
-void TestShell::SizeTo(int width, int height) { |
- RECT rc, rw; |
- GetClientRect(m_mainWnd, &rc); |
- GetWindowRect(m_mainWnd, &rw); |
- |
- int client_width = rc.right - rc.left; |
- int window_width = rw.right - rw.left; |
- window_width = (window_width - client_width) + width; |
- |
- int client_height = rc.bottom - rc.top; |
- int window_height = rw.bottom - rw.top; |
- window_height = (window_height - client_height) + height; |
- |
- // add space for the url bar: |
- window_height += URLBAR_HEIGHT; |
- |
- SetWindowPos(m_mainWnd, NULL, 0, 0, window_width, window_height, |
- SWP_NOMOVE | SWP_NOZORDER); |
-} |
- |
-void TestShell::ResizeSubViews() { |
- RECT rc; |
- GetClientRect(m_mainWnd, &rc); |
- |
- int x = BUTTON_WIDTH * 4; |
- MoveWindow(m_editWnd, x, 0, rc.right - x, URLBAR_HEIGHT, TRUE); |
- |
- MoveWindow(webViewWnd(), 0, URLBAR_HEIGHT, rc.right, |
- rc.bottom - URLBAR_HEIGHT, TRUE); |
-} |
- |
-void TestShell::LoadURLForFrame(const GURL& url, |
- const base::string16& frame_name) { |
- if (!url.is_valid()) |
- return; |
- |
- TRACE_EVENT_BEGIN_ETW("url.load", this, url.spec()); |
- |
- if (IsSVGTestURL(url)) { |
- SizeToSVG(); |
- } else { |
- // only resize back to the default when running tests |
- if (layout_test_mode()) |
- SizeToDefault(); |
- } |
- |
- navigation_controller_->LoadEntry( |
- new TestNavigationEntry(-1, url, frame_name)); |
-} |
- |
-LRESULT CALLBACK TestShell::WndProc(HWND hwnd, UINT message, WPARAM wParam, |
- LPARAM lParam) { |
- TestShell* shell = static_cast<TestShell*>(ui::GetWindowUserData(hwnd)); |
- |
- switch (message) { |
- case WM_COMMAND: |
- { |
- int wmId = LOWORD(wParam); |
- int wmEvent = HIWORD(wParam); |
- |
- switch (wmId) { |
- case IDM_ABOUT: |
- DialogBox(shell->instance_handle_, MAKEINTRESOURCE(IDD_ABOUTBOX), hwnd, |
- About); |
- break; |
- case IDM_EXIT: |
- DestroyWindow(hwnd); |
- break; |
- case IDC_NAV_BACK: |
- shell->GoBackOrForward(-1); |
- break; |
- case IDC_NAV_FORWARD: |
- shell->GoBackOrForward(1); |
- break; |
- case IDC_NAV_RELOAD: |
- case IDC_NAV_STOP: |
- { |
- if (wmId == IDC_NAV_RELOAD) { |
- shell->Reload(); |
- } else { |
- shell->webView()->mainFrame()->stopLoading(); |
- } |
- } |
- break; |
- case IDM_DUMP_BODY_TEXT: |
- shell->DumpDocumentText(); |
- break; |
- case IDM_DUMP_RENDER_TREE: |
- shell->DumpRenderTree(); |
- break; |
- case IDM_ENABLE_IMAGES: |
- case IDM_ENABLE_PLUGINS: |
- case IDM_ENABLE_SCRIPTS: { |
- HMENU menu = GetSubMenu(GetMenu(hwnd), 1); |
- bool was_checked = |
- (GetMenuState(menu, wmId, MF_BYCOMMAND) & MF_CHECKED) != 0; |
- CheckMenuItem(menu, wmId, |
- MF_BYCOMMAND | (was_checked ? MF_UNCHECKED : MF_CHECKED)); |
- switch (wmId) { |
- case IDM_ENABLE_IMAGES: |
- shell->set_allow_images(!was_checked); |
- break; |
- case IDM_ENABLE_PLUGINS: |
- shell->set_allow_plugins(!was_checked); |
- break; |
- case IDM_ENABLE_SCRIPTS: |
- shell->set_allow_scripts(!was_checked); |
- break; |
- } |
- break; |
- } |
- case IDM_SHOW_DEV_TOOLS: |
- shell->ShowDevTools(); |
- break; |
- } |
- } |
- break; |
- |
- case WM_DESTROY: |
- { |
- |
- RemoveWindowFromList(hwnd); |
- |
- if (TestShell::windowList()->empty() || shell->is_modal()) { |
- MessageLoop::current()->PostTask(FROM_HERE, |
- MessageLoop::QuitClosure()); |
- } |
- delete shell; |
- } |
- return 0; |
- |
- case WM_SIZE: |
- if (shell->webView()) |
- shell->ResizeSubViews(); |
- return 0; |
- } |
- |
- return DefWindowProc(hwnd, message, wParam, lParam); |
-} |
- |
- |
-#define MAX_URL_LENGTH 1024 |
- |
-LRESULT CALLBACK TestShell::EditWndProc(HWND hwnd, UINT message, |
- WPARAM wParam, LPARAM lParam) { |
- TestShell* shell = |
- static_cast<TestShell*>(ui::GetWindowUserData(hwnd)); |
- |
- switch (message) { |
- case WM_CHAR: |
- if (wParam == VK_RETURN) { |
- wchar_t str[MAX_URL_LENGTH + 1]; // Leave room for adding a NULL; |
- *((LPWORD)str) = MAX_URL_LENGTH; |
- LRESULT str_len = SendMessage(hwnd, EM_GETLINE, 0, (LPARAM)str); |
- if (str_len > 0) { |
- str[str_len] = 0; // EM_GETLINE doesn't NULL terminate. |
- shell->LoadURL(GURL(str)); |
- } |
- |
- return 0; |
- } |
- } |
- |
- return (LRESULT) CallWindowProc(shell->default_edit_wnd_proc_, hwnd, |
- message, wParam, lParam); |
-} |
- |
- |
-// Message handler for about box. |
-INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { |
- UNREFERENCED_PARAMETER(lParam); |
- switch (message) { |
- case WM_INITDIALOG: |
- return (INT_PTR)TRUE; |
- |
- case WM_COMMAND: |
- if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { |
- EndDialog(hDlg, LOWORD(wParam)); |
- return (INT_PTR)TRUE; |
- } |
- break; |
- } |
- return (INT_PTR)FALSE; |
-} |
- |
-bool TestShell::PromptForSaveFile(const wchar_t* prompt_title, |
- base::FilePath* result) { |
- wchar_t path_buf[MAX_PATH] = L"data.txt"; |
- |
- OPENFILENAME info = {0}; |
- info.lStructSize = sizeof(info); |
- info.hwndOwner = m_mainWnd; |
- info.hInstance = instance_handle_; |
- info.lpstrFilter = L"*.txt\0"; |
- info.lpstrFile = path_buf; |
- info.nMaxFile = arraysize(path_buf); |
- info.lpstrTitle = prompt_title; |
- if (!GetSaveFileName(&info)) |
- return false; |
- |
- *result = base::FilePath(info.lpstrFile); |
- return true; |
-} |
- |
-// static |
-void TestShell::ShowStartupDebuggingDialog() { |
- MessageBox(NULL, L"attach to me?", L"test_shell", MB_OK); |
-} |
- |
-// static |
-base::StringPiece TestShell::ResourceProvider(int key) { |
- return GetRawDataResource(::GetModuleHandle(NULL), key); |
-} |
- |
- |
-base::string16 TestShellWebKitInit::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 base::string16(localized, length); |
-} |
- |
-// TODO(tc): Convert this to using resources from test_shell.rc. |
-base::StringPiece TestShellWebKitInit::GetDataResource( |
- int resource_id, |
- ui::ScaleFactor scale_factor) { |
- switch (resource_id) { |
- case IDR_BROKENIMAGE: { |
- // Use webkit's broken image icon (16x16) |
- static std::string broken_image_data; |
- if (broken_image_data.empty()) { |
- base::FilePath path = GetResourcesFilePath(); |
- path = path.AppendASCII("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()) { |
- base::FilePath path = GetResourcesFilePath(); |
- path = path.AppendASCII("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_INPUT_SPEECH: |
- case IDR_INPUT_SPEECH_RECORDING: |
- case IDR_INPUT_SPEECH_WAITING: |
- //TODO(flackr): Pass scale_factor. |
- return TestShell::ResourceProvider(resource_id); |
- |
- default: |
- break; |
- } |
- |
- return base::StringPiece(); |
-} |
- |
-///////////////////////////////////////////////////////////////////////////// |
-// WebKit glue functions |
- |
-namespace webkit_glue { |
- |
-bool EnsureFontLoaded(HFONT font) { |
- return true; |
-} |
- |
-bool DownloadUrl(const std::string& url, HWND caller_window) { |
- return false; |
-} |
- |
-} // namespace webkit_glue |