| 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 "chrome/browser/shell_integration_win.h" | 5 #include "chrome/browser/shell_integration_win.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 class ShellIntegrationWinMigrateShortcutTest : public testing::Test { | 40 class ShellIntegrationWinMigrateShortcutTest : public testing::Test { |
| 41 protected: | 41 protected: |
| 42 ShellIntegrationWinMigrateShortcutTest() {} | 42 ShellIntegrationWinMigrateShortcutTest() {} |
| 43 | 43 |
| 44 void SetUp() override { | 44 void SetUp() override { |
| 45 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 45 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 46 | 46 |
| 47 // A path to a random target. | 47 // A path to a random target. |
| 48 base::CreateTemporaryFileInDir(temp_dir_.path(), &other_target_); | 48 base::CreateTemporaryFileInDir(temp_dir_.GetPath(), &other_target_); |
| 49 | 49 |
| 50 // This doesn't need to actually have a base name of "chrome.exe". | 50 // This doesn't need to actually have a base name of "chrome.exe". |
| 51 base::CreateTemporaryFileInDir(temp_dir_.path(), &chrome_exe_); | 51 base::CreateTemporaryFileInDir(temp_dir_.GetPath(), &chrome_exe_); |
| 52 | 52 |
| 53 chrome_app_id_ = | 53 chrome_app_id_ = |
| 54 ShellUtil::GetBrowserModelId(BrowserDistribution::GetDistribution(), | 54 ShellUtil::GetBrowserModelId(BrowserDistribution::GetDistribution(), |
| 55 true); | 55 true); |
| 56 | 56 |
| 57 base::FilePath default_user_data_dir; | 57 base::FilePath default_user_data_dir; |
| 58 chrome::GetDefaultUserDataDirectory(&default_user_data_dir); | 58 chrome::GetDefaultUserDataDirectory(&default_user_data_dir); |
| 59 base::FilePath default_profile_path = | 59 base::FilePath default_profile_path = |
| 60 default_user_data_dir.AppendASCII(chrome::kInitialProfile); | 60 default_user_data_dir.AppendASCII(chrome::kInitialProfile); |
| 61 non_default_user_data_dir_ = base::FilePath(FILE_PATH_LITERAL("root")) | 61 non_default_user_data_dir_ = base::FilePath(FILE_PATH_LITERAL("root")) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 79 | 79 |
| 80 CreateShortcuts(); | 80 CreateShortcuts(); |
| 81 } | 81 } |
| 82 | 82 |
| 83 // Creates a test shortcut corresponding to |shortcut_properties| and resets | 83 // Creates a test shortcut corresponding to |shortcut_properties| and resets |
| 84 // |shortcut_properties| after copying it to an internal structure for later | 84 // |shortcut_properties| after copying it to an internal structure for later |
| 85 // verification. | 85 // verification. |
| 86 void AddTestShortcutAndResetProperties( | 86 void AddTestShortcutAndResetProperties( |
| 87 base::win::ShortcutProperties* shortcut_properties) { | 87 base::win::ShortcutProperties* shortcut_properties) { |
| 88 ShortcutTestObject shortcut_test_object; | 88 ShortcutTestObject shortcut_test_object; |
| 89 base::FilePath shortcut_path = | 89 base::FilePath shortcut_path = temp_dir_.GetPath().Append( |
| 90 temp_dir_.path().Append(L"Shortcut " + | 90 L"Shortcut " + base::IntToString16(shortcuts_.size()) + |
| 91 base::IntToString16(shortcuts_.size()) + | 91 installer::kLnkExt); |
| 92 installer::kLnkExt); | |
| 93 shortcut_test_object.path = shortcut_path; | 92 shortcut_test_object.path = shortcut_path; |
| 94 shortcut_test_object.properties = *shortcut_properties; | 93 shortcut_test_object.properties = *shortcut_properties; |
| 95 shortcuts_.push_back(shortcut_test_object); | 94 shortcuts_.push_back(shortcut_test_object); |
| 96 ASSERT_TRUE(base::win::CreateOrUpdateShortcutLink( | 95 ASSERT_TRUE(base::win::CreateOrUpdateShortcutLink( |
| 97 shortcut_path, *shortcut_properties, | 96 shortcut_path, *shortcut_properties, |
| 98 base::win::SHORTCUT_CREATE_ALWAYS)); | 97 base::win::SHORTCUT_CREATE_ALWAYS)); |
| 99 shortcut_properties->options = 0U; | 98 shortcut_properties->options = 0U; |
| 100 } | 99 } |
| 101 | 100 |
| 102 void CreateShortcuts() { | 101 void CreateShortcuts() { |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 }; | 257 }; |
| 259 | 258 |
| 260 } // namespace | 259 } // namespace |
| 261 | 260 |
| 262 TEST_F(ShellIntegrationWinMigrateShortcutTest, ClearDualModeAndAdjustAppIds) { | 261 TEST_F(ShellIntegrationWinMigrateShortcutTest, ClearDualModeAndAdjustAppIds) { |
| 263 if (base::win::GetVersion() < base::win::VERSION_WIN7) | 262 if (base::win::GetVersion() < base::win::VERSION_WIN7) |
| 264 return; | 263 return; |
| 265 | 264 |
| 266 // 9 shortcuts should have their app id updated below and shortcut 11 should | 265 // 9 shortcuts should have their app id updated below and shortcut 11 should |
| 267 // be migrated away from dual_mode for a total of 10 shortcuts migrated. | 266 // be migrated away from dual_mode for a total of 10 shortcuts migrated. |
| 268 EXPECT_EQ(10, MigrateShortcutsInPathInternal(chrome_exe_, temp_dir_.path())); | 267 EXPECT_EQ(10, |
| 268 MigrateShortcutsInPathInternal(chrome_exe_, temp_dir_.GetPath())); |
| 269 | 269 |
| 270 // Shortcut 1, 3, 4, 5, 6, 7, 8, 9, and 10 should have had their app_id fixed. | 270 // Shortcut 1, 3, 4, 5, 6, 7, 8, 9, and 10 should have had their app_id fixed. |
| 271 shortcuts_[1].properties.set_app_id(chrome_app_id_); | 271 shortcuts_[1].properties.set_app_id(chrome_app_id_); |
| 272 shortcuts_[3].properties.set_app_id(chrome_app_id_); | 272 shortcuts_[3].properties.set_app_id(chrome_app_id_); |
| 273 shortcuts_[4].properties.set_app_id(chrome_app_id_); | 273 shortcuts_[4].properties.set_app_id(chrome_app_id_); |
| 274 shortcuts_[5].properties.set_app_id(chrome_app_id_); | 274 shortcuts_[5].properties.set_app_id(chrome_app_id_); |
| 275 shortcuts_[6].properties.set_app_id(non_default_profile_chrome_app_id_); | 275 shortcuts_[6].properties.set_app_id(non_default_profile_chrome_app_id_); |
| 276 shortcuts_[7].properties.set_app_id(non_default_user_data_dir_chrome_app_id_); | 276 shortcuts_[7].properties.set_app_id(non_default_user_data_dir_chrome_app_id_); |
| 277 shortcuts_[8].properties.set_app_id( | 277 shortcuts_[8].properties.set_app_id( |
| 278 non_default_user_data_dir_and_profile_chrome_app_id_); | 278 non_default_user_data_dir_and_profile_chrome_app_id_); |
| 279 shortcuts_[9].properties.set_app_id(extension_app_id_); | 279 shortcuts_[9].properties.set_app_id(extension_app_id_); |
| 280 shortcuts_[10].properties.set_app_id(non_default_profile_extension_app_id_); | 280 shortcuts_[10].properties.set_app_id(non_default_profile_extension_app_id_); |
| 281 | 281 |
| 282 // No shortcut should still have the dual_mode property. | 282 // No shortcut should still have the dual_mode property. |
| 283 for (size_t i = 0; i < shortcuts_.size(); ++i) | 283 for (size_t i = 0; i < shortcuts_.size(); ++i) |
| 284 shortcuts_[i].properties.set_dual_mode(false); | 284 shortcuts_[i].properties.set_dual_mode(false); |
| 285 | 285 |
| 286 for (size_t i = 0; i < shortcuts_.size(); ++i) { | 286 for (size_t i = 0; i < shortcuts_.size(); ++i) { |
| 287 SCOPED_TRACE(i); | 287 SCOPED_TRACE(i); |
| 288 base::win::ValidateShortcut(shortcuts_[i].path, shortcuts_[i].properties); | 288 base::win::ValidateShortcut(shortcuts_[i].path, shortcuts_[i].properties); |
| 289 } | 289 } |
| 290 | 290 |
| 291 // Make sure shortcuts are not re-migrated. | 291 // Make sure shortcuts are not re-migrated. |
| 292 EXPECT_EQ(0, MigrateShortcutsInPathInternal(chrome_exe_, temp_dir_.path())); | 292 EXPECT_EQ(0, |
| 293 MigrateShortcutsInPathInternal(chrome_exe_, temp_dir_.GetPath())); |
| 293 } | 294 } |
| 294 | 295 |
| 295 TEST(ShellIntegrationWinTest, GetAppModelIdForProfileTest) { | 296 TEST(ShellIntegrationWinTest, GetAppModelIdForProfileTest) { |
| 296 const base::string16 base_app_id( | 297 const base::string16 base_app_id( |
| 297 BrowserDistribution::GetDistribution()->GetBaseAppId()); | 298 BrowserDistribution::GetDistribution()->GetBaseAppId()); |
| 298 | 299 |
| 299 // Empty profile path should get chrome::kBrowserAppID | 300 // Empty profile path should get chrome::kBrowserAppID |
| 300 base::FilePath empty_path; | 301 base::FilePath empty_path; |
| 301 EXPECT_EQ(base_app_id, GetAppModelIdForProfile(base_app_id, empty_path)); | 302 EXPECT_EQ(base_app_id, GetAppModelIdForProfile(base_app_id, empty_path)); |
| 302 | 303 |
| 303 // Default profile path should get chrome::kBrowserAppID | 304 // Default profile path should get chrome::kBrowserAppID |
| 304 base::FilePath default_user_data_dir; | 305 base::FilePath default_user_data_dir; |
| 305 chrome::GetDefaultUserDataDirectory(&default_user_data_dir); | 306 chrome::GetDefaultUserDataDirectory(&default_user_data_dir); |
| 306 base::FilePath default_profile_path = | 307 base::FilePath default_profile_path = |
| 307 default_user_data_dir.AppendASCII(chrome::kInitialProfile); | 308 default_user_data_dir.AppendASCII(chrome::kInitialProfile); |
| 308 EXPECT_EQ(base_app_id, | 309 EXPECT_EQ(base_app_id, |
| 309 GetAppModelIdForProfile(base_app_id, default_profile_path)); | 310 GetAppModelIdForProfile(base_app_id, default_profile_path)); |
| 310 | 311 |
| 311 // Non-default profile path should get chrome::kBrowserAppID joined with | 312 // Non-default profile path should get chrome::kBrowserAppID joined with |
| 312 // profile info. | 313 // profile info. |
| 313 base::FilePath profile_path(FILE_PATH_LITERAL("root")); | 314 base::FilePath profile_path(FILE_PATH_LITERAL("root")); |
| 314 profile_path = profile_path.Append(FILE_PATH_LITERAL("udd")); | 315 profile_path = profile_path.Append(FILE_PATH_LITERAL("udd")); |
| 315 profile_path = profile_path.Append(FILE_PATH_LITERAL("User Data - Test")); | 316 profile_path = profile_path.Append(FILE_PATH_LITERAL("User Data - Test")); |
| 316 EXPECT_EQ(base_app_id + L".udd.UserDataTest", | 317 EXPECT_EQ(base_app_id + L".udd.UserDataTest", |
| 317 GetAppModelIdForProfile(base_app_id, profile_path)); | 318 GetAppModelIdForProfile(base_app_id, profile_path)); |
| 318 } | 319 } |
| 319 | 320 |
| 320 } // namespace win | 321 } // namespace win |
| 321 } // namespace shell_integration | 322 } // namespace shell_integration |
| OLD | NEW |