| 276 | } |
| 277 | |
| 278 | bool BrowserFactory::IsCreateProcessApiAvailable() { |
| 279 | LOG(TRACE) << "Entering BrowserFactory::IsCreateProcessApiAvailable"; |
| 280 | if (this->ie_major_version_ >= 8) { |
| 281 | // According to http://blogs.msdn.com/b/askie/archive/2009/03/09/opening-a-new-tab-may-launch-a-new-process-with-internet-explorer-8-0.aspx |
| 282 | // If CreateProcess() is used and TabProcGrowth != 0 IE will use different tab and frame processes. |
| 283 | // Such behaviour is not supported by AttachToBrowser(). |
| 284 | // FYI, IELaunchURL() returns correct 'frame' process (but sometimes not). |
| 285 | std::wstring tab_proc_growth; |
| 286 | if (RegistryUtilities::GetRegistryValue(HKEY_CURRENT_USER, |
| 287 | IE_TABPROCGROWTH_REGISTRY_KEY, |
| 288 | L"TabProcGrowth", |
| 289 | &tab_proc_growth)) { |
| 290 | if (tab_proc_growth != L"0") { |
| 291 | // Registry value has wrong value, return false |
| 292 | return false; |
| 293 | } |
| 294 | } else { |
| 295 | // Registry key or value not found, or another error condition getting the value. |
| 296 | return false; |
| 297 | } |
| 298 | } |
| 299 | return true; |
| 300 | } |
| 301 | |
| 302 | void BrowserFactory::LaunchBrowserUsingCreateProcess(PROCESS_INFORMATION* proc_info, |
| 303 | std::string* error_message) { |
no test coverage detected