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

Unified Diff: chrome_frame/bind_status_callback_impl.h

Issue 1589013: Switch renderer in Moniker patch... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 8 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
Index: chrome_frame/bind_status_callback_impl.h
===================================================================
--- chrome_frame/bind_status_callback_impl.h (revision 0)
+++ chrome_frame/bind_status_callback_impl.h (revision 0)
@@ -0,0 +1,98 @@
+// 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_BIND_STATUS_CALLBACK_IMPL_H_
+#define CHROME_FRAME_BIND_STATUS_CALLBACK_IMPL_H_
+
+#include <atlbase.h>
+#include <atlcom.h>
+#include <string>
+#include <urlmon.h>
+
+#include "base/scoped_comptr_win.h"
+#include "chrome_frame/utils.h"
+
+// A generic base class for IBindStatus callback implementation.
+// If initialized with delegate, it will hand over all the calls
+// to the delegate. This can also be used as a base class to
+// provide the base implementation by not providing any delegate.
+class BSCBImpl
+ : public CComObjectRootEx<CComMultiThreadModel>,
+ public IBindStatusCallbackEx,
+ public IHttpNegotiate3,
+ public IServiceProvider {
+ public:
+ BSCBImpl();
+ ~BSCBImpl();
+
+BEGIN_COM_MAP(BSCBImpl)
+ COM_INTERFACE_ENTRY(IBindStatusCallback)
+ COM_INTERFACE_ENTRY(IHttpNegotiate)
+ COM_INTERFACE_ENTRY_IF_DELEGATE_SUPPORTS(IBindStatusCallbackEx)
+ COM_INTERFACE_ENTRY_IF_DELEGATE_SUPPORTS(IHttpNegotiate2)
+ COM_INTERFACE_ENTRY_IF_DELEGATE_SUPPORTS(IHttpNegotiate3)
+ COM_INTERFACE_ENTRY_IF_DELEGATE_SUPPORTS(IServiceProvider)
+ COM_INTERFACE_ENTRY_FUNC_BLIND(0, DelegateQI)
+END_COM_MAP()
+
+ static STDMETHODIMP DelegateQI(void* obj, REFIID iid, void** ret,
+ DWORD cookie);
+
+ void Initialize(IBindStatusCallback* original);
+ HRESULT AttachToBind(IBindCtx* original);
+ HRESULT ReleaseBind();
+
+ // For the COM_INTERFACE_ENTRY_IF_DELEGATE_SUPPORTS macro.
+ IBindStatusCallback* delegate() const {
+ return delegate_;
+ }
+
+ IBindCtx* bind_ctx() const {
+ return bind_ctx_;
+ }
+
+ // IServiceProvider
+ STDMETHOD(QueryService)(REFGUID service, REFIID iid, void** object);
+
+ // IBindStatusCallback
+ STDMETHOD(OnStartBinding)(DWORD reserved, IBinding* binding);
+ STDMETHOD(GetPriority)(LONG* priority);
+ STDMETHOD(OnLowResource)(DWORD reserved);
+ STDMETHOD(OnProgress)(ULONG progress, ULONG progress_max, ULONG status_code,
+ LPCWSTR status_text);
+ STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR error);
+ STDMETHOD(GetBindInfo)(DWORD* bindf, BINDINFO* bind_info);
+ STDMETHOD(OnDataAvailable)(DWORD bscf, DWORD size, FORMATETC* format_etc,
+ STGMEDIUM* stgmed);
+ STDMETHOD(OnObjectAvailable)(REFIID iid, IUnknown* unk);
+
+ // IBindStatusCallbackEx
+ STDMETHOD(GetBindInfoEx)(DWORD* bindf, BINDINFO* bind_info, DWORD* bindf2,
+ DWORD* reserved);
+
+ // IHttpNegotiate
+ STDMETHOD(BeginningTransaction)(LPCWSTR url, LPCWSTR headers, DWORD reserved,
+ LPWSTR* additional_headers);
+ STDMETHOD(OnResponse)(DWORD response_code, LPCWSTR response_headers,
+ LPCWSTR request_headers, LPWSTR* additional_headers);
+
+ // IHttpNegotiate2
+ STDMETHOD(GetRootSecurityId)(BYTE* security_id, DWORD* security_id_size,
+ DWORD_PTR reserved);
+
+ // IHttpNegotiate3
+ STDMETHOD(GetSerializedClientCertContext)(BYTE** cert, DWORD* cert_size);
+
+ protected:
+ // used for logging.
+ std::string me();
+
+ ScopedComPtr<IBindStatusCallback> delegate_;
+ ScopedComPtr<IBindCtx> bind_ctx_;
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(BSCBImpl);
+};
+
+#endif // CHROME_FRAME_BIND_STATUS_CALLBACK_IMPL_H_
Property changes on: chrome_frame\bind_status_callback_impl.h
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698