OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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 "base/memory/ref_counted.h" | |
6 #include "base/utf_string_conversions.h" | |
7 #include "chrome/browser/chromeos/cros/mock_update_library.h" | |
8 #include "chrome/browser/chromeos/update_observer.h" | |
9 #include "chrome/browser/ui/browser.h" | |
10 #include "chrome/browser/ui/browser_list.h" | |
11 #include "chrome/common/url_constants.h" | |
12 #include "chrome/test/automation/dom_element_proxy.h" | |
13 #include "chrome/test/base/in_process_browser_test.h" | |
14 #include "chrome/test/base/ui_test_utils.h" | |
15 | |
16 using ::testing::AnyNumber; | |
17 using ::testing::InvokeWithoutArgs; | |
18 using ::testing::Return; | |
19 using ::testing::ReturnRef; | |
20 using ::testing::_; | |
21 using ::testing::Invoke; | |
22 using ::testing::Exactly; | |
23 | |
24 namespace { | |
25 | |
26 typedef ObserverList<chromeos::UpdateLibrary::Observer> Observers; | |
27 | |
28 void CallObservers(chromeos::MockUpdateLibrary* lib, | |
29 Observers* observers, | |
30 const chromeos::UpdateLibrary::Status& x) { | |
31 EXPECT_CALL(*lib, status()) | |
32 .Times(AnyNumber()) | |
33 .WillRepeatedly((ReturnRef(x))) | |
34 .RetiresOnSaturation(); | |
35 FOR_EACH_OBSERVER(chromeos::UpdateLibrary::Observer, *observers, | |
36 UpdateStatusChanged(lib)); | |
37 } | |
38 | |
39 void FireSuccessSequence(chromeos::MockUpdateLibrary* lib, | |
40 Observers* observer) { | |
41 chromeos::UpdateLibrary::Status status; | |
42 | |
43 status.status = chromeos::UPDATE_STATUS_IDLE; | |
44 CallObservers(lib, observer, status); | |
45 | |
46 status.status = chromeos::UPDATE_STATUS_CHECKING_FOR_UPDATE; | |
47 CallObservers(lib, observer, status); | |
48 | |
49 status.status = chromeos::UPDATE_STATUS_UPDATE_AVAILABLE; | |
50 CallObservers(lib, observer, status); | |
51 | |
52 status.status = chromeos::UPDATE_STATUS_DOWNLOADING; | |
53 status.download_progress = 10; | |
54 CallObservers(lib, observer, status); | |
55 | |
56 status.status = chromeos::UPDATE_STATUS_DOWNLOADING; | |
57 status.download_progress = 50; | |
58 CallObservers(lib, observer, status); | |
59 | |
60 status.status = chromeos::UPDATE_STATUS_DOWNLOADING; | |
61 status.download_progress = 90; | |
62 CallObservers(lib, observer, status); | |
63 | |
64 status.status = chromeos::UPDATE_STATUS_VERIFYING; | |
65 CallObservers(lib, observer, status); | |
66 | |
67 status.status = chromeos::UPDATE_STATUS_FINALIZING; | |
68 CallObservers(lib, observer, status); | |
69 | |
70 status.status = chromeos::UPDATE_STATUS_UPDATED_NEED_REBOOT; | |
71 CallObservers(lib, observer, status); | |
72 } | |
73 | |
74 void FireFailureSequence(chromeos::MockUpdateLibrary* lib, | |
75 Observers* observer) { | |
76 chromeos::UpdateLibrary::Status status; | |
77 | |
78 status.status = chromeos::UPDATE_STATUS_IDLE; | |
79 CallObservers(lib, observer, status); | |
80 | |
81 status.status = chromeos::UPDATE_STATUS_CHECKING_FOR_UPDATE; | |
82 CallObservers(lib, observer, status); | |
83 | |
84 status.status = chromeos::UPDATE_STATUS_UPDATE_AVAILABLE; | |
85 CallObservers(lib, observer, status); | |
86 | |
87 status.status = chromeos::UPDATE_STATUS_DOWNLOADING; | |
88 status.download_progress = 10; | |
89 CallObservers(lib, observer, status); | |
90 | |
91 status.status = chromeos::UPDATE_STATUS_ERROR; | |
92 status.download_progress = 10; | |
93 CallObservers(lib, observer, status); | |
94 } | |
95 | |
96 class UpdateBrowserTest : public InProcessBrowserTest { | |
97 public: | |
98 UpdateBrowserTest() {} | |
99 }; | |
100 | |
101 IN_PROC_BROWSER_TEST_F(UpdateBrowserTest, Notifications) { | |
102 scoped_ptr<chromeos::MockUpdateLibrary> lib( | |
103 new chromeos::MockUpdateLibrary()); | |
104 | |
105 Observers observers; | |
106 | |
107 EXPECT_CALL(*lib, AddObserver(_)) | |
108 .WillRepeatedly(Invoke(&observers, | |
109 &Observers::AddObserver)); | |
110 | |
111 chromeos::UpdateObserver* observe = | |
112 new chromeos::UpdateObserver(browser()->profile()); | |
113 lib->AddObserver(observe); | |
114 | |
115 FireSuccessSequence(lib.get(), &observers); | |
116 FireFailureSequence(lib.get(), &observers); | |
117 } | |
118 | |
119 } // namespace | |
OLD | NEW |