1// Copyright (c) 2012 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. 4 5#include "chrome/browser/chromeos/drive/test_util.h" 6 7#include <string> 8 9#include "base/message_loop/message_loop.h" 10#include "base/prefs/pref_registry_simple.h" 11#include "base/prefs/testing_pref_service.h" 12#include "base/run_loop.h" 13#include "base/threading/sequenced_worker_pool.h" 14#include "chrome/browser/chromeos/drive/drive.pb.h" 15#include "chrome/common/pref_names.h" 16#include "content/public/browser/browser_thread.h" 17 18namespace drive { 19 20namespace test_util { 21 22namespace { 23 24// This class is used to monitor if any task is posted to a message loop. 25class TaskObserver : public base::MessageLoop::TaskObserver { 26 public: 27 TaskObserver() : posted_(false) {} 28 virtual ~TaskObserver() {} 29 30 // MessageLoop::TaskObserver overrides. 31 virtual void WillProcessTask(const base::PendingTask& pending_task) OVERRIDE { 32 } 33 virtual void DidProcessTask(const base::PendingTask& pending_task) OVERRIDE { 34 posted_ = true; 35 } 36 37 // Returns true if any task was posted. 38 bool posted() const { return posted_; } 39 40 private: 41 bool posted_; 42 DISALLOW_COPY_AND_ASSIGN(TaskObserver); 43}; 44 45} // namespace 46 47void RunBlockingPoolTask() { 48 while (true) { 49 content::BrowserThread::GetBlockingPool()->FlushForTesting(); 50 51 TaskObserver task_observer; 52 base::MessageLoop::current()->AddTaskObserver(&task_observer); 53 base::RunLoop().RunUntilIdle(); 54 base::MessageLoop::current()->RemoveTaskObserver(&task_observer); 55 if (!task_observer.posted()) 56 break; 57 } 58} 59 60void RegisterDrivePrefs(PrefRegistrySimple* pref_registry) { 61 pref_registry->RegisterBooleanPref( 62 prefs::kDisableDrive, 63 false); 64 pref_registry->RegisterBooleanPref( 65 prefs::kDisableDriveOverCellular, 66 true); 67 pref_registry->RegisterBooleanPref( 68 prefs::kDisableDriveHostedFiles, 69 false); 70} 71 72FakeNetworkChangeNotifier::FakeNetworkChangeNotifier() 73 : type_(CONNECTION_WIFI) { 74} 75 76void FakeNetworkChangeNotifier::SetConnectionType(ConnectionType type) { 77 type_ = type; 78 NotifyObserversOfConnectionTypeChange(); 79} 80 81net::NetworkChangeNotifier::ConnectionType 82FakeNetworkChangeNotifier::GetCurrentConnectionType() const { 83 return type_; 84} 85 86} // namespace test_util 87} // namespace drive 88