| Index: chrome/browser/shell_integration.cc
|
| diff --git a/chrome/browser/shell_integration.cc b/chrome/browser/shell_integration.cc
|
| deleted file mode 100644
|
| index cd299c55abc67cb73c7f427fcc4c333d769d6772..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/shell_integration.cc
|
| +++ /dev/null
|
| @@ -1,295 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome/browser/shell_integration.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/command_line.h"
|
| -#include "base/file_util.h"
|
| -#include "base/path_service.h"
|
| -#include "base/prefs/pref_service.h"
|
| -#include "base/string_util.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/policy/policy_path_parser.h"
|
| -#include "chrome/common/chrome_paths.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/pref_names.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -
|
| -using content::BrowserThread;
|
| -
|
| -ShellIntegration::DefaultWebClientSetPermission
|
| - ShellIntegration::CanSetAsDefaultProtocolClient() {
|
| - // Allowed as long as the browser can become the operating system default
|
| - // browser.
|
| - return CanSetAsDefaultBrowser();
|
| -}
|
| -
|
| -ShellIntegration::ShortcutInfo::ShortcutInfo()
|
| - : is_platform_app(false),
|
| - create_on_desktop(false),
|
| - create_in_applications_menu(false),
|
| - create_in_quick_launch_bar(false) {
|
| -}
|
| -
|
| -ShellIntegration::ShortcutInfo::~ShortcutInfo() {}
|
| -
|
| -static const struct ShellIntegration::AppModeInfo* gAppModeInfo = NULL;
|
| -
|
| -// static
|
| -void ShellIntegration::SetAppModeInfo(const struct AppModeInfo* info) {
|
| - gAppModeInfo = info;
|
| -}
|
| -
|
| -// static
|
| -const struct ShellIntegration::AppModeInfo* ShellIntegration::AppModeInfo() {
|
| - return gAppModeInfo;
|
| -}
|
| -
|
| -// static
|
| -bool ShellIntegration::IsRunningInAppMode() {
|
| - return gAppModeInfo != NULL;
|
| -}
|
| -
|
| -// static
|
| -CommandLine ShellIntegration::CommandLineArgsForLauncher(
|
| - const GURL& url,
|
| - const std::string& extension_app_id,
|
| - const base::FilePath& profile_path) {
|
| - const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
|
| - CommandLine new_cmd_line(CommandLine::NO_PROGRAM);
|
| -
|
| - // Use the same UserDataDir for new launches that we currently have set.
|
| - base::FilePath user_data_dir =
|
| - cmd_line.GetSwitchValuePath(switches::kUserDataDir);
|
| -#if defined(OS_MACOSX) || defined(OS_WIN)
|
| - policy::path_parser::CheckUserDataDirPolicy(&user_data_dir);
|
| -#endif
|
| - if (!user_data_dir.empty()) {
|
| - // Make sure user_data_dir is an absolute path.
|
| - if (file_util::AbsolutePath(&user_data_dir) &&
|
| - file_util::PathExists(user_data_dir)) {
|
| - new_cmd_line.AppendSwitchPath(switches::kUserDataDir, user_data_dir);
|
| - }
|
| - }
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - base::FilePath profile = cmd_line.GetSwitchValuePath(switches::kLoginProfile);
|
| - if (!profile.empty())
|
| - new_cmd_line.AppendSwitchPath(switches::kLoginProfile, profile);
|
| -#else
|
| - if (!profile_path.empty() && !extension_app_id.empty())
|
| - new_cmd_line.AppendSwitchPath(switches::kProfileDirectory,
|
| - profile_path.BaseName());
|
| -#endif
|
| -
|
| - // If |extension_app_id| is present, we use the kAppId switch rather than
|
| - // the kApp switch (the launch url will be read from the extension app
|
| - // during launch.
|
| - if (!extension_app_id.empty()) {
|
| - new_cmd_line.AppendSwitchASCII(switches::kAppId, extension_app_id);
|
| - } else {
|
| - // Use '--app=url' instead of just 'url' to launch the browser with minimal
|
| - // chrome.
|
| - // Note: Do not change this flag! Old Gears shortcuts will break if you do!
|
| - new_cmd_line.AppendSwitchASCII(switches::kApp, url.spec());
|
| - }
|
| - return new_cmd_line;
|
| -}
|
| -
|
| -#if !defined(OS_WIN)
|
| -// static
|
| -bool ShellIntegration::SetAsDefaultBrowserInteractive() {
|
| - return false;
|
| -}
|
| -
|
| -// static
|
| -bool ShellIntegration::SetAsDefaultProtocolClientInteractive(
|
| - const std::string& protocol) {
|
| - return false;
|
| -}
|
| -#endif
|
| -
|
| -bool ShellIntegration::DefaultWebClientObserver::IsOwnedByWorker() {
|
| - return false;
|
| -}
|
| -
|
| -bool ShellIntegration::DefaultWebClientObserver::
|
| - IsInteractiveSetDefaultPermitted() {
|
| - return false;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// ShellIntegration::DefaultWebClientWorker
|
| -//
|
| -
|
| -ShellIntegration::DefaultWebClientWorker::DefaultWebClientWorker(
|
| - DefaultWebClientObserver* observer)
|
| - : observer_(observer) {
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::StartCheckIsDefault() {
|
| - if (observer_) {
|
| - observer_->SetDefaultWebClientUIState(STATE_PROCESSING);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(
|
| - &DefaultWebClientWorker::ExecuteCheckIsDefault, this));
|
| - }
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::StartSetAsDefault() {
|
| - bool interactive_permitted = false;
|
| - if (observer_) {
|
| - observer_->SetDefaultWebClientUIState(STATE_PROCESSING);
|
| - interactive_permitted = observer_->IsInteractiveSetDefaultPermitted();
|
| - }
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&DefaultWebClientWorker::ExecuteSetAsDefault, this,
|
| - interactive_permitted));
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::ObserverDestroyed() {
|
| - // Our associated view has gone away, so we shouldn't call back to it if
|
| - // our worker thread returns after the view is dead.
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - observer_ = NULL;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// DefaultWebClientWorker, private:
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::ExecuteCheckIsDefault() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - DefaultWebClientState state = CheckIsDefault();
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(
|
| - &DefaultWebClientWorker::CompleteCheckIsDefault, this, state));
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::CompleteCheckIsDefault(
|
| - DefaultWebClientState state) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - UpdateUI(state);
|
| - // The worker has finished everything it needs to do, so free the observer
|
| - // if we own it.
|
| - if (observer_ && observer_->IsOwnedByWorker()) {
|
| - delete observer_;
|
| - observer_ = NULL;
|
| - }
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::ExecuteSetAsDefault(
|
| - bool interactive_permitted) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| -
|
| - bool result = SetAsDefault(interactive_permitted);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&DefaultWebClientWorker::CompleteSetAsDefault, this, result));
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::CompleteSetAsDefault(
|
| - bool succeeded) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - // First tell the observer what the SetAsDefault call has returned.
|
| - if (observer_)
|
| - observer_->OnSetAsDefaultConcluded(succeeded);
|
| - // Set as default completed, check again to make sure it stuck...
|
| - StartCheckIsDefault();
|
| -}
|
| -
|
| -void ShellIntegration::DefaultWebClientWorker::UpdateUI(
|
| - DefaultWebClientState state) {
|
| - if (observer_) {
|
| - switch (state) {
|
| - case NOT_DEFAULT:
|
| - observer_->SetDefaultWebClientUIState(STATE_NOT_DEFAULT);
|
| - break;
|
| - case IS_DEFAULT:
|
| - observer_->SetDefaultWebClientUIState(STATE_IS_DEFAULT);
|
| - break;
|
| - case UNKNOWN_DEFAULT:
|
| - observer_->SetDefaultWebClientUIState(STATE_UNKNOWN);
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// ShellIntegration::DefaultBrowserWorker
|
| -//
|
| -
|
| -ShellIntegration::DefaultBrowserWorker::DefaultBrowserWorker(
|
| - DefaultWebClientObserver* observer)
|
| - : DefaultWebClientWorker(observer) {
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// DefaultBrowserWorker, private:
|
| -
|
| -ShellIntegration::DefaultWebClientState
|
| -ShellIntegration::DefaultBrowserWorker::CheckIsDefault() {
|
| - return ShellIntegration::GetDefaultBrowser();
|
| -}
|
| -
|
| -bool ShellIntegration::DefaultBrowserWorker::SetAsDefault(
|
| - bool interactive_permitted) {
|
| - bool result = false;
|
| - switch (ShellIntegration::CanSetAsDefaultBrowser()) {
|
| - case ShellIntegration::SET_DEFAULT_UNATTENDED:
|
| - result = ShellIntegration::SetAsDefaultBrowser();
|
| - break;
|
| - case ShellIntegration::SET_DEFAULT_INTERACTIVE:
|
| - if (interactive_permitted)
|
| - result = ShellIntegration::SetAsDefaultBrowserInteractive();
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - return result;
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// ShellIntegration::DefaultProtocolClientWorker
|
| -//
|
| -
|
| -ShellIntegration::DefaultProtocolClientWorker::DefaultProtocolClientWorker(
|
| - DefaultWebClientObserver* observer, const std::string& protocol)
|
| - : DefaultWebClientWorker(observer),
|
| - protocol_(protocol) {
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| -// DefaultProtocolClientWorker, private:
|
| -
|
| -ShellIntegration::DefaultWebClientState
|
| -ShellIntegration::DefaultProtocolClientWorker::CheckIsDefault() {
|
| - return ShellIntegration::IsDefaultProtocolClient(protocol_);
|
| -}
|
| -
|
| -bool ShellIntegration::DefaultProtocolClientWorker::SetAsDefault(
|
| - bool interactive_permitted) {
|
| - bool result = false;
|
| - switch (ShellIntegration::CanSetAsDefaultProtocolClient()) {
|
| - case ShellIntegration::SET_DEFAULT_UNATTENDED:
|
| - result = ShellIntegration::SetAsDefaultProtocolClient(protocol_);
|
| - break;
|
| - case ShellIntegration::SET_DEFAULT_INTERACTIVE:
|
| - if (interactive_permitted) {
|
| - result = ShellIntegration::SetAsDefaultProtocolClientInteractive(
|
| - protocol_);
|
| - }
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - return result;
|
| -}
|
|
|