• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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.
4 
5 #ifndef CHROME_FRAME_CHROME_PROTOCOL_H_
6 #define CHROME_FRAME_CHROME_PROTOCOL_H_
7 
8 #include <atlbase.h>
9 #include <atlcom.h>
10 
11 #include "chrome_frame/chrome_tab.h"
12 #include "chrome_frame/resource.h"
13 #include "grit/chrome_frame_resources.h"
14 
15 // ChromeProtocol
16 class ATL_NO_VTABLE ChromeProtocol
17     : public CComObjectRootEx<CComSingleThreadModel>,
18       public CComCoClass<ChromeProtocol, &CLSID_ChromeProtocol>,
19       public IInternetProtocol {
20  public:
ChromeProtocol()21   ChromeProtocol() {
22   }
23   DECLARE_REGISTRY_RESOURCEID(IDR_CHROMEPROTOCOL)
24 
BEGIN_COM_MAP(ChromeProtocol)25   BEGIN_COM_MAP(ChromeProtocol)
26     COM_INTERFACE_ENTRY(IInternetProtocol)
27     COM_INTERFACE_ENTRY(IInternetProtocolRoot)
28   END_COM_MAP()
29 
30   DECLARE_PROTECT_FINAL_CONSTRUCT()
31 
32   HRESULT FinalConstruct() {
33     return S_OK;
34   }
FinalRelease()35   void FinalRelease() {
36   }
37 
38  public:
39   // IInternetProtocolRoot
40   STDMETHOD(Start)(LPCWSTR url,
41                    IInternetProtocolSink* prot_sink,
42                    IInternetBindInfo* bind_info,
43                    DWORD flags,
44                    DWORD reserved);
45   STDMETHOD(Continue)(PROTOCOLDATA* protocol_data);
46   STDMETHOD(Abort)(HRESULT reason, DWORD options);
47   STDMETHOD(Terminate)(DWORD options);
48   STDMETHOD(Suspend)();
49   STDMETHOD(Resume)();
50 
51   // IInternetProtocol based on IInternetProtocolRoot
52   STDMETHOD(Read)(void* buffer,
53                   ULONG buffer_size_in_bytes,
54                   ULONG* bytes_read);
55   STDMETHOD(Seek)(LARGE_INTEGER move_by,
56                   DWORD origin,
57                   ULARGE_INTEGER* new_position);
58   STDMETHOD(LockRequest)(DWORD options);
59   STDMETHOD(UnlockRequest)(void);
60 };
61 
62 #endif  // CHROME_FRAME_CHROME_PROTOCOL_H_
63