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

Unified Diff: chrome_frame/chrome_frame_helper_main.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/chrome_frame_helper_exe.ver ('k') | chrome_frame/chrome_frame_helper_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/chrome_frame_helper_main.cc
diff --git a/chrome_frame/chrome_frame_helper_main.cc b/chrome_frame/chrome_frame_helper_main.cc
deleted file mode 100644
index 27e1555a86e4b560525b1eca15343a1ed7422ef3..0000000000000000000000000000000000000000
--- a/chrome_frame/chrome_frame_helper_main.cc
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright (c) 2011 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.
-//
-// chrome_frame_helper_main.cc : The .exe that bootstraps the
-// chrome_frame_helper.dll.
-//
-// This is a small exe that loads the hook dll to set the event hooks and then
-// waits in a message loop. It is intended to be shut down by looking for a
-// window with the class and title
-// kChromeFrameHelperWindowClassName and kChromeFrameHelperWindowName and then
-// sending that window a WM_CLOSE message.
-//
-
-#include <crtdbg.h>
-#include <objbase.h>
-#include <stdlib.h>
-#include <windows.h>
-
-#include "chrome_frame/chrome_frame_helper_util.h"
-#include "chrome_frame/crash_server_init.h"
-#include "chrome_frame/registry_watcher.h"
-
-namespace {
-
-// Window class and window names.
-const wchar_t kChromeFrameHelperWindowClassName[] =
- L"ChromeFrameHelperWindowClass";
-const wchar_t kChromeFrameHelperWindowName[] =
- L"ChromeFrameHelperWindowName";
-
-const wchar_t kChromeFrameClientStateKey[] =
- L"Software\\Google\\Update\\ClientState\\"
- L"{8BA986DA-5100-405E-AA35-86F34A02ACBF}";
-const wchar_t kChromeFrameUninstallCmdExeValue[] = L"UninstallString";
-const wchar_t kChromeFrameUninstallCmdArgsValue[] = L"UninstallArguments";
-
-const wchar_t kBHORegistrationPath[] =
- L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer"
- L"\\Browser Helper Objects";
-
-const wchar_t kStartupArg[] = L"--startup";
-const wchar_t kForceUninstall[] = L"--force-uninstall";
-
-HWND g_hwnd = NULL;
-const UINT kRegistryWatcherChangeMessage = WM_USER + 42;
-
-} // namespace
-
-// Small helper class that assists in loading the DLL that contains code
-// to register our event hook callback. Automatically removes the hook and
-// unloads the DLL on destruction.
-class HookDllLoader {
- public:
- HookDllLoader() : dll_(NULL), start_proc_(NULL), stop_proc_(NULL) {}
- ~HookDllLoader() {
- if (dll_) {
- Unload();
- }
- }
-
- bool Load() {
- dll_ = LoadLibrary(L"chrome_frame_helper.dll");
- if (dll_) {
- start_proc_ = GetProcAddress(dll_, "StartUserModeBrowserInjection");
- stop_proc_ = GetProcAddress(dll_, "StopUserModeBrowserInjection");
- }
-
- bool result = true;
- if (!start_proc_ || !stop_proc_) {
- _ASSERTE(L"failed to load hook dll.");
- result = false;
- } else {
- if (FAILED(start_proc_())) {
- _ASSERTE(L"failed to initialize hook dll.");
- result = false;
- }
- }
- return result;
- }
-
- void Unload() {
- if (stop_proc_) {
- stop_proc_();
- }
- if (dll_) {
- FreeLibrary(dll_);
- }
- }
-
- private:
- HMODULE dll_;
- PROC start_proc_;
- PROC stop_proc_;
-};
-
-// Checks the window title and then class of hwnd. If they match with that
-// of a chrome_frame_helper.exe window, then add it to the list of windows
-// pointed to by lparam.
-BOOL CALLBACK CloseHelperWindowsEnumProc(HWND hwnd, LPARAM lparam) {
- _ASSERTE(lparam != 0);
-
- wchar_t title_buffer[MAX_PATH] = {0};
- if (GetWindowText(hwnd, title_buffer, MAX_PATH)) {
- if (lstrcmpiW(title_buffer, kChromeFrameHelperWindowName) == 0) {
- wchar_t class_buffer[MAX_PATH] = {0};
- if (GetClassName(hwnd, class_buffer, MAX_PATH)) {
- if (lstrcmpiW(class_buffer, kChromeFrameHelperWindowClassName) == 0) {
- if (hwnd != reinterpret_cast<HWND>(lparam)) {
- PostMessage(hwnd, WM_CLOSE, 0, 0);
- }
- }
- }
- }
- }
-
- return TRUE;
-}
-
-// Enumerates all top level windows, looking for those that look like a
-// Chrome Frame helper window. It then closes all of them except for
-// except_me.
-void CloseAllHelperWindowsApartFrom(HWND except_me) {
- EnumWindows(CloseHelperWindowsEnumProc, reinterpret_cast<LPARAM>(except_me));
-}
-
-LRESULT CALLBACK ChromeFrameHelperWndProc(HWND hwnd,
- UINT message,
- WPARAM wparam,
- LPARAM lparam) {
- switch (message) {
- case WM_CREATE:
- CloseAllHelperWindowsApartFrom(hwnd);
- break;
- case kRegistryWatcherChangeMessage:
- // A system level Chrome appeared. Fall through:
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- default:
- return ::DefWindowProc(hwnd, message, wparam, lparam);
- }
- return 0;
-}
-
-HWND RegisterAndCreateWindow(HINSTANCE hinstance) {
- WNDCLASSEX wcex = {0};
- wcex.cbSize = sizeof(WNDCLASSEX);
- wcex.lpfnWndProc = ChromeFrameHelperWndProc;
- wcex.hInstance = GetModuleHandle(NULL);
- wcex.hbrBackground = reinterpret_cast<HBRUSH>(COLOR_WINDOW+1);
- wcex.lpszClassName = kChromeFrameHelperWindowClassName;
- RegisterClassEx(&wcex);
-
- HWND hwnd = CreateWindow(kChromeFrameHelperWindowClassName,
- kChromeFrameHelperWindowName, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0,
- CW_USEDEFAULT, 0, NULL, NULL, hinstance, NULL);
-
- return hwnd;
-}
-
-
-// This method runs the user-level Chrome Frame uninstall command. This is
-// intended to allow it to delegate to an existing system-level install.
-bool UninstallUserLevelChromeFrame() {
- bool success = false;
- HKEY reg_handle = NULL;
- wchar_t reg_path_buffer[MAX_PATH] = {0};
- LONG result = RegOpenKeyEx(HKEY_CURRENT_USER,
- kChromeFrameClientStateKey,
- 0,
- KEY_QUERY_VALUE,
- &reg_handle);
- if (result == ERROR_SUCCESS) {
- wchar_t exe_buffer[MAX_PATH] = {0};
- wchar_t args_buffer[MAX_PATH] = {0};
- LONG exe_result = ReadValue(reg_handle,
- kChromeFrameUninstallCmdExeValue,
- MAX_PATH,
- exe_buffer);
- LONG args_result = ReadValue(reg_handle,
- kChromeFrameUninstallCmdArgsValue,
- MAX_PATH,
- args_buffer);
- RegCloseKey(reg_handle);
- reg_handle = NULL;
-
- if (exe_result == ERROR_SUCCESS && args_result == ERROR_SUCCESS) {
- STARTUPINFO startup_info = {0};
- startup_info.cb = sizeof(startup_info);
- startup_info.dwFlags = STARTF_USESHOWWINDOW;
- startup_info.wShowWindow = SW_SHOW;
- PROCESS_INFORMATION process_info = {0};
-
- // Quote the command string in the args.
- wchar_t argument_string[MAX_PATH * 3] = {0};
- int arg_len = _snwprintf(argument_string,
- _countof(argument_string) - 1,
- L"\"%s\" %s %s",
- exe_buffer,
- args_buffer,
- kForceUninstall);
-
- if (arg_len > 0 && CreateProcess(exe_buffer, argument_string,
- NULL, NULL, FALSE, 0, NULL, NULL,
- &startup_info, &process_info)) {
- // Close handles.
- CloseHandle(process_info.hThread);
- CloseHandle(process_info.hProcess);
- success = true;
- }
- }
- }
-
- return success;
-}
-
-void WaitCallback() {
- // Check if the Chrome Frame BHO is now in the list of registered BHOs:
- if (IsBHOLoadingPolicyRegistered()) {
- PostMessage(g_hwnd, kRegistryWatcherChangeMessage, 0, 0);
- }
-}
-
-int APIENTRY wWinMain(HINSTANCE hinstance, HINSTANCE, wchar_t*, int show_cmd) {
- google_breakpad::scoped_ptr<google_breakpad::ExceptionHandler> breakpad(
- InitializeCrashReporting(NORMAL));
-
- if (IsSystemLevelChromeFrameInstalled()) {
- // If we're running at startup, check for system-level Chrome Frame
- // installations. If we have one, time
- // to bail, also schedule user-level CF to be uninstalled at next logon.
- const wchar_t* cmd_line = ::GetCommandLine();
- if (cmd_line && wcsstr(cmd_line, kStartupArg) != NULL) {
- bool uninstalled = UninstallUserLevelChromeFrame();
- _ASSERTE(uninstalled);
- }
- return 0;
- }
-
- // Create a window with a known class and title just to listen for WM_CLOSE
- // messages that will shut us down.
- g_hwnd = RegisterAndCreateWindow(hinstance);
- _ASSERTE(IsWindow(g_hwnd));
-
- // Load the hook dll, and set the event hooks.
- HookDllLoader loader;
- bool loaded = loader.Load();
- _ASSERTE(loaded);
-
- // Start up the registry watcher
- RegistryWatcher registry_watcher(HKEY_LOCAL_MACHINE, kBHORegistrationPath,
- WaitCallback);
- bool watching = registry_watcher.StartWatching();
- _ASSERTE(watching);
-
- if (loaded) {
- MSG msg;
- BOOL ret;
- // Main message loop:
- while ((ret = GetMessage(&msg, NULL, 0, 0))) {
- if (ret == -1) {
- break;
- } else {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
- }
-
- UnregisterClass(kChromeFrameHelperWindowClassName, hinstance);
- return 0;
-}
« no previous file with comments | « chrome_frame/chrome_frame_helper_exe.ver ('k') | chrome_frame/chrome_frame_helper_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698