Index: chrome/app_installer/win/app_installer_main.cc |
diff --git a/chrome/app_installer/win/app_installer_main.cc b/chrome/app_installer/win/app_installer_main.cc |
deleted file mode 100644 |
index 3266f9dde35bc96ab67404f92a738c4ace1f7b66..0000000000000000000000000000000000000000 |
--- a/chrome/app_installer/win/app_installer_main.cc |
+++ /dev/null |
@@ -1,147 +0,0 @@ |
-// Copyright 2014 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 <windows.h> |
-#include <initguid.h> |
- |
-#include "base/at_exit.h" |
-#include "base/base_paths.h" |
-#include "base/basictypes.h" |
-#include "base/command_line.h" |
-#include "base/i18n/streaming_utf8_validator.h" |
-#include "base/json/json_reader.h" |
-#include "base/logging.h" |
-#include "base/logging_win.h" |
-#include "base/path_service.h" |
-#include "base/process/launch.h" |
-#include "base/strings/sys_string_conversions.h" |
-#include "base/values.h" |
-#include "chrome/app_installer/win/app_installer_util.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/chrome_version_info.h" |
-#include "chrome/installer/launcher_support/chrome_launcher_support.h" |
-#include "chrome/installer/util/util_constants.h" |
-#include "content/public/common/user_agent.h" |
- |
-namespace app_installer { |
- |
-namespace { |
- |
-// Log provider UUID. Required for logging to Sawbuck. |
-// {d82c3b59-bacd-4625-8282-4d570c4dad12} |
-DEFINE_GUID(kAppInstallerLogProvider, |
- 0xd82c3b59, |
- 0xbacd, |
- 0x4625, |
- 0x82, 0x82, 0x4d, 0x57, 0x0c, 0x4d, 0xad, 0x12); |
- |
-const wchar_t kChromeServer[] = L"chrome.google.com"; |
- |
-const wchar_t kInlineInstallDetail[] = L"/webstore/inlineinstall/detail/"; |
- |
-} // namespace |
- |
-extern "C" |
-int WINAPI wWinMain(HINSTANCE instance, |
- HINSTANCE prev_instance, |
- wchar_t* command_line, |
- int show_command) { |
- base::AtExitManager exit_manager; |
- base::CommandLine::Init(0, NULL); |
- logging::LogEventProvider::Initialize(kAppInstallerLogProvider); |
- logging::LoggingSettings settings; |
- settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; |
- logging::InitLogging(settings); |
- |
- std::string app_id = |
- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
- switches::kAppId); |
- const char* sxs = installer::switches::kChromeSxS; |
- // --chrome-sxs on the command line takes precedence over chrome-sxs in the |
- // tag. |
- bool is_canary = base::CommandLine::ForCurrentProcess()->HasSwitch(sxs); |
- |
- // --app-id on the command line inhibits tag parsing altogether. |
- if (app_id.empty()) { |
- base::FilePath current_exe; |
- if (!PathService::Get(base::FILE_EXE, ¤t_exe)) |
- return COULD_NOT_GET_FILE_PATH; |
- |
- // Get the tag added by dl.google.com. Note that this is passed in via URL |
- // parameters when requesting a file to download, so it must be validated |
- // before use. |
- std::string tag = GetTag(current_exe); |
- if (tag.empty()) |
- return COULD_NOT_READ_TAG; |
- |
- DVLOG(1) << "Tag: " << tag; |
- |
- std::map<std::string, std::string> parsed_pairs; |
- if (!ParseTag(tag, &parsed_pairs)) |
- return COULD_NOT_PARSE_TAG; |
- |
- auto result = parsed_pairs.find(switches::kAppId); |
- if (result != parsed_pairs.end()) |
- app_id = result->second; |
- |
- if (!is_canary) { |
- result = parsed_pairs.find(sxs); |
- is_canary = result != parsed_pairs.end() && result->second == "1"; |
- } |
- } |
- |
- if (!IsValidAppId(app_id)) |
- return INVALID_APP_ID; |
- |
- // Get the inline install data for this app. We need to set the user agent |
- // string to be Chrome's, otherwise webstore will serve a different response |
- // (since inline installs don't work on non-Chrome). |
- std::vector<uint8_t> response_data; |
- if (!FetchUrl(base::SysUTF8ToWide(content::BuildUserAgentFromProduct( |
- chrome::VersionInfo().ProductNameAndVersionForUserAgent())), |
- kChromeServer, 0, |
- kInlineInstallDetail + base::SysUTF8ToWide(app_id), |
- &response_data) || |
- response_data.empty()) { |
- return COULD_NOT_FETCH_INLINE_INSTALL_DATA; |
- } |
- |
- // Check that the response is valid UTF-8. |
- std::string inline_install_json(response_data.begin(), response_data.end()); |
- if (!base::StreamingUtf8Validator::Validate(inline_install_json)) |
- return COULD_NOT_PARSE_INLINE_INSTALL_DATA; |
- |
- // Parse the data to check it's valid JSON. The download page will just eval |
- // it. |
- base::JSONReader json_reader; |
- scoped_ptr<base::Value> inline_install_data( |
- json_reader.ReadToValue(inline_install_json)); |
- if (!inline_install_data) { |
- LOG(ERROR) << json_reader.GetErrorMessage(); |
- return COULD_NOT_PARSE_INLINE_INSTALL_DATA; |
- } |
- |
- base::FilePath chrome_path = |
- chrome_launcher_support::GetAnyChromePath(is_canary); |
- // If none found, show EULA, download, and install Chrome. |
- if (chrome_path.empty()) { |
- ExitCode get_chrome_result = GetChrome(is_canary, inline_install_json); |
- if (get_chrome_result != SUCCESS) |
- return get_chrome_result; |
- |
- chrome_path = chrome_launcher_support::GetAnyChromePath(is_canary); |
- if (chrome_path.empty()) |
- return COULD_NOT_FIND_CHROME; |
- } |
- |
- base::CommandLine cmd(chrome_path); |
- cmd.AppendSwitchASCII(kInstallChromeApp, app_id); |
- DVLOG(1) << "Install command: " << cmd.GetCommandLineString(); |
- bool launched = base::LaunchProcess(cmd, base::LaunchOptions()).IsValid(); |
- DVLOG(1) << "Launch " << (launched ? "success." : "failed."); |
- |
- return SUCCESS; |
-} |
- |
-} // namespace app_installer |