OLD | NEW |
1 /* | |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | |
3 * Copyright (C) 2006-2015 Eyeo GmbH | |
4 * | |
5 * Adblock Plus is free software: you can redistribute it and/or modify | |
6 * it under the terms of the GNU General Public License version 3 as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * Adblock Plus is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License | |
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | |
16 */ | |
17 | |
18 #ifndef PASSTHROUGHAPP_SINKPOLICY_INL | 1 #ifndef PASSTHROUGHAPP_SINKPOLICY_INL |
19 #define PASSTHROUGHAPP_SINKPOLICY_INL | 2 #define PASSTHROUGHAPP_SINKPOLICY_INL |
20 | 3 |
21 #if _MSC_VER > 1000 | 4 #if _MSC_VER > 1000 |
22 #pragma once | 5 #pragma once |
23 #endif // _MSC_VER > 1000 | 6 #endif // _MSC_VER > 1000 |
24 | 7 |
25 #ifndef PASSTHROUGHAPP_SINKPOLICY_H | 8 #ifndef PASSTHROUGHAPP_SINKPOLICY_H |
26 #error SinkPolicy.inl requires SinkPolicy.h to be included first | 9 #error SinkPolicy.inl requires SinkPolicy.h to be included first |
27 #endif | 10 #endif |
28 | 11 |
29 namespace PassthroughAPP | 12 namespace PassthroughAPP |
30 { | 13 { |
31 | 14 |
32 // ===== NoSinkStartPolicy ===== | 15 // ===== NoSinkStartPolicy ===== |
33 | 16 |
34 inline HRESULT NoSinkStartPolicy::OnStart(LPCWSTR szUrl, | 17 inline HRESULT NoSinkStartPolicy::OnStart(LPCWSTR szUrl, |
35 IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, | 18 IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, |
36 DWORD grfPI, HANDLE_PTR dwReserved, | 19 DWORD grfPI, HANDLE_PTR dwReserved, |
37 IInternetProtocol* pTargetProtocol) const | 20 IInternetProtocol* pTargetProtocol) const |
38 { | 21 { |
39 ATLASSERT(pTargetProtocol != 0); | 22 ATLASSERT(pTargetProtocol != 0); |
40 return pTargetProtocol->Start(szUrl, pOIProtSink, pOIBindInfo, | 23 return pTargetProtocol->Start(szUrl, pOIProtSink, pOIBindInfo, |
41 grfPI, dwReserved); | 24 grfPI, dwReserved); |
42 } | 25 } |
43 | 26 |
| 27 inline HRESULT NoSinkStartPolicy::OnStartEx(IUri* pUri, |
| 28 IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, |
| 29 DWORD grfPI, HANDLE_PTR dwReserved, |
| 30 IInternetProtocolEx* pTargetProtocol) const |
| 31 { |
| 32 ATLASSERT(pTargetProtocol != 0); |
| 33 return pTargetProtocol->StartEx(pUri, pOIProtSink, pOIBindInfo, |
| 34 grfPI, dwReserved); |
| 35 } |
44 | 36 |
45 // ===== CComObjectSharedRef ===== | 37 // ===== CComObjectSharedRef ===== |
46 | 38 |
47 template<class Base> | 39 template<class Base> |
48 inline CComObjectSharedRef<Base>:: | 40 inline CComObjectSharedRef<Base>:: |
49 CComObjectSharedRef(IUnknown* punkRefCount, IUnknown*) : | 41 CComObjectSharedRef(IUnknown* punkRefCount, IUnknown*) : |
50 m_punkRefCount(punkRefCount) | 42 m_punkRefCount(punkRefCount) |
51 { | 43 { |
52 ATLASSERT(punkRefCount != 0); | 44 ATLASSERT(punkRefCount != 0); |
53 } | 45 } |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 ATLASSERT(pTargetProtocol != 0); | 372 ATLASSERT(pTargetProtocol != 0); |
381 | 373 |
382 Sink* pSink = GetSink(static_cast<const Protocol*>(this)); | 374 Sink* pSink = GetSink(static_cast<const Protocol*>(this)); |
383 HRESULT hr = pSink->OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, | 375 HRESULT hr = pSink->OnStart(szUrl, pOIProtSink, pOIBindInfo, grfPI, |
384 dwReserved, pTargetProtocol); | 376 dwReserved, pTargetProtocol); |
385 | 377 |
386 CComPtr<IInternetProtocolSink> spSink; | 378 CComPtr<IInternetProtocolSink> spSink; |
387 CComPtr<IInternetBindInfo> spBindInfo; | 379 CComPtr<IInternetBindInfo> spBindInfo; |
388 if (SUCCEEDED(hr)) | 380 if (SUCCEEDED(hr)) |
389 { | 381 { |
390 » » hr = pSink->QueryInterface(IID_IInternetProtocolSink, reinterpre
t_cast<void**>(&spSink)); | 382 » » hr = pSink->QueryInterface(IID_IInternetProtocolSink, |
| 383 » » » reinterpret_cast<void**>(&spSink)); |
391 ATLASSERT(SUCCEEDED(hr) && spSink != 0); | 384 ATLASSERT(SUCCEEDED(hr) && spSink != 0); |
392 } | 385 } |
393 if (SUCCEEDED(hr)) | 386 if (SUCCEEDED(hr)) |
394 { | 387 { |
395 » » hr = pSink->QueryInterface(IID_IInternetBindInfo, reinterpret_ca
st<void**>(&spBindInfo)); | 388 » » hr = pSink->QueryInterface(IID_IInternetBindInfo, |
| 389 » » » reinterpret_cast<void**>(&spBindInfo)); |
396 ATLASSERT(SUCCEEDED(hr) && spBindInfo != 0); | 390 ATLASSERT(SUCCEEDED(hr) && spBindInfo != 0); |
397 } | 391 } |
398 if (SUCCEEDED(hr)) | 392 if (SUCCEEDED(hr)) |
399 { | 393 { |
400 » » hr = pTargetProtocol->Start(szUrl, spSink, spBindInfo, grfPI, dw
Reserved); | 394 » » hr = pTargetProtocol->Start(szUrl, spSink, spBindInfo, grfPI, |
| 395 » » » dwReserved); |
401 } | 396 } |
402 return hr; | 397 return hr; |
403 } | 398 } |
404 | 399 |
| 400 template <class Protocol, class Sink> |
| 401 inline HRESULT CustomSinkStartPolicy<Protocol, Sink>::OnStartEx(IUri* pUri, |
| 402 IInternetProtocolSink *pOIProtSink, IInternetBindInfo *pOIBindInfo, |
| 403 DWORD grfPI, HANDLE_PTR dwReserved, |
| 404 IInternetProtocolEx* pTargetProtocol) const |
| 405 { |
| 406 ATLASSERT(pTargetProtocol != 0); |
| 407 |
| 408 Sink* pSink = GetSink(static_cast<const Protocol*>(this)); |
| 409 HRESULT hr = pSink->OnStartEx(pUri, pOIProtSink, pOIBindInfo, grfPI, |
| 410 dwReserved, pTargetProtocol); |
| 411 |
| 412 CComPtr<IInternetProtocolSink> spSink; |
| 413 CComPtr<IInternetBindInfo> spBindInfo; |
| 414 if (SUCCEEDED(hr)) |
| 415 { |
| 416 hr = pSink->QueryInterface(IID_IInternetProtocolSink, |
| 417 reinterpret_cast<void**>(&spSink)); |
| 418 ATLASSERT(SUCCEEDED(hr) && spSink != 0); |
| 419 } |
| 420 if (SUCCEEDED(hr)) |
| 421 { |
| 422 hr = pSink->QueryInterface(IID_IInternetBindInfo, |
| 423 reinterpret_cast<void**>(&spBindInfo)); |
| 424 ATLASSERT(SUCCEEDED(hr) && spBindInfo != 0); |
| 425 } |
| 426 if (SUCCEEDED(hr)) |
| 427 { |
| 428 hr = pTargetProtocol->StartEx(pUri, spSink, spBindInfo, grfPI, |
| 429 dwReserved); |
| 430 } |
| 431 return hr; |
| 432 } |
405 | 433 |
406 template <class Protocol, class Sink> | 434 template <class Protocol, class Sink> |
407 inline Sink* CustomSinkStartPolicy<Protocol, Sink>::GetSink( | 435 inline Sink* CustomSinkStartPolicy<Protocol, Sink>::GetSink( |
408 const Protocol* pProtocol) | 436 const Protocol* pProtocol) |
409 { | 437 { |
410 return Protocol::ComObjectClass::GetSink(pProtocol); | 438 return Protocol::ComObjectClass::GetSink(pProtocol); |
411 } | 439 } |
412 | 440 |
413 template <class Protocol, class Sink> | 441 template <class Protocol, class Sink> |
414 inline Sink* CustomSinkStartPolicy<Protocol, Sink>::GetSink() const | 442 inline Sink* CustomSinkStartPolicy<Protocol, Sink>::GetSink() const |
415 { | 443 { |
416 return GetSink(static_cast<const Protocol*>(this)); | 444 return GetSink(static_cast<const Protocol*>(this)); |
417 } | 445 } |
418 | 446 |
419 template <class Protocol, class Sink> | 447 template <class Protocol, class Sink> |
420 inline Protocol* CustomSinkStartPolicy<Protocol, Sink>::GetProtocol( | 448 inline Protocol* CustomSinkStartPolicy<Protocol, Sink>::GetProtocol( |
421 const Sink* pSink) | 449 const Sink* pSink) |
422 { | 450 { |
423 return Protocol::ComObjectClass::GetProtocol(pSink); | 451 return Protocol::ComObjectClass::GetProtocol(pSink); |
424 } | 452 } |
425 | 453 |
426 } // end namespace PassthroughAPP | 454 } // end namespace PassthroughAPP |
427 | 455 |
428 #endif // PASSTHROUGHAPP_SINKPOLICY_INL | 456 #endif // PASSTHROUGHAPP_SINKPOLICY_INL |
OLD | NEW |