Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: chrome/browser/shell_integration_win.cc

Issue 10542031: Suffix Chrome's appid on user-level installs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase to r142814 Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/shell_integration_unittest.cc ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.h" 5 #include "chrome/browser/shell_integration.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <shobjidl.h> 8 #include <shobjidl.h>
9 #include <propkey.h> 9 #include <propkey.h>
10 #include <propvarutil.h> 10 #include <propvarutil.h>
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 } 286 }
287 287
288 string16 app_name; 288 string16 app_name;
289 if (command_line.HasSwitch(switches::kApp)) { 289 if (command_line.HasSwitch(switches::kApp)) {
290 app_name = UTF8ToUTF16(web_app::GenerateApplicationNameFromURL( 290 app_name = UTF8ToUTF16(web_app::GenerateApplicationNameFromURL(
291 GURL(command_line.GetSwitchValueASCII(switches::kApp)))); 291 GURL(command_line.GetSwitchValueASCII(switches::kApp))));
292 } else if (command_line.HasSwitch(switches::kAppId)) { 292 } else if (command_line.HasSwitch(switches::kAppId)) {
293 app_name = UTF8ToUTF16(web_app::GenerateApplicationNameFromExtensionId( 293 app_name = UTF8ToUTF16(web_app::GenerateApplicationNameFromExtensionId(
294 command_line.GetSwitchValueASCII(switches::kAppId))); 294 command_line.GetSwitchValueASCII(switches::kAppId)));
295 } else { 295 } else {
296 app_name = BrowserDistribution::GetDistribution()->GetBrowserAppId(); 296 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
297 app_name = ShellUtil::GetBrowserModelId(dist, chrome_exe.value());
297 } 298 }
298 299
299 expected_app_id->assign(ShellIntegration::GetAppId(app_name, profile_path)); 300 expected_app_id->assign(
301 ShellIntegration::GetAppModelIdForProfile(app_name, profile_path));
300 return true; 302 return true;
301 } 303 }
302 304
303 void MigrateWin7ShortcutsInPath( 305 void MigrateWin7ShortcutsInPath(
304 const FilePath& chrome_exe, const FilePath& path) { 306 const FilePath& chrome_exe, const FilePath& path) {
305 // Enumerate all pinned shortcuts in the given path directly. 307 // Enumerate all pinned shortcuts in the given path directly.
306 file_util::FileEnumerator shortcuts_enum( 308 file_util::FileEnumerator shortcuts_enum(
307 path, false, // not recursive 309 path, false, // not recursive
308 file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk")); 310 file_util::FileEnumerator::FILES, FILE_PATH_LITERAL("*.lnk"));
309 311
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 key_path.append(ShellUtil::kRegShellOpen); 545 key_path.append(ShellUtil::kRegShellOpen);
544 base::win::RegKey key(HKEY_CLASSES_ROOT, key_path.c_str(), KEY_READ); 546 base::win::RegKey key(HKEY_CLASSES_ROOT, key_path.c_str(), KEY_READ);
545 string16 app_cmd; 547 string16 app_cmd;
546 if (key.Valid() && (key.ReadValue(L"", &app_cmd) == ERROR_SUCCESS) && 548 if (key.Valid() && (key.ReadValue(L"", &app_cmd) == ERROR_SUCCESS) &&
547 string16::npos != StringToLowerASCII(app_cmd).find(L"firefox")) 549 string16::npos != StringToLowerASCII(app_cmd).find(L"firefox"))
548 ff_default = true; 550 ff_default = true;
549 } 551 }
550 return ff_default; 552 return ff_default;
551 } 553 }
552 554
553 string16 ShellIntegration::GetAppId(const string16& app_name, 555 string16 ShellIntegration::GetAppModelIdForProfile(
554 const FilePath& profile_path) { 556 const string16& app_name,
555 string16 app_id(app_name); 557 const FilePath& profile_path) {
556 558 std::vector<string16> components;
557 string16 profile_id(GetProfileIdFromPath(profile_path)); 559 components.push_back(app_name);
558 if (!profile_id.empty()) { 560 const string16 profile_id(GetProfileIdFromPath(profile_path));
559 app_id += L"."; 561 if (!profile_id.empty())
560 app_id += profile_id; 562 components.push_back(profile_id);
561 } 563 return ShellUtil::BuildAppModelId(components);
562
563 // App id should be less than 128 chars.
564 DCHECK(app_id.length() < 128);
565 return app_id;
566 } 564 }
567 565
568 string16 ShellIntegration::GetChromiumAppId(const FilePath& profile_path) { 566 string16 ShellIntegration::GetChromiumModelIdForProfile(
569 return GetAppId(BrowserDistribution::GetDistribution()->GetBrowserAppId(), 567 const FilePath& profile_path) {
570 profile_path); 568 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
569 FilePath chrome_exe;
570 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
571 NOTREACHED();
572 return dist->GetBaseAppId();
573 }
574 return GetAppModelIdForProfile(
575 ShellUtil::GetBrowserModelId(dist, chrome_exe.value()), profile_path);
571 } 576 }
572 577
573 string16 ShellIntegration::GetChromiumIconPath() { 578 string16 ShellIntegration::GetChromiumIconPath() {
574 // Determine the app path. If we can't determine what that is, we have 579 // Determine the app path. If we can't determine what that is, we have
575 // bigger fish to fry... 580 // bigger fish to fry...
576 FilePath app_path; 581 FilePath app_path;
577 if (!PathService::Get(base::FILE_EXE, &app_path)) { 582 if (!PathService::Get(base::FILE_EXE, &app_path)) {
578 NOTREACHED(); 583 NOTREACHED();
579 return string16(); 584 return string16();
580 } 585 }
581 586
582 string16 icon_path(app_path.value()); 587 string16 icon_path(app_path.value());
583 icon_path.push_back(','); 588 icon_path.push_back(',');
584 icon_path += base::IntToString16( 589 icon_path += base::IntToString16(
585 BrowserDistribution::GetDistribution()->GetIconIndex()); 590 BrowserDistribution::GetDistribution()->GetIconIndex());
586 return icon_path; 591 return icon_path;
587 } 592 }
588 593
589 void ShellIntegration::MigrateChromiumShortcuts() { 594 void ShellIntegration::MigrateChromiumShortcuts() {
590 if (base::win::GetVersion() < base::win::VERSION_WIN7) 595 if (base::win::GetVersion() < base::win::VERSION_WIN7)
591 return; 596 return;
592 597
593 BrowserThread::PostTask( 598 BrowserThread::PostTask(
594 BrowserThread::FILE, FROM_HERE, 599 BrowserThread::FILE, FROM_HERE,
595 base::Bind(&MigrateChromiumShortcutsCallback)); 600 base::Bind(&MigrateChromiumShortcutsCallback));
596 } 601 }
597 602
598 bool ShellIntegration::ActivateMetroChrome() { 603 bool ShellIntegration::ActivateMetroChrome() {
599 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 604 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
600 const string16 app_id(dist->GetBrowserAppId()); 605 FilePath chrome_exe;
606 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
607 NOTREACHED();
608 return false;
609 }
610 const string16 app_id(
611 ShellUtil::GetBrowserModelId(dist, chrome_exe.value()));
601 return ActivateApplication(app_id); 612 return ActivateApplication(app_id);
602 } 613 }
OLDNEW
« no previous file with comments | « chrome/browser/shell_integration_unittest.cc ('k') | chrome/browser/ui/browser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698