1 // Copyright 2013 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 #ifndef CHROME_BROWSER_PROFILE_RESETTER_PROFILE_RESETTER_TEST_BASE_H_ 6 #define CHROME_BROWSER_PROFILE_RESETTER_PROFILE_RESETTER_TEST_BASE_H_ 7 8 #include "chrome/browser/profile_resetter/profile_resetter.h" 9 #include "content/public/test/test_utils.h" 10 #include "testing/gmock/include/gmock/gmock.h" 11 12 // The ProfileResetterMockObject is used to block the thread until 13 // ProfileResetter::Reset has completed: 14 15 // ProfileResetterMockObject mock_object; 16 // resetter_->Reset(ProfileResetter::ALL, 17 // pointer, 18 // base::Bind(&ProfileResetterMockObject::StopLoop, 19 // base::Unretained(&mock_object))); 20 // mock_object.RunLoop(); 21 class ProfileResetterMockObject { 22 public: 23 ProfileResetterMockObject(); 24 ~ProfileResetterMockObject(); 25 26 void RunLoop(); 27 void StopLoop(); 28 29 private: 30 MOCK_METHOD0(Callback, void(void)); 31 32 scoped_refptr<content::MessageLoopRunner> runner_; 33 34 DISALLOW_COPY_AND_ASSIGN(ProfileResetterMockObject); 35 }; 36 37 // Base class for all ProfileResetter unit tests. 38 class ProfileResetterTestBase { 39 public: 40 ProfileResetterTestBase(); 41 ~ProfileResetterTestBase(); 42 43 void ResetAndWait(ProfileResetter::ResettableFlags resettable_flags); 44 void ResetAndWait(ProfileResetter::ResettableFlags resettable_flags, 45 const std::string& prefs); 46 protected: 47 testing::StrictMock<ProfileResetterMockObject> mock_object_; 48 scoped_ptr<ProfileResetter> resetter_; 49 50 private: 51 DISALLOW_COPY_AND_ASSIGN(ProfileResetterTestBase); 52 }; 53 54 #endif // CHROME_BROWSER_PROFILE_RESETTER_PROFILE_RESETTER_TEST_BASE_H_ 55