| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "remoting/host/verify_config_window_win.h" | 5 #include "remoting/host/verify_config_window_win.h" |
| 6 | 6 |
| 7 #include <atlbase.h> | 7 #include <atlbase.h> |
| 8 #include <atlwin.h> | 8 #include <atlwin.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 EndDialog(ERROR_CANCELLED); | 29 EndDialog(ERROR_CANCELLED); |
| 30 } | 30 } |
| 31 | 31 |
| 32 void VerifyConfigWindowWin::OnClose() { | 32 void VerifyConfigWindowWin::OnClose() { |
| 33 EndDialog(ERROR_CANCELLED); | 33 EndDialog(ERROR_CANCELLED); |
| 34 } | 34 } |
| 35 | 35 |
| 36 LRESULT VerifyConfigWindowWin::OnInitDialog(HWND wparam, LPARAM lparam) { | 36 LRESULT VerifyConfigWindowWin::OnInitDialog(HWND wparam, LPARAM lparam) { |
| 37 // Set the small window icon. | 37 // Set the small window icon. |
| 38 if (icon_.LoadIcon(IDD, ::GetSystemMetrics(SM_CXSMICON), | 38 if (icon_.LoadIcon(IDD, ::GetSystemMetrics(SM_CXSMICON), |
| 39 ::GetSystemMetrics(SM_CYSMICON)) != NULL) { | 39 ::GetSystemMetrics(SM_CYSMICON)) != nullptr) { |
| 40 SetIcon(icon_, FALSE); | 40 SetIcon(icon_, FALSE); |
| 41 } | 41 } |
| 42 | 42 |
| 43 CenterWindow(); | 43 CenterWindow(); |
| 44 | 44 |
| 45 CWindow email_text(GetDlgItem(IDC_EMAIL)); | 45 CWindow email_text(GetDlgItem(IDC_EMAIL)); |
| 46 email_text.SetWindowText(base::UTF8ToUTF16(email_).c_str()); | 46 email_text.SetWindowText(base::UTF8ToUTF16(email_).c_str()); |
| 47 return TRUE; | 47 return TRUE; |
| 48 } | 48 } |
| 49 | 49 |
| 50 void VerifyConfigWindowWin::OnOk(UINT code, int id, HWND control) { | 50 void VerifyConfigWindowWin::OnOk(UINT code, int id, HWND control) { |
| 51 if (VerifyHostSecretHash()) { | 51 if (VerifyHostSecretHash()) { |
| 52 EndDialog(ERROR_SUCCESS); | 52 EndDialog(ERROR_SUCCESS); |
| 53 } else { | 53 } else { |
| 54 EndDialog(ERROR_LOGON_FAILURE); | 54 EndDialog(ERROR_LOGON_FAILURE); |
| 55 } | 55 } |
| 56 } | 56 } |
| 57 | 57 |
| 58 void VerifyConfigWindowWin::CenterWindow() { | 58 void VerifyConfigWindowWin::CenterWindow() { |
| 59 // Get the window dimensions. | 59 // Get the window dimensions. |
| 60 RECT rect; | 60 RECT rect; |
| 61 if (!GetWindowRect(&rect)) { | 61 if (!GetWindowRect(&rect)) { |
| 62 return; | 62 return; |
| 63 } | 63 } |
| 64 | 64 |
| 65 // Center against the owner window unless it is minimized or invisible. | 65 // Center against the owner window unless it is minimized or invisible. |
| 66 HWND owner = ::GetWindow(m_hWnd, GW_OWNER); | 66 HWND owner = ::GetWindow(m_hWnd, GW_OWNER); |
| 67 if (owner != NULL) { | 67 if (owner != nullptr) { |
| 68 DWORD style = ::GetWindowLong(owner, GWL_STYLE); | 68 DWORD style = ::GetWindowLong(owner, GWL_STYLE); |
| 69 if ((style & WS_MINIMIZE) != 0 || (style & WS_VISIBLE) == 0) { | 69 if ((style & WS_MINIMIZE) != 0 || (style & WS_VISIBLE) == 0) { |
| 70 owner = NULL; | 70 owner = nullptr; |
| 71 } | 71 } |
| 72 } | 72 } |
| 73 | 73 |
| 74 // Make sure that the window will not end up split by a monitor's boundary. | 74 // Make sure that the window will not end up split by a monitor's boundary. |
| 75 RECT area_rect; | 75 RECT area_rect; |
| 76 if (!::SystemParametersInfo(SPI_GETWORKAREA, NULL, &area_rect, NULL)) { | 76 if (!::SystemParametersInfo(SPI_GETWORKAREA, 0, &area_rect, 0)) { |
| 77 return; | 77 return; |
| 78 } | 78 } |
| 79 | 79 |
| 80 // On a multi-monitor system use the monitor where the owner window is shown. | 80 // On a multi-monitor system use the monitor where the owner window is shown. |
| 81 RECT owner_rect = area_rect; | 81 RECT owner_rect = area_rect; |
| 82 if (owner != NULL && ::GetWindowRect(owner, &owner_rect)) { | 82 if (owner != nullptr && ::GetWindowRect(owner, &owner_rect)) { |
| 83 HMONITOR monitor = ::MonitorFromRect(&owner_rect, MONITOR_DEFAULTTONEAREST); | 83 HMONITOR monitor = ::MonitorFromRect(&owner_rect, MONITOR_DEFAULTTONEAREST); |
| 84 if (monitor != NULL) { | 84 if (monitor != nullptr) { |
| 85 MONITORINFO monitor_info = {0}; | 85 MONITORINFO monitor_info = {0}; |
| 86 monitor_info.cbSize = sizeof(monitor_info); | 86 monitor_info.cbSize = sizeof(monitor_info); |
| 87 if (::GetMonitorInfo(monitor, &monitor_info)) { | 87 if (::GetMonitorInfo(monitor, &monitor_info)) { |
| 88 area_rect = monitor_info.rcWork; | 88 area_rect = monitor_info.rcWork; |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 } | 91 } |
| 92 | 92 |
| 93 LONG width = rect.right - rect.left; | 93 LONG width = rect.right - rect.left; |
| 94 LONG height = rect.bottom - rect.top; | 94 LONG height = rect.bottom - rect.top; |
| 95 LONG x = (owner_rect.left + owner_rect.right - width) / 2; | 95 LONG x = (owner_rect.left + owner_rect.right - width) / 2; |
| 96 LONG y = (owner_rect.top + owner_rect.bottom - height) / 2; | 96 LONG y = (owner_rect.top + owner_rect.bottom - height) / 2; |
| 97 | 97 |
| 98 x = std::max(x, area_rect.left); | 98 x = std::max(x, area_rect.left); |
| 99 x = std::min(x, area_rect.right - width); | 99 x = std::min(x, area_rect.right - width); |
| 100 y = std::max(y, area_rect.top); | 100 y = std::max(y, area_rect.top); |
| 101 y = std::min(y, area_rect.bottom - width); | 101 y = std::min(y, area_rect.bottom - width); |
| 102 | 102 |
| 103 SetWindowPos(NULL, x, y, -1, -1, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); | 103 SetWindowPos(nullptr, x, y, -1, -1, |
| 104 SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); |
| 104 } | 105 } |
| 105 | 106 |
| 106 bool VerifyConfigWindowWin::VerifyHostSecretHash() { | 107 bool VerifyConfigWindowWin::VerifyHostSecretHash() { |
| 107 CWindow pin_edit(GetDlgItem(IDC_PIN)); | 108 CWindow pin_edit(GetDlgItem(IDC_PIN)); |
| 108 | 109 |
| 109 // Get the PIN length. | 110 // Get the PIN length. |
| 110 int pin_length = pin_edit.GetWindowTextLength(); | 111 int pin_length = pin_edit.GetWindowTextLength(); |
| 111 scoped_ptr<base::char16[]> pin(new base::char16[pin_length + 1]); | 112 scoped_ptr<base::char16[]> pin(new base::char16[pin_length + 1]); |
| 112 | 113 |
| 113 // Get the PIN making sure it is NULL terminated even if an error occurs. | 114 // Get the PIN making sure it is nullptr terminated even if an error occurs. |
| 114 int result = pin_edit.GetWindowText(pin.get(), pin_length + 1); | 115 int result = pin_edit.GetWindowText(pin.get(), pin_length + 1); |
| 115 pin[std::min(result, pin_length)] = 0; | 116 pin[std::min(result, pin_length)] = 0; |
| 116 | 117 |
| 117 return VerifyHostPinHash(host_secret_hash_, | 118 return VerifyHostPinHash(host_secret_hash_, |
| 118 host_id_, base::UTF16ToUTF8(pin.get())); | 119 host_id_, base::UTF16ToUTF8(pin.get())); |
| 119 } | 120 } |
| 120 | 121 |
| 121 } // namespace remoting | 122 } // namespace remoting |
| OLD | NEW |