Chromium Code Reviews| Index: chrome/installer/setup/install_worker.cc |
| diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc |
| index ce8a456a2d0872e619f444c9eaf34becf16eb714..c3d0c8bd61cd6a5604aedaf5bf3bc26731709e54 100644 |
| --- a/chrome/installer/setup/install_worker.cc |
| +++ b/chrome/installer/setup/install_worker.cc |
| @@ -292,9 +292,6 @@ void AddProductSpecificWorkItems(const InstallationState& original_state, |
| if (p.is_chrome_frame()) { |
| AddChromeFrameWorkItems(original_state, installer_state, setup_path, |
| new_version, p, list); |
| - } else if (p.is_chrome()) { |
| - AddChromeWorkItems(original_state, installer_state, setup_path, |
| - new_version, p, list); |
| } |
| } |
| } |
| @@ -825,6 +822,9 @@ void AddInstallWorkItems(const InstallationState& original_state, |
| AddVersionKeyWorkItems(root, product->distribution(), new_version, |
| add_language_identifier, install_list); |
| + |
| + AddDelegateExecuteWorkItems(original_state, installer_state, setup_path, |
| + new_version, *product, install_list); |
| } |
| if (installer_state.is_multi_install()) { |
| @@ -1030,25 +1030,35 @@ void AddChromeFrameWorkItems(const InstallationState& original_state, |
| } |
| } |
| -void AddChromeWorkItems(const InstallationState& original_state, |
| - const InstallerState& installer_state, |
| - const FilePath& setup_path, |
| - const Version& new_version, |
| - const Product& product, |
| - WorkItemList* list) { |
| - // For the moment, this function adds work items to perform COM registration |
| - // specific to the Windows 8 delegate. If more work needs to be done in the |
| - // future, pull this into its own function called by AddChromeWorkItems. |
| - DCHECK(product.is_chrome()); |
| +void AddDelegateExecuteWorkItems(const InstallationState& original_state, |
| + const InstallerState& installer_state, |
| + const FilePath& setup_path, |
| + const Version& new_version, |
| + const Product& product, |
| + WorkItemList* list) { |
| + string16 handler_class_uuid; |
| + string16 type_lib_uuid; |
| + string16 type_lib_version; |
| + string16 interface_uuid; |
| + BrowserDistribution* distribution = product.distribution(); |
| + if (!distribution->GetDelegateExecuteHandlerData(&handler_class_uuid, |
| + &type_lib_uuid, &type_lib_version, &interface_uuid)) { |
|
robertshield
2012/04/17 14:51:19
indent + 4
grt (UTC plus 2)
2012/04/17 15:27:33
Done.
|
| + VLOG(1) << "No DelegateExecute verb handler processing to do for " |
| + << distribution->GetAppShortCutName(); |
| + return; |
| + } |
| + |
| + VLOG(1) << "DelegateExecute verb handler COM registration."; |
| + |
| HKEY root = installer_state.root_key(); |
| const bool is_install = |
| (installer_state.operation() != InstallerState::UNINSTALL); |
| string16 delegate_execute_path(L"Software\\Classes\\CLSID\\"); |
| - delegate_execute_path.append(kCommandExecuteImplUuid); |
| + delegate_execute_path.append(handler_class_uuid); |
| string16 typelib_path(L"Software\\Classes\\TypeLib\\"); |
| - typelib_path.append(kDelegateExecuteLibUuid); |
| + typelib_path.append(type_lib_uuid); |
| string16 interface_path(L"Software\\Classes\\Interface\\"); |
| - interface_path.append(kICommandExecuteImplUuid); |
| + interface_path.append(interface_uuid); |
| if (is_install) { |
| // The path to the exe (in the version directory). |
| @@ -1077,22 +1087,20 @@ void AddChromeWorkItems(const InstallationState& original_state, |
| subkey.assign(delegate_execute_path).append(L"\\TypeLib"); |
| list->AddCreateRegKeyWorkItem(root, subkey); |
| - list->AddSetRegValueWorkItem(root, subkey, L"", kDelegateExecuteLibUuid, |
| - true); |
| + list->AddSetRegValueWorkItem(root, subkey, L"", type_lib_uuid, true); |
| subkey.assign(delegate_execute_path).append(L"\\Version"); |
| list->AddCreateRegKeyWorkItem(root, subkey); |
| - list->AddSetRegValueWorkItem(root, subkey, L"", kDelegateExecuteLibVersion, |
| - true); |
| + list->AddSetRegValueWorkItem(root, subkey, L"", type_lib_version, true); |
| // Register the DelegateExecuteLib type library at |
| // Software\Classes\TypeLib\{4E805ED8-EBA0-4601-9681-12815A56EBFD} |
| list->AddCreateRegKeyWorkItem(root, typelib_path); |
| string16 version_key(typelib_path); |
| - version_key.append(1, L'\\').append(kDelegateExecuteLibVersion); |
| + version_key.append(1, L'\\').append(type_lib_version); |
| list->AddCreateRegKeyWorkItem(root, version_key); |
| - list->AddSetRegValueWorkItem(root, version_key, L"", kDelegateExecuteLib, |
| + list->AddSetRegValueWorkItem(root, version_key, L"", L"DelegateExecuteLib", |
| true); |
| subkey.assign(version_key).append(L"\\FLAGS"); |
| @@ -1117,7 +1125,7 @@ void AddChromeWorkItems(const InstallationState& original_state, |
| // Software\Classes\Interface\{0BA0D4E9-2259-4963-B9AE-A839F7CB7544} |
| list->AddCreateRegKeyWorkItem(root, interface_path); |
| list->AddSetRegValueWorkItem(root, interface_path, L"", |
| - kICommandExecuteImpl, true); |
| + L"ICommandExecuteImpl", true); |
| subkey.assign(interface_path).append(L"\\ProxyStubClsid32"); |
| list->AddCreateRegKeyWorkItem(root, subkey); |
| @@ -1125,10 +1133,9 @@ void AddChromeWorkItems(const InstallationState& original_state, |
| subkey.assign(interface_path).append(L"\\TypeLib"); |
| list->AddCreateRegKeyWorkItem(root, subkey); |
| - list->AddSetRegValueWorkItem(root, subkey, L"", kDelegateExecuteLibUuid, |
| + list->AddSetRegValueWorkItem(root, subkey, L"", type_lib_uuid, true); |
| + list->AddSetRegValueWorkItem(root, subkey, L"Version", type_lib_version, |
| true); |
| - list->AddSetRegValueWorkItem(root, subkey, L"Version", |
| - kDelegateExecuteLibVersion, true); |
| } else { |
| list->AddDeleteRegKeyWorkItem(root, delegate_execute_path); |