1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/quota/open_file_handle.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/quota/open_file_handle_context.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "storage/browser/fileapi/quota/quota_reservation.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage { 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)OpenFileHandle::~OpenFileHandle() { 13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void OpenFileHandle::UpdateMaxWrittenOffset(int64 offset) { 17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int64 growth = context_->UpdateMaxWrittenOffset(offset); 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (growth > 0) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) reservation_->ConsumeReservation(growth); 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void OpenFileHandle::AddAppendModeWriteAmount(int64 amount) { 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (amount <= 0) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) context_->AddAppendModeWriteAmount(amount); 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) reservation_->ConsumeReservation(amount); 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int64 OpenFileHandle::GetEstimatedFileSize() const { 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return context_->GetEstimatedFileSize(); 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int64 OpenFileHandle::GetMaxWrittenOffset() const { 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return context_->GetMaxWrittenOffset(); 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const base::FilePath& OpenFileHandle::platform_path() const { 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return context_->platform_path(); 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)OpenFileHandle::OpenFileHandle(QuotaReservation* reservation, 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OpenFileHandleContext* context) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : reservation_(reservation), 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) context_(context) { 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DCHECK(sequence_checker_.CalledOnValidSequencedThread()); 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace storage 56