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

Unified Diff: chrome_frame/bho_loader.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/bho_loader.h ('k') | chrome_frame/bind_context_info.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/bho_loader.cc
diff --git a/chrome_frame/bho_loader.cc b/chrome_frame/bho_loader.cc
deleted file mode 100644
index d76898cf8f31813e6706bee88198b44548b3a664..0000000000000000000000000000000000000000
--- a/chrome_frame/bho_loader.cc
+++ /dev/null
@@ -1,132 +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.
-
-#include "chrome_frame/bho_loader.h"
-
-#include <atlbase.h>
-#include <atlcomcli.h>
-#include <exdisp.h>
-
-#include "chrome_frame/chrome_frame_helper_util.h"
-#include "chrome_frame/chrome_tab.h"
-#include "chrome_frame/event_hooker.h"
-
-
-// Describes the window class we look for.
-const wchar_t kStatusBarWindowClass[] = L"msctls_statusbar32";
-
-// On IE9, the status bar is disabled by default, so we look for an
-// AsyncBoundaryLayer window instead.
-const wchar_t kAsyncBoundaryDnWindow[] = L"asynclayerboundarydn\0";
-
-BHOLoader::BHOLoader() : hooker_(new EventHooker()) {
-}
-
-BHOLoader::~BHOLoader() {
- if (hooker_) {
- delete hooker_;
- hooker_ = NULL;
- }
-}
-
-void BHOLoader::OnHookEvent(DWORD event, HWND window) {
- // Step 1: Make sure that we are in a process named iexplore.exe.
- if (IsNamedProcess(L"iexplore.exe")) {
- if (!IsWindowOfClass(window, kStatusBarWindowClass) &&
- !IsWindowOfClass(window, kAsyncBoundaryDnWindow)) {
- return;
- } else {
- // We have the right sort of window, check to make sure it was created
- // on the current thread.
- DWORD thread_id = GetWindowThreadProcessId(window, NULL);
- _ASSERTE(thread_id == GetCurrentThreadId());
- }
-
- // Step 2: Check to see if the window is of the right class.
- HWND browser_hwnd = NULL;
- if (IsWindowOfClass(window, kStatusBarWindowClass)) {
- // For IE8 and under, IE loads BHOs in the WM_CREATE handler of the tab
- // window approximately after it creates the status bar window. To be as
- // close to IE as possible in our simulation on BHO loading, we watch for
- // the status bar to be created and do our simulated BHO loading at that
- // time.
- browser_hwnd = GetParent(window);
- } else if (IsWindowOfClass(window, kAsyncBoundaryDnWindow)) {
- // For IE9, the status bar is disabled by default, so we look for an
- // AsyncBoundaryWindow to be created. When we find that, look for a
- // child window owned by the current thread named "tabwindowclass".
- // That will be our browser window.
- browser_hwnd = RecurseFindWindow(NULL, L"tabwindowclass", NULL,
- GetCurrentThreadId(),
- GetCurrentProcessId());
- _ASSERTE(NULL != browser_hwnd);
- }
-
- if (browser_hwnd != NULL) {
- // Step 3:
- // Parent window of status bar window is the web browser window. Try to
- // get its IWebBrowser2 interface
- CComPtr<IWebBrowser2> browser;
- UtilGetWebBrowserObjectFromWindow(browser_hwnd, __uuidof(browser),
- reinterpret_cast<void**>(&browser));
- if (browser) {
- if (IsSystemLevelChromeFrameInstalled()) {
- // We're in the right place, but a system-level installation has
- // appeared. We should leave now.
- return;
- }
-
- // Figure out if we're already in the property map.
- wchar_t bho_clsid_as_string[MAX_PATH] = {0};
- StringFromGUID2(CLSID_ChromeFrameBHO, bho_clsid_as_string,
- ARRAYSIZE(bho_clsid_as_string));
- CComBSTR bho_clsid_as_string_bstr(bho_clsid_as_string);
-
- CComVariant existing_bho;
- HRESULT hr = browser->GetProperty(bho_clsid_as_string_bstr,
- &existing_bho);
-
- if (V_VT(&existing_bho) != VT_DISPATCH &&
- V_VT(&existing_bho) != VT_UNKNOWN) {
- // Step 4:
- // We have the IWebBrowser2 interface. Now create the BHO instance
- CComPtr<IObjectWithSite> bho_object;
- hr = bho_object.CoCreateInstance(CLSID_ChromeFrameBHO,
- NULL,
- CLSCTX_INPROC_SERVER);
-
- _ASSERTE(bho_object);
- if (SUCCEEDED(hr) && bho_object) {
- // Step 5:
- // Initialize the BHO by calling SetSite and passing it IWebBrowser2
- hr = bho_object->SetSite(browser);
- _ASSERTE(bho_object);
- if (SUCCEEDED(hr)) {
- // Step 6:
- // Now add the BHO to the collection of automation objects. This
- // will ensure that BHO will be accessible from the web pages as
- // any other BHO. Importantly, it will make sure that our BHO
- // will be cleaned up at the right time along with other BHOs.
- CComVariant object_variant(bho_object);
- browser->PutProperty(bho_clsid_as_string_bstr, object_variant);
- }
- }
- }
- }
- }
- }
-}
-
-bool BHOLoader::StartHook() {
- return hooker_->StartHook();
-}
-
-void BHOLoader::StopHook() {
- hooker_->StopHook();
-}
-
-BHOLoader* BHOLoader::GetInstance() {
- static BHOLoader loader;
- return &loader;
-}
« no previous file with comments | « chrome_frame/bho_loader.h ('k') | chrome_frame/bind_context_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698