15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef SYNC_API_ATTACHMENTS_FAKE_ATTACHMENT_STORE_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define SYNC_API_ATTACHMENTS_FAKE_ATTACHMENT_STORE_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <map> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/ref_counted.h" 115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/stl_util.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "sync/api/attachments/attachment_store.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "sync/base/sync_export.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace base { 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SequencedTaskRunner; 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SingleThreadTaskRunner; 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace base 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace sync_pb { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class AttachmentId; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace sync_pb 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace syncer { 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class Attachment; 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// A in-memory only implementation of AttachmentStore used for testing. 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Requires that the current thread has a MessageLoop. 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class SYNC_EXPORT FakeAttachmentStore : public AttachmentStore { 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Construct a FakeAttachmentStore whose "IO" will be performed in 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // |backend_task_runner|. 36e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch explicit FakeAttachmentStore( 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const scoped_refptr<base::SequencedTaskRunner>& backend_task_runner); 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // AttachmentStore implementation. 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void Read(const AttachmentIdList& id, 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const ReadCallback& callback) OVERRIDE; 420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void Write(const AttachmentList& attachments, 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const WriteCallback& callback) OVERRIDE; 440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void Drop(const AttachmentIdList& id, 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const DropCallback& callback) OVERRIDE; 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) class Backend; 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~FakeAttachmentStore(); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<Backend> backend_; 535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) scoped_refptr<base::SequencedTaskRunner> backend_task_runner_; 545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 555d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(FakeAttachmentStore); 565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 585d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace syncer 595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // SYNC_API_ATTACHMENTS_FAKE_ATTACHMENT_STORE_H_ 61