Index: chrome_frame/chrome_protocol.cc |
=================================================================== |
--- chrome_frame/chrome_protocol.cc (revision 0) |
+++ chrome_frame/chrome_protocol.cc (revision 0) |
@@ -0,0 +1,85 @@ |
+// 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. |
+ |
+// Implementation of ChromeProtocol |
+#include "chrome_frame/chrome_protocol.h" |
+ |
+#include "base/logging.h" |
+ |
+static const wchar_t* kChromeMimeType = L"application/chromepage"; |
+ |
+// ChromeProtocol |
+ |
+// Starts the class associated with the asynchronous pluggable protocol. |
+STDMETHODIMP ChromeProtocol::Start(LPCWSTR url, |
+ IInternetProtocolSink* prot_sink, |
+ IInternetBindInfo* bind_info, |
+ DWORD flags, |
+ DWORD reserved) { |
+ DLOG(INFO) << __FUNCTION__ << ": URL = " << url; |
+ prot_sink->ReportProgress(BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, |
+ kChromeMimeType); |
+ prot_sink->ReportData( |
+ BSCF_FIRSTDATANOTIFICATION | BSCF_LASTDATANOTIFICATION | |
+ BSCF_DATAFULLYAVAILABLE, |
+ 0, |
+ 0); |
+ return S_OK; |
+} |
+ |
+// Allows the pluggable protocol handler to continue processing data on the |
+// apartment (or user interface) thread. This method is called in response |
+// to a call to IInternetProtocolSink::Switch. |
+STDMETHODIMP ChromeProtocol::Continue(PROTOCOLDATA* protocol_data) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_OK; |
+} |
+ |
+// Aborts an operation in progress. |
+STDMETHODIMP ChromeProtocol::Abort(HRESULT reason, DWORD options) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_OK; |
+} |
+ |
+STDMETHODIMP ChromeProtocol::Terminate(DWORD options) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_OK; |
+} |
+ |
+STDMETHODIMP ChromeProtocol::Suspend() { |
+ return E_NOTIMPL; |
+} |
+STDMETHODIMP ChromeProtocol::Resume() { |
+ return E_NOTIMPL; |
+} |
+ |
+// Reads data retrieved by the pluggable protocol handler. |
+STDMETHODIMP ChromeProtocol::Read(void* buffer, |
+ ULONG buffer_size_in_bytes, |
+ ULONG* bytes_read) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_FALSE; |
+} |
+ |
+// Moves the current seek offset. |
+STDMETHODIMP ChromeProtocol::Seek(LARGE_INTEGER move_by, |
+ DWORD origin, |
+ ULARGE_INTEGER* new_position) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return E_NOTIMPL; |
+} |
+ |
+// Locks the request so that IInternetProtocolRoot::Terminate () |
+// can be called and the remaining data can be read. |
+STDMETHODIMP ChromeProtocol::LockRequest(DWORD options) { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_OK; |
+} |
+ |
+// Frees any resources associated with a lock. Called only if |
+// IInternetProtocol::LockRequest () was called. |
+STDMETHODIMP ChromeProtocol::UnlockRequest() { |
+ DLOG(INFO) << __FUNCTION__; |
+ return S_OK; |
+} |