1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "extensions/browser/mojo/stash_backend.h"
9 // An implementation of StashService that forwards calls to a StashBackend.
10 class StashServiceImpl
: public mojo::InterfaceImpl
<StashService
> {
12 explicit StashServiceImpl(base::WeakPtr
<StashBackend
> backend
);
13 ~StashServiceImpl() override
;
15 // mojo::InterfaceImpl<StashService> overrides.
16 void AddToStash(mojo::Array
<StashedObjectPtr
> stash
) override
;
18 const mojo::Callback
<void(mojo::Array
<StashedObjectPtr
> stash
)>& callback
)
22 base::WeakPtr
<StashBackend
> backend_
;
24 DISALLOW_COPY_AND_ASSIGN(StashServiceImpl
);
27 StashBackend::StashBackend() : weak_factory_(this) {
30 StashBackend::~StashBackend() {
33 void StashBackend::AddToStash(mojo::Array
<StashedObjectPtr
> stashed_objects
) {
34 for (size_t i
= 0; i
< stashed_objects
.size(); i
++) {
35 stashed_objects_
.push_back(stashed_objects
[i
].Pass());
39 mojo::Array
<StashedObjectPtr
> StashBackend::RetrieveStash() {
40 if (stashed_objects_
.is_null())
41 stashed_objects_
.resize(0);
42 return stashed_objects_
.Pass();
45 void StashBackend::BindToRequest(mojo::InterfaceRequest
<StashService
> request
) {
46 mojo::BindToRequest(new StashServiceImpl(weak_factory_
.GetWeakPtr()),
50 StashServiceImpl::StashServiceImpl(base::WeakPtr
<StashBackend
> backend
)
54 StashServiceImpl::~StashServiceImpl() {
57 void StashServiceImpl::AddToStash(
58 mojo::Array
<StashedObjectPtr
> stashed_objects
) {
61 backend_
->AddToStash(stashed_objects
.Pass());
64 void StashServiceImpl::RetrieveStash(
65 const mojo::Callback
<void(mojo::Array
<StashedObjectPtr
>)>& callback
) {
67 callback
.Run(mojo::Array
<StashedObjectPtr
>(0));
70 callback
.Run(backend_
->RetrieveStash());
73 } // namespace extensions