Index: chrome_frame/chrome_protocol.h |
=================================================================== |
--- chrome_frame/chrome_protocol.h (revision 0) |
+++ chrome_frame/chrome_protocol.h (revision 0) |
@@ -0,0 +1,65 @@ |
+// Copyright (c) 2009 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_CHROME_PROTOCOL_H_ |
+#define CHROME_FRAME_CHROME_PROTOCOL_H_ |
+ |
+#include <atlbase.h> |
+#include <atlcom.h> |
+#include "chrome_frame/resource.h" |
+#include "grit/chrome_frame_resources.h" |
+ |
+// Include without path to make GYP build see it. |
+#include "chrome_tab.h" // NOLINT |
+ |
+// ChromeProtocol |
+class ATL_NO_VTABLE ChromeProtocol |
+ : public CComObjectRootEx<CComSingleThreadModel>, |
+ public CComCoClass<ChromeProtocol, &CLSID_ChromeProtocol>, |
+ public IInternetProtocol { |
+ public: |
+ ChromeProtocol() { |
+ } |
+ DECLARE_REGISTRY_RESOURCEID(IDR_CHROMEPROTOCOL) |
+ |
+ BEGIN_COM_MAP(ChromeProtocol) |
+ COM_INTERFACE_ENTRY(IInternetProtocol) |
+ COM_INTERFACE_ENTRY(IInternetProtocolRoot) |
+ END_COM_MAP() |
+ |
+ DECLARE_PROTECT_FINAL_CONSTRUCT() |
+ |
+ HRESULT FinalConstruct() { |
+ return S_OK; |
+ } |
+ void FinalRelease() { |
+ } |
+ |
+ public: |
+ // IInternetProtocolRoot |
+ STDMETHOD(Start)(LPCWSTR url, |
+ IInternetProtocolSink* prot_sink, |
+ IInternetBindInfo* bind_info, |
+ DWORD flags, |
+ DWORD reserved); |
+ STDMETHOD(Continue)(PROTOCOLDATA* protocol_data); |
+ STDMETHOD(Abort)(HRESULT reason, DWORD options); |
+ STDMETHOD(Terminate)(DWORD options); |
+ STDMETHOD(Suspend)(); |
+ STDMETHOD(Resume)(); |
+ |
+ // IInternetProtocol based on IInternetProtocolRoot |
+ STDMETHOD(Read)(void* buffer, |
+ ULONG buffer_size_in_bytes, |
+ ULONG* bytes_read); |
+ STDMETHOD(Seek)(LARGE_INTEGER move_by, |
+ DWORD origin, |
+ ULARGE_INTEGER* new_position); |
+ STDMETHOD(LockRequest)(DWORD options); |
+ STDMETHOD(UnlockRequest)(void); |
+}; |
+ |
+OBJECT_ENTRY_AUTO(__uuidof(ChromeProtocol), ChromeProtocol) |
+ |
+#endif // CHROME_FRAME_CHROME_PROTOCOL_H_ |