blob: d98ca69c5ed1084a37c64a2c56a4b8e2a34b2e97 [file] [log] [blame]
[email protected]f7817822009-09-24 05:11:581// 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.
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#include "chrome_frame/resource.h"
11#include "grit/chrome_frame_resources.h"
12
13// Include without path to make GYP build see it.
14#include "chrome_tab.h" // NOLINT
15
16// ChromeProtocol
17class ATL_NO_VTABLE ChromeProtocol
18 : public CComObjectRootEx<CComSingleThreadModel>,
19 public CComCoClass<ChromeProtocol, &CLSID_ChromeProtocol>,
20 public IInternetProtocol {
21 public:
22 ChromeProtocol() {
23 }
24 DECLARE_REGISTRY_RESOURCEID(IDR_CHROMEPROTOCOL)
25
26 BEGIN_COM_MAP(ChromeProtocol)
27 COM_INTERFACE_ENTRY(IInternetProtocol)
28 COM_INTERFACE_ENTRY(IInternetProtocolRoot)
29 END_COM_MAP()
30
31 DECLARE_PROTECT_FINAL_CONSTRUCT()
32
33 HRESULT FinalConstruct() {
34 return S_OK;
35 }
36 void FinalRelease() {
37 }
38
39 public:
40 // IInternetProtocolRoot
41 STDMETHOD(Start)(LPCWSTR url,
42 IInternetProtocolSink* prot_sink,
43 IInternetBindInfo* bind_info,
44 DWORD flags,
45 DWORD reserved);
46 STDMETHOD(Continue)(PROTOCOLDATA* protocol_data);
47 STDMETHOD(Abort)(HRESULT reason, DWORD options);
48 STDMETHOD(Terminate)(DWORD options);
49 STDMETHOD(Suspend)();
50 STDMETHOD(Resume)();
51
52 // IInternetProtocol based on IInternetProtocolRoot
53 STDMETHOD(Read)(void* buffer,
54 ULONG buffer_size_in_bytes,
55 ULONG* bytes_read);
56 STDMETHOD(Seek)(LARGE_INTEGER move_by,
57 DWORD origin,
58 ULARGE_INTEGER* new_position);
59 STDMETHOD(LockRequest)(DWORD options);
60 STDMETHOD(UnlockRequest)(void);
61};
62
[email protected]f7817822009-09-24 05:11:5863#endif // CHROME_FRAME_CHROME_PROTOCOL_H_