| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 // Utility functions to interact with IE. | 5 // Utility functions to interact with IE. |
| 6 | 6 |
| 7 #include "ceee/ie/common/ie_util.h" | 7 #include "ceee/ie/common/ie_util.h" |
| 8 | 8 |
| 9 #include <atlcomcli.h> | 9 #include <atlcomcli.h> |
| 10 #include <exdisp.h> // IWebBrowser2 | 10 #include <exdisp.h> // IWebBrowser2 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 return enum_punk->QueryInterface(IID_IEnumVARIANT, | 36 return enum_punk->QueryInterface(IID_IEnumVARIANT, |
| 37 reinterpret_cast<void**>(enum_windows)); | 37 reinterpret_cast<void**>(enum_windows)); |
| 38 } | 38 } |
| 39 | 39 |
| 40 bool GetIeVersionString(std::wstring* version) { | 40 bool GetIeVersionString(std::wstring* version) { |
| 41 DCHECK(version != NULL); | 41 DCHECK(version != NULL); |
| 42 if (version == NULL) | 42 if (version == NULL) |
| 43 return false; | 43 return false; |
| 44 base::win::RegKey key(HKEY_LOCAL_MACHINE, kIeVersionKey, KEY_READ); | 44 base::win::RegKey key(HKEY_LOCAL_MACHINE, kIeVersionKey, KEY_READ); |
| 45 DCHECK(key.ValueExists(kIeVersionValue)); | 45 DCHECK(key.ValueExists(kIeVersionValue)); |
| 46 return key.ReadValue(kIeVersionValue, version); | 46 return key.ReadValue(kIeVersionValue, version) == ERROR_SUCCESS; |
| 47 } | 47 } |
| 48 | 48 |
| 49 } // namespace | 49 } // namespace |
| 50 | 50 |
| 51 namespace ie_util { | 51 namespace ie_util { |
| 52 | 52 |
| 53 HRESULT GetWebBrowserForTopLevelIeHwnd( | 53 HRESULT GetWebBrowserForTopLevelIeHwnd( |
| 54 HWND window, IWebBrowser2* not_him, IWebBrowser2** browser) { | 54 HWND window, IWebBrowser2* not_him, IWebBrowser2** browser) { |
| 55 DCHECK(browser != NULL); | 55 DCHECK(browser != NULL); |
| 56 CComPtr<IEnumVARIANT> enum_windows; | 56 CComPtr<IEnumVARIANT> enum_windows; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 key_name += L"\\iexplore"; | 158 key_name += L"\\iexplore"; |
| 159 | 159 |
| 160 base::win::RegKey stats_key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ); | 160 base::win::RegKey stats_key(HKEY_CURRENT_USER, key_name.c_str(), KEY_READ); |
| 161 if (!stats_key.Valid()) { | 161 if (!stats_key.Valid()) { |
| 162 LOG(ERROR) << "Missing stats key: " << key_name; | 162 LOG(ERROR) << "Missing stats key: " << key_name; |
| 163 return kInvalidTime; | 163 return kInvalidTime; |
| 164 } | 164 } |
| 165 | 165 |
| 166 DWORD load_time = 0; | 166 DWORD load_time = 0; |
| 167 if (GetIeVersion() < IEVERSION_IE9) { | 167 if (GetIeVersion() < IEVERSION_IE9) { |
| 168 if (!stats_key.ReadValueDW(time_prefix.c_str(), &load_time)) { | 168 LONG result = stats_key.ReadValueDW(time_prefix.c_str(), &load_time); |
| 169 if (result != ERROR_SUCCESS) { |
| 169 VLOG(1) << "Can't read time: " << time_prefix; | 170 VLOG(1) << "Can't read time: " << time_prefix; |
| 170 return kInvalidTime; | 171 return kInvalidTime; |
| 171 } | 172 } |
| 172 } else { | 173 } else { |
| 173 std::wstring value_name(time_prefix); | 174 std::wstring value_name(time_prefix); |
| 174 value_name += L"Array"; | 175 value_name += L"Array"; |
| 175 DWORD count = 0; | 176 DWORD count = 0; |
| 176 int32 values[100]; | 177 int32 values[100]; |
| 177 DWORD data_size = sizeof(values); | 178 DWORD data_size = sizeof(values); |
| 178 DWORD data_type = REG_NONE; | 179 DWORD data_type = REG_NONE; |
| 179 | 180 |
| 180 if (!stats_key.ReadValue(value_name.c_str(), &values, &data_size, | 181 LONG result = stats_key.ReadValue(value_name.c_str(), &values, &data_size, |
| 181 &data_type)) { | 182 &data_type); |
| 182 VLOG(1) << "Can't read time: " << value_name; | 183 if (result != ERROR_SUCCESS) { |
| 184 VLOG(1) << "Can't read time: " << value_name << " error: " |
| 185 << com::LogWe(result); |
| 183 return kInvalidTime; | 186 return kInvalidTime; |
| 184 } | 187 } |
| 185 | 188 |
| 186 if (data_type != REG_BINARY) { | 189 if (data_type != REG_BINARY) { |
| 187 LOG(ERROR) << "Unexpected data type:" << data_type; | 190 LOG(ERROR) << "Unexpected data type:" << data_type; |
| 188 return kInvalidTime; | 191 return kInvalidTime; |
| 189 } | 192 } |
| 190 | 193 |
| 191 if (data_size % sizeof(values[0]) != 0) { | 194 if (data_size % sizeof(values[0]) != 0) { |
| 192 LOG(ERROR) << "Unexpected data length:" << data_size; | 195 LOG(ERROR) << "Unexpected data length:" << data_size; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 215 | 218 |
| 216 if (load_time < 0) { | 219 if (load_time < 0) { |
| 217 LOG(ERROR) << "Invalid time:" << load_time; | 220 LOG(ERROR) << "Invalid time:" << load_time; |
| 218 return kInvalidTime; | 221 return kInvalidTime; |
| 219 } | 222 } |
| 220 | 223 |
| 221 return load_time; | 224 return load_time; |
| 222 } | 225 } |
| 223 | 226 |
| 224 } // namespace ie_util | 227 } // namespace ie_util |
| OLD | NEW |