15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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)
56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/browsing_data/mock_browsing_data_file_system_helper.h"
66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockBrowsingDataFileSystemHelper::MockBrowsingDataFileSystemHelper(
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Profile* profile) {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockBrowsingDataFileSystemHelper::~MockBrowsingDataFileSystemHelper() {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::StartFetching(
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const base::Callback<void(const std::list<FileSystemInfo>&)>& callback) {
206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ASSERT_FALSE(callback.is_null());
216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ASSERT_TRUE(callback_.is_null());
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback_ = callback;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::DeleteFileSystemOrigin(
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const GURL& origin) {
276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ASSERT_FALSE(callback_.is_null());
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key = origin.spec();
296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  ASSERT_TRUE(file_systems_.find(key) != file_systems_.end());
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  last_deleted_origin_ = origin;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  file_systems_[key] = false;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::AddFileSystem(
35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    const GURL& origin, bool has_persistent, bool has_temporary,
36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    bool has_syncable) {
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  BrowsingDataFileSystemHelper::FileSystemInfo info(origin);
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (has_persistent)
3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    info.usage_map[storage::kFileSystemTypePersistent] = 0;
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (has_temporary)
4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    info.usage_map[storage::kFileSystemTypeTemporary] = 0;
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  if (has_syncable)
4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    info.usage_map[storage::kFileSystemTypeSyncable] = 0;
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  response_.push_back(info);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  file_systems_[origin.spec()] = true;
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::AddFileSystemSamples() {
49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  AddFileSystem(GURL("http://fshost1:1/"), false, true, false);
50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  AddFileSystem(GURL("http://fshost2:2/"), true, false, true);
51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  AddFileSystem(GURL("http://fshost3:3/"), true, true, true);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::Notify() {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  callback_.Run(response_);
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockBrowsingDataFileSystemHelper::Reset() {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (std::map<const std::string, bool>::iterator i = file_systems_.begin();
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       i != file_systems_.end(); ++i)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    i->second = true;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MockBrowsingDataFileSystemHelper::AllDeleted() {
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (std::map<const std::string, bool>::const_iterator i =
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            file_systems_.begin();
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       i != file_systems_.end(); ++i) {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (i->second)
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return false;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
73