• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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