1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_FRAME_CHROME_PROTOCOL_H_
6 #define CHROME_FRAME_CHROME_PROTOCOL_H_
10 #include "chrome_frame/resource.h"
11 #include "grit/chrome_frame_resources.h"
13 // Include without path to make GYP build see it.
14 #include "chrome_tab.h" // NOLINT
17 class ATL_NO_VTABLE ChromeProtocol
18 : public CComObjectRootEx
<CComSingleThreadModel
>,
19 public CComCoClass
<ChromeProtocol
, &CLSID_ChromeProtocol
>,
20 public IInternetProtocol
{
24 DECLARE_REGISTRY_RESOURCEID(IDR_CHROMEPROTOCOL
)
26 BEGIN_COM_MAP(ChromeProtocol
)
27 COM_INTERFACE_ENTRY(IInternetProtocol
)
28 COM_INTERFACE_ENTRY(IInternetProtocolRoot
)
31 DECLARE_PROTECT_FINAL_CONSTRUCT()
33 HRESULT
FinalConstruct() {
40 // IInternetProtocolRoot
41 STDMETHOD(Start
)(LPCWSTR url
,
42 IInternetProtocolSink
* prot_sink
,
43 IInternetBindInfo
* bind_info
,
46 STDMETHOD(Continue
)(PROTOCOLDATA
* protocol_data
);
47 STDMETHOD(Abort
)(HRESULT reason
, DWORD options
);
48 STDMETHOD(Terminate
)(DWORD options
);
52 // IInternetProtocol based on IInternetProtocolRoot
53 STDMETHOD(Read
)(void* buffer
,
54 ULONG buffer_size_in_bytes
,
56 STDMETHOD(Seek
)(LARGE_INTEGER move_by
,
58 ULARGE_INTEGER
* new_position
);
59 STDMETHOD(LockRequest
)(DWORD options
);
60 STDMETHOD(UnlockRequest
)(void);
63 #endif // CHROME_FRAME_CHROME_PROTOCOL_H_