| OLD | NEW |
| 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "webkit/default_plugin/plugin_impl_win.h" | 5 #include "webkit/default_plugin/plugin_impl_win.h" |
| 6 | 6 |
| 7 #include <shellapi.h> | 7 #include <shellapi.h> |
| 8 | 8 |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 26 matching lines...) Expand all Loading... |
| 37 installation_job_monitor_thread_( | 37 installation_job_monitor_thread_( |
| 38 new PluginInstallationJobMonitorThread()), | 38 new PluginInstallationJobMonitorThread()), |
| 39 plugin_database_handler_(*this), | 39 plugin_database_handler_(*this), |
| 40 plugin_download_url_for_display_(false) { | 40 plugin_download_url_for_display_(false) { |
| 41 } | 41 } |
| 42 | 42 |
| 43 PluginInstallerImpl::~PluginInstallerImpl() { | 43 PluginInstallerImpl::~PluginInstallerImpl() { |
| 44 installation_job_monitor_thread_->Stop(); | 44 installation_job_monitor_thread_->Stop(); |
| 45 | 45 |
| 46 if (bold_font_) | 46 if (bold_font_) |
| 47 ::DeleteObject(bold_font_); | 47 DeleteObject(bold_font_); |
| 48 | 48 |
| 49 if (underline_font_) | 49 if (underline_font_) |
| 50 ::DeleteObject(underline_font_); | 50 DeleteObject(underline_font_); |
| 51 | 51 |
| 52 if (activex_installer_) { | 52 if (activex_installer_) { |
| 53 activex_installer_->Cleanup(); | 53 activex_installer_->Cleanup(); |
| 54 activex_installer_->Release(); | 54 activex_installer_->Release(); |
| 55 } | 55 } |
| 56 | 56 |
| 57 if (tooltip_) | 57 if (tooltip_) |
| 58 ::DestroyWindow(tooltip_); | 58 DestroyWindow(tooltip_); |
| 59 } | 59 } |
| 60 | 60 |
| 61 bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, | 61 bool PluginInstallerImpl::Initialize(HINSTANCE module_handle, NPP instance, |
| 62 NPMIMEType mime_type, int16 argc, | 62 NPMIMEType mime_type, int16 argc, |
| 63 char* argn[], char* argv[]) { | 63 char* argn[], char* argv[]) { |
| 64 DLOG(INFO) << __FUNCTION__ << " Mime Type : " << mime_type; | 64 DLOG(INFO) << __FUNCTION__ << " Mime Type : " << mime_type; |
| 65 DCHECK(instance != NULL); | 65 DCHECK(instance != NULL); |
| 66 DCHECK(module_handle != NULL); | 66 DCHECK(module_handle != NULL); |
| 67 | 67 |
| 68 instance_ = instance; | 68 instance_ = instance; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 plugin_database_handler_.DownloadPluginsFileIfNeeded(plugin_finder_url_); | 111 plugin_database_handler_.DownloadPluginsFileIfNeeded(plugin_finder_url_); |
| 112 } | 112 } |
| 113 | 113 |
| 114 return true; | 114 return true; |
| 115 } | 115 } |
| 116 | 116 |
| 117 void PluginInstallerImpl::Shutdown() { | 117 void PluginInstallerImpl::Shutdown() { |
| 118 if (install_dialog_.IsWindow()) { | 118 if (install_dialog_.IsWindow()) { |
| 119 install_dialog_.DestroyWindow(); | 119 install_dialog_.DestroyWindow(); |
| 120 } | 120 } |
| 121 if (IsWindow()) { | 121 if (IsWindow(hwnd())) { |
| 122 DestroyWindow(); | 122 DestroyWindow(hwnd()); |
| 123 } | 123 } |
| 124 } | 124 } |
| 125 | 125 |
| 126 void PluginInstallerImpl::NewStream(NPStream* stream) { | 126 void PluginInstallerImpl::NewStream(NPStream* stream) { |
| 127 plugin_install_stream_ = stream; | 127 plugin_install_stream_ = stream; |
| 128 } | 128 } |
| 129 | 129 |
| 130 void PluginInstallerImpl::DestroyStream(NPStream* stream, NPError reason) { | 130 void PluginInstallerImpl::DestroyStream(NPStream* stream, NPError reason) { |
| 131 if (stream == plugin_install_stream_) | 131 if (stream == plugin_install_stream_) |
| 132 plugin_install_stream_ = NULL; | 132 plugin_install_stream_ = NULL; |
| (...skipping 28 matching lines...) Expand all Loading... |
| 161 } | 161 } |
| 162 | 162 |
| 163 void PluginInstallerImpl::ClearDisplay() { | 163 void PluginInstallerImpl::ClearDisplay() { |
| 164 enable_click_ = false; | 164 enable_click_ = false; |
| 165 command_.clear(); | 165 command_.clear(); |
| 166 optional_additional_message_.clear(); | 166 optional_additional_message_.clear(); |
| 167 get_plugin_link_message_.clear(); | 167 get_plugin_link_message_.clear(); |
| 168 } | 168 } |
| 169 | 169 |
| 170 void PluginInstallerImpl::RefreshDisplay() { | 170 void PluginInstallerImpl::RefreshDisplay() { |
| 171 if (!IsWindow()) | 171 if (!IsWindow(hwnd())) |
| 172 return; | 172 return; |
| 173 UpdateToolTip(); | 173 UpdateToolTip(); |
| 174 | 174 |
| 175 InvalidateRect(NULL, TRUE); | 175 InvalidateRect(hwnd(), NULL, TRUE); |
| 176 UpdateWindow(); | 176 UpdateWindow(hwnd()); |
| 177 } | 177 } |
| 178 | 178 |
| 179 bool PluginInstallerImpl::CreateToolTip() { | 179 bool PluginInstallerImpl::CreateToolTip() { |
| 180 DWORD ex_styles = IsRTLLayout() ? WS_EX_LAYOUTRTL : 0; | 180 DWORD ex_styles = IsRTLLayout() ? WS_EX_LAYOUTRTL : 0; |
| 181 tooltip_ = CreateWindowEx(ex_styles, TOOLTIPS_CLASS, NULL, | 181 tooltip_ = CreateWindowEx(ex_styles, TOOLTIPS_CLASS, NULL, |
| 182 WS_POPUP | TTS_ALWAYSTIP, | 182 WS_POPUP | TTS_ALWAYSTIP, |
| 183 CW_USEDEFAULT, CW_USEDEFAULT, | 183 CW_USEDEFAULT, CW_USEDEFAULT, |
| 184 CW_USEDEFAULT, CW_USEDEFAULT, | 184 CW_USEDEFAULT, CW_USEDEFAULT, |
| 185 m_hWnd, NULL, NULL, NULL); | 185 hwnd(), NULL, NULL, NULL); |
| 186 if (!tooltip_) | 186 if (!tooltip_) |
| 187 return false; | 187 return false; |
| 188 | 188 |
| 189 // Associate the ToolTip with the tool. | 189 // Associate the ToolTip with the tool. |
| 190 TOOLINFO tool_info = {0}; | 190 TOOLINFO tool_info = {0}; |
| 191 tool_info.cbSize = sizeof(tool_info); | 191 tool_info.cbSize = sizeof(tool_info); |
| 192 tool_info.hwnd = m_hWnd; | 192 tool_info.hwnd = hwnd(); |
| 193 tool_info.uFlags = TTF_IDISHWND | TTF_SUBCLASS; | 193 tool_info.uFlags = TTF_IDISHWND | TTF_SUBCLASS; |
| 194 tool_info.uId = reinterpret_cast<UINT_PTR>(m_hWnd); | 194 tool_info.uId = reinterpret_cast<UINT_PTR>(hwnd()); |
| 195 tool_info.lpszText = NULL; | 195 tool_info.lpszText = NULL; |
| 196 SendMessage(tooltip_, TTM_ADDTOOL, 0, reinterpret_cast<LPARAM>(&tool_info)); | 196 SendMessage(tooltip_, TTM_ADDTOOL, 0, reinterpret_cast<LPARAM>(&tool_info)); |
| 197 SendMessage(tooltip_, TTM_SETMAXTIPWIDTH, 0, TOOLTIP_MAX_WIDTH); | 197 SendMessage(tooltip_, TTM_SETMAXTIPWIDTH, 0, TOOLTIP_MAX_WIDTH); |
| 198 return true; | 198 return true; |
| 199 } | 199 } |
| 200 | 200 |
| 201 void PluginInstallerImpl::UpdateToolTip() { | 201 void PluginInstallerImpl::UpdateToolTip() { |
| 202 if (tooltip_ == NULL) | 202 if (tooltip_ == NULL) |
| 203 return; | 203 return; |
| 204 std::wstring tip = command_; | 204 std::wstring tip = command_; |
| 205 if (!optional_additional_message_.empty()) | 205 if (!optional_additional_message_.empty()) |
| 206 tip += std::wstring(L"\n\r") + optional_additional_message_; | 206 tip += std::wstring(L"\n\r") + optional_additional_message_; |
| 207 | 207 |
| 208 TOOLINFO tool_info = {0}; | 208 TOOLINFO tool_info = {0}; |
| 209 tool_info.cbSize = sizeof(tool_info); | 209 tool_info.cbSize = sizeof(tool_info); |
| 210 tool_info.hwnd = m_hWnd; | 210 tool_info.hwnd = hwnd(); |
| 211 tool_info.uFlags = TTF_IDISHWND; | 211 tool_info.uFlags = TTF_IDISHWND; |
| 212 tool_info.uId = reinterpret_cast<UINT_PTR>(m_hWnd); | 212 tool_info.uId = reinterpret_cast<UINT_PTR>(hwnd()); |
| 213 tool_info.lpszText = const_cast<LPWSTR>(tip.c_str()); | 213 tool_info.lpszText = const_cast<LPWSTR>(tip.c_str()); |
| 214 SendMessage(tooltip_, TTM_UPDATETIPTEXT, 0, (LPARAM)&tool_info); | 214 SendMessage(tooltip_, TTM_UPDATETIPTEXT, 0, (LPARAM)&tool_info); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void PluginInstallerImpl::DisplayAvailablePluginStatus() { | 217 void PluginInstallerImpl::DisplayAvailablePluginStatus() { |
| 218 ClearDisplay(); | 218 ClearDisplay(); |
| 219 enable_click_ = true; | 219 enable_click_ = true; |
| 220 command_ = ReplaceStringForPossibleEmptyReplacement( | 220 command_ = ReplaceStringForPossibleEmptyReplacement( |
| 221 IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG, | 221 IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG, |
| 222 IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME, | 222 IDS_DEFAULT_PLUGIN_GET_PLUGIN_MSG_NO_PLUGIN_NAME, |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 return webkit_glue::GetLocalizedString(messsage_id_without_placeholders); | 309 return webkit_glue::GetLocalizedString(messsage_id_without_placeholders); |
| 310 } else { | 310 } else { |
| 311 std::wstring string_with_placeholders = | 311 std::wstring string_with_placeholders = |
| 312 webkit_glue::GetLocalizedString(message_id_with_placeholders); | 312 webkit_glue::GetLocalizedString(message_id_with_placeholders); |
| 313 return ReplaceStringPlaceholders(string_with_placeholders, | 313 return ReplaceStringPlaceholders(string_with_placeholders, |
| 314 replacement_string, NULL); | 314 replacement_string, NULL); |
| 315 } | 315 } |
| 316 } | 316 } |
| 317 | 317 |
| 318 bool PluginInstallerImpl::SetWindow(HWND parent_window) { | 318 bool PluginInstallerImpl::SetWindow(HWND parent_window) { |
| 319 if (!::IsWindow(parent_window)) { | 319 if (!IsWindow(parent_window)) { |
| 320 // No window created yet. Ignore this call. | 320 // No window created yet. Ignore this call. |
| 321 if (!IsWindow()) | 321 if (!IsWindow(hwnd())) |
| 322 return true; | 322 return true; |
| 323 // Parent window has been destroyed. | 323 // Parent window has been destroyed. |
| 324 Shutdown(); | 324 Shutdown(); |
| 325 return true; | 325 return true; |
| 326 } | 326 } |
| 327 | 327 |
| 328 RECT parent_rect = {0}; | 328 RECT parent_rect = {0}; |
| 329 | 329 |
| 330 if (IsWindow()) { | 330 if (IsWindow(hwnd())) { |
| 331 ::GetClientRect(parent_window, &parent_rect); | 331 GetClientRect(parent_window, &parent_rect); |
| 332 SetWindowPos(NULL, &parent_rect, SWP_SHOWWINDOW); | 332 SetWindowPos(hwnd(), NULL, parent_rect.left, parent_rect.top, |
| 333 parent_rect.right - parent_rect.left, |
| 334 parent_rect.bottom - parent_rect.top, SWP_SHOWWINDOW); |
| 333 return true; | 335 return true; |
| 334 } | 336 } |
| 335 // First time in -- no window created by plugin yet. | 337 // First time in -- no window created by plugin yet. |
| 336 ::GetClientRect(parent_window, &parent_rect); | 338 GetClientRect(parent_window, &parent_rect); |
| 337 Create(parent_window, parent_rect, NULL, WS_CHILD | WS_BORDER); | 339 set_window_style(WS_CHILD | WS_BORDER); |
| 338 DCHECK(IsWindow()); | 340 Init(parent_window, gfx::Rect(parent_rect)); |
| 339 installation_job_monitor_thread_->set_plugin_window(m_hWnd); | 341 DCHECK(IsWindow(hwnd())); |
| 342 installation_job_monitor_thread_->set_plugin_window(hwnd()); |
| 340 | 343 |
| 341 CreateToolTip(); | 344 CreateToolTip(); |
| 342 UpdateToolTip(); | 345 UpdateToolTip(); |
| 343 | 346 |
| 344 UpdateWindow(); | 347 UpdateWindow(hwnd()); |
| 345 ShowWindow(SW_SHOW); | 348 ShowWindow(hwnd(), SW_SHOW); |
| 346 | 349 |
| 347 return true; | 350 return true; |
| 348 } | 351 } |
| 349 | 352 |
| 350 void PluginInstallerImpl::DownloadPlugin() { | 353 void PluginInstallerImpl::DownloadPlugin() { |
| 351 set_plugin_installer_state(PluginDownloadInitiated); | 354 set_plugin_installer_state(PluginDownloadInitiated); |
| 352 | 355 |
| 353 DLOG(INFO) << "Initiating download for plugin URL " | 356 DLOG(INFO) << "Initiating download for plugin URL " |
| 354 << plugin_download_url_.c_str(); | 357 << plugin_download_url_.c_str(); |
| 355 | 358 |
| 356 DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG); | 359 DisplayStatus(IDS_DEFAULT_PLUGIN_DOWNLOADING_PLUGIN_MSG); |
| 357 | 360 |
| 358 if (is_activex_) { | 361 if (is_activex_) { |
| 359 if (activex_installer_ == NULL) { | 362 if (activex_installer_ == NULL) { |
| 360 CComObject<ActiveXInstaller>::CreateInstance(&activex_installer_); | 363 CComObject<ActiveXInstaller>::CreateInstance(&activex_installer_); |
| 361 activex_installer_->AddRef(); | 364 activex_installer_->AddRef(); |
| 362 } | 365 } |
| 363 activex_installer_->StartDownload(activex_clsid_, activex_codebase_, m_hWnd, | 366 activex_installer_->StartDownload(activex_clsid_, activex_codebase_, |
| 364 kActivexInstallResult); | 367 hwnd(), kActivexInstallResult); |
| 365 } else { | 368 } else { |
| 366 if (!plugin_download_url_for_display_) { | 369 if (!plugin_download_url_for_display_) { |
| 367 webkit_glue::DownloadUrl(plugin_download_url_, m_hWnd); | 370 webkit_glue::DownloadUrl(plugin_download_url_, hwnd()); |
| 368 } else { | 371 } else { |
| 369 default_plugin::g_browser->geturl(instance(), | 372 default_plugin::g_browser->geturl(instance(), |
| 370 plugin_download_url_.c_str(), | 373 plugin_download_url_.c_str(), |
| 371 "_blank"); | 374 "_blank"); |
| 372 set_plugin_installer_state(PluginInstallerLaunchSuccess); | 375 set_plugin_installer_state(PluginInstallerLaunchSuccess); |
| 373 DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); | 376 DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); |
| 374 enable_click_ = true; | 377 enable_click_ = true; |
| 375 RefreshDisplay(); | 378 RefreshDisplay(); |
| 376 } | 379 } |
| 377 } | 380 } |
| 378 } | 381 } |
| 379 | 382 |
| 380 void PluginInstallerImpl::DownloadCancelled() { | 383 void PluginInstallerImpl::DownloadCancelled() { |
| 381 DisplayAvailablePluginStatus(); | 384 DisplayAvailablePluginStatus(); |
| 382 } | 385 } |
| 383 | 386 |
| 384 LRESULT PluginInstallerImpl::OnEraseBackGround(UINT message, WPARAM wparam, | 387 LRESULT PluginInstallerImpl::OnEraseBackGround(UINT message, WPARAM wparam, |
| 385 LPARAM lparam, BOOL& handled) { | 388 LPARAM lparam, BOOL& handled) { |
| 386 HDC paint_device_context = reinterpret_cast<HDC>(wparam); | 389 HDC paint_device_context = reinterpret_cast<HDC>(wparam); |
| 387 RECT erase_rect = {0}; | 390 RECT erase_rect = {0}; |
| 388 ::GetClipBox(paint_device_context, &erase_rect); | 391 GetClipBox(paint_device_context, &erase_rect); |
| 389 HBRUSH brush = ::CreateSolidBrush(RGB(252, 235, 162)); | 392 HBRUSH brush = ::CreateSolidBrush(RGB(252, 235, 162)); |
| 390 DCHECK(brush); | 393 DCHECK(brush); |
| 391 ::FillRect(paint_device_context, &erase_rect, brush); | 394 FillRect(paint_device_context, &erase_rect, brush); |
| 392 ::DeleteObject(brush); | 395 DeleteObject(brush); |
| 393 return 1; | 396 return 1; |
| 394 } | 397 } |
| 395 | 398 |
| 396 // Use ICU in order to determine whether the locale is right-to-left. | 399 // Use ICU in order to determine whether the locale is right-to-left. |
| 397 // | 400 // |
| 398 // TODO(idana) bug# 1246452: there is already code in | 401 // TODO(idana) bug# 1246452: there is already code in |
| 399 // app/l10n_util.h/cc that uses ICU to determine the locale direction. We don't | 402 // app/l10n_util.h/cc that uses ICU to determine the locale direction. We don't |
| 400 // currently use this code since code in WebKit should not depend on code in | 403 // currently use this code since code in WebKit should not depend on code in |
| 401 // Chrome. We can fix this by pulling (at least part of) the l10n_util | 404 // Chrome. We can fix this by pulling (at least part of) the l10n_util |
| 402 // functionality up into the Base module. | 405 // functionality up into the Base module. |
| 403 bool PluginInstallerImpl::IsRTLLayout() const { | 406 bool PluginInstallerImpl::IsRTLLayout() const { |
| 404 const Locale& locale = Locale::getDefault(); | 407 const Locale& locale = Locale::getDefault(); |
| 405 const char* lang = locale.getLanguage(); | 408 const char* lang = locale.getLanguage(); |
| 406 | 409 |
| 407 // Check only for Arabic and Hebrew languages for now. | 410 // Check only for Arabic and Hebrew languages for now. |
| 408 if (strcmp(lang, "ar") == 0 || strcmp(lang, "he") == 0) { | 411 if (strcmp(lang, "ar") == 0 || strcmp(lang, "he") == 0) { |
| 409 return true; | 412 return true; |
| 410 } | 413 } |
| 411 return false; | 414 return false; |
| 412 } | 415 } |
| 413 | 416 |
| 414 LRESULT PluginInstallerImpl::OnPaint(UINT message, WPARAM wparam, LPARAM lparam, | 417 LRESULT PluginInstallerImpl::OnPaint(UINT message, WPARAM wparam, LPARAM lparam, |
| 415 BOOL& handled) { | 418 BOOL& handled) { |
| 416 PAINTSTRUCT paint_struct = {0}; | 419 PAINTSTRUCT paint_struct = {0}; |
| 417 BeginPaint(&paint_struct); | 420 BeginPaint(hwnd(), &paint_struct); |
| 418 | 421 |
| 419 int save_dc_context = SaveDC(paint_struct.hdc); | 422 int save_dc_context = SaveDC(paint_struct.hdc); |
| 420 // The drawing order is as below:- | 423 // The drawing order is as below:- |
| 421 // 1. The Get plugin link at the top left corner. | 424 // 1. The Get plugin link at the top left corner. |
| 422 // 2. The plugin icon. | 425 // 2. The plugin icon. |
| 423 // 3. The text describing user actions to the right of the icon. | 426 // 3. The text describing user actions to the right of the icon. |
| 424 SIZE get_plugin_link_extents = {0}; | 427 SIZE get_plugin_link_extents = {0}; |
| 425 HFONT old_font = | 428 HFONT old_font = |
| 426 reinterpret_cast<HFONT>(SelectObject(paint_struct.hdc, regular_font_)); | 429 reinterpret_cast<HFONT>(SelectObject(paint_struct.hdc, regular_font_)); |
| 427 | 430 |
| 428 GetTextExtentPoint32(paint_struct.hdc, get_plugin_link_message_.c_str(), | 431 GetTextExtentPoint32(paint_struct.hdc, get_plugin_link_message_.c_str(), |
| 429 static_cast<int>(get_plugin_link_message_.length()), | 432 static_cast<int>(get_plugin_link_message_.length()), |
| 430 &get_plugin_link_extents); | 433 &get_plugin_link_extents); |
| 431 | 434 |
| 432 POINT device_point = {0}; | 435 POINT device_point = {0}; |
| 433 device_point.x = get_plugin_link_extents.cx; | 436 device_point.x = get_plugin_link_extents.cx; |
| 434 device_point.y = get_plugin_link_extents.cy; | 437 device_point.y = get_plugin_link_extents.cy; |
| 435 LPtoDP(paint_struct.hdc, &device_point, 1); | 438 LPtoDP(paint_struct.hdc, &device_point, 1); |
| 436 | 439 |
| 437 RECT text_rect = {0}; | 440 RECT text_rect = {0}; |
| 438 text_rect.left = 5; | 441 text_rect.left = 5; |
| 439 text_rect.right = text_rect.left + device_point.x; | 442 text_rect.right = text_rect.left + device_point.x; |
| 440 text_rect.top = 5; | 443 text_rect.top = 5; |
| 441 text_rect.bottom = text_rect.top + device_point.y; | 444 text_rect.bottom = text_rect.top + device_point.y; |
| 442 | 445 |
| 443 RECT client_rect = {0}; | 446 RECT client_rect = {0}; |
| 444 GetClientRect(&client_rect); | 447 GetClientRect(hwnd(), &client_rect); |
| 445 | 448 |
| 446 int icon_width = GetSystemMetrics(SM_CXICON); | 449 int icon_width = GetSystemMetrics(SM_CXICON); |
| 447 int icon_height = GetSystemMetrics(SM_CYICON); | 450 int icon_height = GetSystemMetrics(SM_CYICON); |
| 448 | 451 |
| 449 int x = (client_rect.right / 2) - icon_width / 2; | 452 int x = (client_rect.right / 2) - icon_width / 2; |
| 450 int y = (client_rect.bottom / 2) - icon_height / 2; | 453 int y = (client_rect.bottom / 2) - icon_height / 2; |
| 451 | 454 |
| 452 DCHECK(icon_); | 455 DCHECK(icon_); |
| 453 DrawIcon(paint_struct.hdc, x, y, icon_); | 456 DrawIcon(paint_struct.hdc, x, y, icon_); |
| 454 | 457 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 484 // over the plugin window. | 487 // over the plugin window. |
| 485 int window_width = client_rect.right - client_rect.left; | 488 int window_width = client_rect.right - client_rect.left; |
| 486 int window_height = client_rect.bottom - client_rect.top; | 489 int window_height = client_rect.bottom - client_rect.top; |
| 487 | 490 |
| 488 if ((x_origin + command_extents.cx <= window_width) && | 491 if ((x_origin + command_extents.cx <= window_width) && |
| 489 (y_origin + command_extents.cy <= window_height)) { | 492 (y_origin + command_extents.cy <= window_height)) { |
| 490 PaintUserActionInformation(paint_struct.hdc, x_origin, y_origin); | 493 PaintUserActionInformation(paint_struct.hdc, x_origin, y_origin); |
| 491 } | 494 } |
| 492 | 495 |
| 493 RestoreDC(paint_struct.hdc, save_dc_context); | 496 RestoreDC(paint_struct.hdc, save_dc_context); |
| 494 EndPaint(&paint_struct); | 497 EndPaint(hwnd(), &paint_struct); |
| 495 return 0; | 498 return 0; |
| 496 } | 499 } |
| 497 | 500 |
| 498 void PluginInstallerImpl::PaintUserActionInformation(HDC paint_dc, | 501 void PluginInstallerImpl::PaintUserActionInformation(HDC paint_dc, |
| 499 int x_origin, | 502 int x_origin, |
| 500 int y_origin) { | 503 int y_origin) { |
| 501 SelectObject(paint_dc, regular_font_); | 504 SelectObject(paint_dc, regular_font_); |
| 502 | 505 |
| 503 SIZE command_extents = {0}; | 506 SIZE command_extents = {0}; |
| 504 GetTextExtentPoint32(paint_dc, command_.c_str(), | 507 GetTextExtentPoint32(paint_dc, command_.c_str(), |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 | 547 |
| 545 DrawText(paint_dc, optional_additional_message_.c_str(), | 548 DrawText(paint_dc, optional_additional_message_.c_str(), |
| 546 static_cast<int>(optional_additional_message_.length()), | 549 static_cast<int>(optional_additional_message_.length()), |
| 547 &text_rect, DT_CENTER | DT_VCENTER | additional_dt_flags); | 550 &text_rect, DT_CENTER | DT_VCENTER | additional_dt_flags); |
| 548 } | 551 } |
| 549 } | 552 } |
| 550 | 553 |
| 551 void PluginInstallerImpl::ShowInstallDialog() { | 554 void PluginInstallerImpl::ShowInstallDialog() { |
| 552 enable_click_ = false; | 555 enable_click_ = false; |
| 553 install_dialog_.Initialize(this, plugin_name_); | 556 install_dialog_.Initialize(this, plugin_name_); |
| 554 install_dialog_.Create(m_hWnd, NULL); | 557 install_dialog_.Create(hwnd(), NULL); |
| 555 install_dialog_.ShowWindow(SW_SHOW); | 558 install_dialog_.ShowWindow(SW_SHOW); |
| 556 } | 559 } |
| 557 | 560 |
| 558 LRESULT PluginInstallerImpl::OnLButtonDown(UINT message, WPARAM wparam, | 561 LRESULT PluginInstallerImpl::OnLButtonDown(UINT message, WPARAM wparam, |
| 559 LPARAM lparam, BOOL& handled) { | 562 LPARAM lparam, BOOL& handled) { |
| 560 if (!enable_click_) | 563 if (!enable_click_) |
| 561 return 0; | 564 return 0; |
| 562 if (plugin_installer_state() == PluginListDownloaded) { | 565 if (plugin_installer_state() == PluginListDownloaded) { |
| 563 ShowInstallDialog(); | 566 ShowInstallDialog(); |
| 564 NotifyPluginStatus(default_plugin::MISSING_PLUGIN_USER_STARTED_DOWNLOAD); | 567 NotifyPluginStatus(default_plugin::MISSING_PLUGIN_USER_STARTED_DOWNLOAD); |
| 565 } else if (plugin_installer_state_ == PluginInstallerLaunchSuccess) { | 568 } else if (plugin_installer_state_ == PluginInstallerLaunchSuccess) { |
| 566 DCHECK(default_plugin::g_browser); | 569 DCHECK(default_plugin::g_browser); |
| 567 DCHECK(default_plugin::g_browser->geturl); | 570 DCHECK(default_plugin::g_browser->geturl); |
| 568 default_plugin::g_browser->geturl( | 571 default_plugin::g_browser->geturl( |
| 569 instance_, | 572 instance_, |
| 570 "javascript:navigator.plugins.refresh(true)", | 573 "javascript:navigator.plugins.refresh(true)", |
| 571 "_self"); | 574 "_self"); |
| 572 default_plugin::g_browser->geturl( | 575 default_plugin::g_browser->geturl( |
| 573 instance_, | 576 instance_, |
| 574 "javascript:window.location.reload(true)", | 577 "javascript:window.location.reload(true)", |
| 575 "_self"); | 578 "_self"); |
| 576 } | 579 } |
| 577 | 580 |
| 578 return 0; | 581 return 0; |
| 579 } | 582 } |
| 580 | 583 |
| 581 LRESULT PluginInstallerImpl::OnSetCursor(UINT message, WPARAM wparam, | 584 LRESULT PluginInstallerImpl::OnSetCursor(UINT message, WPARAM wparam, |
| 582 LPARAM lparam, BOOL& handled) { | 585 LPARAM lparam, BOOL& handled) { |
| 583 if (enable_click_) { | 586 if (enable_click_) { |
| 584 ::SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND))); | 587 SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_HAND))); |
| 585 return 1; | 588 return 1; |
| 586 } | 589 } |
| 587 handled = FALSE; | 590 handled = FALSE; |
| 588 return 0; | 591 return 0; |
| 589 } | 592 } |
| 590 | 593 |
| 591 LRESULT PluginInstallerImpl::OnRefreshPlugins(UINT message, WPARAM wparam, | 594 LRESULT PluginInstallerImpl::OnRefreshPlugins(UINT message, WPARAM wparam, |
| 592 LPARAM lparam, BOOL& handled) { | 595 LPARAM lparam, BOOL& handled) { |
| 593 DCHECK(default_plugin::g_browser); | 596 DCHECK(default_plugin::g_browser); |
| 594 DCHECK(default_plugin::g_browser->geturl); | 597 DCHECK(default_plugin::g_browser->geturl); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 | 653 |
| 651 LRESULT PluginInstallerImpl::OnActiveXInstallResult(UINT message, | 654 LRESULT PluginInstallerImpl::OnActiveXInstallResult(UINT message, |
| 652 WPARAM wparam, | 655 WPARAM wparam, |
| 653 LPARAM lparam, | 656 LPARAM lparam, |
| 654 BOOL& handled) { | 657 BOOL& handled) { |
| 655 handled = TRUE; | 658 handled = TRUE; |
| 656 | 659 |
| 657 if (SUCCEEDED(wparam)) { | 660 if (SUCCEEDED(wparam)) { |
| 658 set_plugin_installer_state(PluginInstallerLaunchSuccess); | 661 set_plugin_installer_state(PluginInstallerLaunchSuccess); |
| 659 DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); | 662 DisplayStatus(IDS_DEFAULT_PLUGIN_REFRESH_PLUGIN_MSG); |
| 660 PostMessage(kRefreshPluginsMessage, 0, 0); | 663 PostMessage(hwnd(), kRefreshPluginsMessage, 0, 0); |
| 661 } else if ((wparam == INET_E_UNKNOWN_PROTOCOL) || | 664 } else if ((wparam == INET_E_UNKNOWN_PROTOCOL) || |
| 662 (wparam == HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND))) { | 665 (wparam == HRESULT_FROM_WIN32(ERROR_MOD_NOT_FOUND))) { |
| 663 set_plugin_installer_state(PluginDownloadFailed); | 666 set_plugin_installer_state(PluginDownloadFailed); |
| 664 DisplayPluginDownloadFailedStatus(); | 667 DisplayPluginDownloadFailedStatus(); |
| 665 } else { | 668 } else { |
| 666 set_plugin_installer_state(PluginInstallerLaunchFailure); | 669 set_plugin_installer_state(PluginInstallerLaunchFailure); |
| 667 DisplayStatus(IDS_DEFAULT_PLUGIN_INSTALLATION_FAILED_MSG); | 670 DisplayStatus(IDS_DEFAULT_PLUGIN_INSTALLATION_FAILED_MSG); |
| 668 } | 671 } |
| 669 return 0; | 672 return 0; |
| 670 } | 673 } |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 772 return true; | 775 return true; |
| 773 } | 776 } |
| 774 | 777 |
| 775 void PluginInstallerImpl::NotifyPluginStatus(int status) { | 778 void PluginInstallerImpl::NotifyPluginStatus(int status) { |
| 776 default_plugin::g_browser->getvalue( | 779 default_plugin::g_browser->getvalue( |
| 777 instance_, | 780 instance_, |
| 778 static_cast<NPNVariable>( | 781 static_cast<NPNVariable>( |
| 779 default_plugin::kMissingPluginStatusStart + status), | 782 default_plugin::kMissingPluginStatusStart + status), |
| 780 NULL); | 783 NULL); |
| 781 } | 784 } |
| OLD | NEW |