15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome_frame/stream_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StreamImpl::Initialize(IStream* delegate) { 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delegate_ = delegate; 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Write(const void * buffer, ULONG size, 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULONG* size_written) { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Write(buffer, size, size_written); 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Read(void* pv, ULONG cb, ULONG* read) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Read(pv, cb, read); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Seek(LARGE_INTEGER move, DWORD origin, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULARGE_INTEGER* new_pos) { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Seek(move, origin, new_pos); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::SetSize(ULARGE_INTEGER new_size) { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->SetSize(new_size); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::CopyTo(IStream* stream, ULARGE_INTEGER cb, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULARGE_INTEGER* read, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ULARGE_INTEGER* written) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->CopyTo(stream, cb, read, written); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Commit(DWORD flags) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Commit(flags); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Revert() { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Revert(); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::LockRegion(ULARGE_INTEGER offset, ULARGE_INTEGER cb, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD type) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->LockRegion(offset, cb, type); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::UnlockRegion(ULARGE_INTEGER offset, ULARGE_INTEGER cb, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DWORD type) { 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->UnlockRegion(offset, cb, type); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Stat(STATSTG* statstg, DWORD flag) { 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Stat(statstg, flag); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)STDMETHODIMP StreamImpl::Clone(IStream** stream) { 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HRESULT hr = E_NOTIMPL; 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (delegate_) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) hr = delegate_->Clone(stream); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return hr; 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 96