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

Unified Diff: chrome_frame/urlmon_moniker.h

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/urlmon_bind_status_callback.cc ('k') | chrome_frame/urlmon_moniker.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/urlmon_moniker.h
diff --git a/chrome_frame/urlmon_moniker.h b/chrome_frame/urlmon_moniker.h
deleted file mode 100644
index ea4729d3365d99a0a5b05cf8f9339e25f04c397e..0000000000000000000000000000000000000000
--- a/chrome_frame/urlmon_moniker.h
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright (c) 2010 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.
-
-#ifndef CHROME_FRAME_URLMON_MONIKER_H_
-#define CHROME_FRAME_URLMON_MONIKER_H_
-
-#include <atlbase.h>
-#include <atlcom.h>
-#include <urlmon.h>
-#include <string>
-
-#include "base/lazy_instance.h"
-#include "base/logging.h"
-#include "base/threading/thread_local.h"
-#include "base/win/scoped_variant.h"
-#include "chrome_frame/utils.h"
-
-// This file contains classes that are used to cache the contents of a top-level
-// http request (not for sub frames) while that request is parsed for the
-// presence of a meta tag indicating that the page should be rendered in CF.
-
-// Here are a few scenarios we handle and how the classes come to play.
-
-//
-// Scenario 1: Non CF url navigation through address bar (www.msn.com)
-// - Bho::BeforeNavigate - top level url = www.msn.com
-// - MSHTML -> MonikerPatch::BindToStorage.
-// (IEFrame starts this by calling mshtml!*SuperNavigate*)
-// - check if the url is a top level url
-// - iff the url is a top level url, we switch in our own callback object
-// and hook it up to the bind context (BSCBStorageBind)
-// - otherwise just call the original
-// - BSCBStorageBind::OnDataAvailable - sniffs data and determines that the
-// renderer is not chrome. Goes into pass through mode.
-// - The page loads in mshtml.
-//
-
-//
-// Scenario 2: CF navigation through address bar URL
-// - Bho::BeforeNavigate - top level url = http://wave.google.com/
-// - MSHTML -> MonikerPatch::BindToStorage.
-// (IEFrame starts this by calling mshtml!*SuperNavigate*)
-// - request_data is NULL
-// - check if the url is a top level url
-// - iff the url is a top level url, we switch in our own callback object
-// and hook it up to the bind context (BSCBStorageBind)
-// - BSCBStorageBind::OnDataAvailable - sniffs data and determines that the
-// renderer is chrome. It then registers a special bind context param and
-// sets a magic clip format in the format_etc. Then goes into pass through
-// mode.
-// - mshtml looks at the clip format and re-issues the navigation with the
-// same bind context. Also returns INET_E_TERMINATED_BIND so that same
-// underlying transaction objects are used.
-// - IEFrame -> MonikerPatch::BindToStorage
-// - We check for the special bind context param and instantiate and
-// return our ActiveDoc
-
-//
-// Scenario 3: CF navigation through mshtml link
-// Same as scenario #2.
-//
-
-//
-// Scenario 4: CF navigation through link click in chrome loads non CF page
-// - Link click comes to ChromeActiveDocument::OnOpenURL
-// - web_browser->Navigate with URL
-// - [Scenario 1]
-//
-
-//
-// Scenario 5: CF navigation through link click in chrome loads CF page
-// - Link click comes to ChromeActiveDocument::OnOpenURL
-// - web_browser->Navigate with URL
-// - [Scenario 2]
-//
-
-// This class is the link between a few static, moniker related functions to
-// the bho. The specific services needed by those functions are abstracted into
-// this interface for easier testability.
-class NavigationManager {
- public:
- NavigationManager() {
- }
-
- // Returns the Bho instance for the current thread. This is returned from
- // TLS. Returns NULL if no instance exists on the current thread.
- static NavigationManager* GetThreadInstance();
-
- void RegisterThreadInstance();
- void UnregisterThreadInstance();
-
- virtual ~NavigationManager() {
- DCHECK(GetThreadInstance() != this);
- }
-
- // Returns the url of the current top level navigation.
- const std::wstring& url() const {
- return url_;
- }
-
- // Called to set the current top level URL that's being navigated to.
- void set_url(const wchar_t* url) {
- DVLOG(1) << __FUNCTION__ << " " << url;
- url_ = url;
- }
-
- // Returns the referrer header value of the current top level navigation.
- const std::string& referrer() const {
- return referrer_;
- }
-
- void set_referrer(const std::string& referrer) {
- referrer_ = referrer;
- }
-
- // Return true if this is a URL that represents a top-level
- // document that might have to be rendered in CF.
- virtual bool IsTopLevelUrl(const wchar_t* url);
-
- // Called when we've detected the http-equiv meta tag in the current page
- // and need to switch over from mshtml to CF.
- virtual HRESULT NavigateToCurrentUrlInCF(IBrowserService* browser);
-
- void set_post_data(VARIANT* post_data) {
- post_data_.Reset();
- if (post_data) {
- if (V_VT(post_data) == (VT_BYREF | VT_VARIANT)) {
- post_data_.Set(*post_data->pvarVal);
- } else {
- NOTREACHED() << "unexpected type for post_data: "
- << std::hex << post_data->vt;
- }
- }
- }
-
- const base::win::ScopedVariant& post_data() const {
- return post_data_;
- }
-
- void set_headers(VARIANT* headers) {
- headers_.Reset();
- if (headers) {
- headers_ = *headers;
- }
- }
-
- const base::win::ScopedVariant& headers() const {
- return headers_;
- }
-
- protected:
- std::string referrer_;
- std::wstring url_;
- base::win::ScopedVariant post_data_;
- base::win::ScopedVariant headers_;
-
- static base::LazyInstance<base::ThreadLocalPointer<NavigationManager> >
- thread_singleton_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(NavigationManager);
-};
-
-// static-only class that manages an IMoniker patch.
-// We need this patch to stay in the loop when top-level HTML content is
-// downloaded that might have the CF http-equiv meta tag.
-// When we detect candidates for those requests, we add our own callback
-// object (as explained at the top of this file) and use it to cache the
-// original document contents in order to avoid multiple network trips
-// if we need to switch the renderer over to CF.
-class MonikerPatch {
- MonikerPatch() {} // no instances should be created of this class.
- public:
- // Patches two IMoniker methods, BindToObject and BindToStorage.
- static bool Initialize();
-
- // Nullifies the IMoniker patches.
- static void Uninitialize();
-
- // Typedefs for IMoniker methods.
- typedef HRESULT (STDMETHODCALLTYPE* IMoniker_BindToObject_Fn)(IMoniker* me,
- IBindCtx* bind_ctx, IMoniker* to_left, REFIID iid, void** obj);
- typedef HRESULT (STDMETHODCALLTYPE* IMoniker_BindToStorage_Fn)(IMoniker* me,
- IBindCtx* bind_ctx, IMoniker* to_left, REFIID iid, void** obj);
-
- static STDMETHODIMP BindToObject(IMoniker_BindToObject_Fn original,
- IMoniker* me, IBindCtx* bind_ctx,
- IMoniker* to_left, REFIID iid, void** obj);
-
- static STDMETHODIMP BindToStorage(IMoniker_BindToStorage_Fn original,
- IMoniker* me, IBindCtx* bind_ctx,
- IMoniker* to_left, REFIID iid, void** obj);
-};
-
-extern wchar_t* kChromeRequestParam;
-
-#endif // CHROME_FRAME_URLMON_MONIKER_H_
« no previous file with comments | « chrome_frame/urlmon_bind_status_callback.cc ('k') | chrome_frame/urlmon_moniker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698