Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Side by Side Diff: goopdate/app_bundle_state.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « goopdate/app_bundle_state.h ('k') | goopdate/app_bundle_state_busy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2010 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 #include "omaha/goopdate/app_bundle_state.h"
17 #include "omaha/base/debug.h"
18 #include "omaha/base/error.h"
19 #include "omaha/base/logging.h"
20 #include "omaha/common/web_services_client.h"
21 #include "omaha/goopdate/app_bundle_state_busy.h"
22 #include "omaha/goopdate/model.h"
23
24 namespace omaha {
25
26 namespace fsm {
27
28 HRESULT AppBundleState::put_altTokens(AppBundle* app_bundle,
29 ULONG_PTR impersonation_token,
30 ULONG_PTR primary_token,
31 DWORD caller_proc_id) {
32 UNREFERENCED_PARAMETER(impersonation_token);
33 UNREFERENCED_PARAMETER(primary_token);
34 UNREFERENCED_PARAMETER(caller_proc_id);
35 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
36 }
37
38 HRESULT AppBundleState::put_sessionId(AppBundle* app_bundle, BSTR session_id) {
39 UNREFERENCED_PARAMETER(session_id);
40 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
41 }
42
43 HRESULT AppBundleState::Initialize(AppBundle* app_bundle) {
44 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
45 }
46
47 HRESULT AppBundleState::CreateApp(AppBundle* app_bundle,
48 const CString& app_id,
49 App** app) {
50 UNREFERENCED_PARAMETER(app_id);
51 UNREFERENCED_PARAMETER(app);
52 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
53 }
54
55 HRESULT AppBundleState::CreateInstalledApp(AppBundle* app_bundle,
56 const CString& app_id,
57 App** app) {
58 UNREFERENCED_PARAMETER(app_id);
59 UNREFERENCED_PARAMETER(app);
60 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
61 }
62
63 HRESULT AppBundleState::CreateAllInstalledApps(AppBundle* app_bundle) {
64 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
65 }
66
67 HRESULT AppBundleState::CheckForUpdate(AppBundle* app_bundle) {
68 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
69 }
70
71 HRESULT AppBundleState::Download(AppBundle* app_bundle) {
72 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
73 }
74
75 HRESULT AppBundleState::Install(AppBundle* app_bundle) {
76 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
77 }
78
79 HRESULT AppBundleState::UpdateAllApps(AppBundle* app_bundle) {
80 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
81 }
82
83 HRESULT AppBundleState::Stop(AppBundle* app_bundle) {
84 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
85 }
86
87 HRESULT AppBundleState::Pause(AppBundle* app_bundle) {
88 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
89 }
90
91 HRESULT AppBundleState::Resume(AppBundle* app_bundle) {
92 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
93 }
94
95 HRESULT AppBundleState::DownloadPackage(AppBundle* app_bundle,
96 const CString& app_id,
97 const CString& package_name) {
98 UNREFERENCED_PARAMETER(app_id);
99 UNREFERENCED_PARAMETER(package_name);
100 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
101 }
102
103 HRESULT AppBundleState::CompleteAsyncCall(AppBundle* app_bundle) {
104 return HandleInvalidStateTransition(app_bundle, _T(__FUNCTION__));
105 }
106
107 bool AppBundleState::IsBusy() const {
108 return false;
109 }
110
111 void AppBundleState::AddAppToBundle(AppBundle* app_bundle, App* app) {
112 ASSERT1(app_bundle);
113 ASSERT1(app_bundle->model()->IsLockedByCaller());
114 app_bundle->apps_.push_back(app);
115 }
116
117 bool AppBundleState::IsPendingNonBlockingCall(AppBundle* app_bundle) {
118 ASSERT1(app_bundle);
119 return app_bundle->is_pending_non_blocking_call();
120 }
121
122 HRESULT AppBundleState::DoDownloadPackage(AppBundle* app_bundle,
123 const CString& app_id,
124 const CString& package_name) {
125 CORE_LOG(L3, (_T("[AppBundleState::DoDownloadPackage][0x%p]"), app_bundle));
126 ASSERT1(app_bundle);
127 ASSERT1(app_bundle->model()->IsLockedByCaller());
128 ASSERT1(!IsPendingNonBlockingCall(app_bundle));
129
130 GUID app_guid = {0};
131 HRESULT hr = StringToGuidSafe(app_id, &app_guid);
132 if (FAILED(hr)) {
133 return hr;
134 }
135
136 App* app = NULL;
137 for (size_t i = 0; i != app_bundle->GetNumberOfApps(); ++i) {
138 App* candidate_app = app_bundle->GetApp(i);
139 if (::IsEqualGUID(candidate_app->app_guid(), app_guid)) {
140 app = candidate_app;
141 break;
142 }
143 }
144
145 if (!app) {
146 return E_INVALIDARG;
147 }
148
149 // Only packages of installed applications can be downloaded.
150 Package* package = NULL;
151 AppVersion* version = app->current_version();
152 for (size_t i = 0; i != version->GetNumberOfPackages(); ++i) {
153 if (version->GetPackage(i)->filename() == package_name) {
154 package = version->GetPackage(i);
155 break;
156 }
157 }
158
159 if (!package) {
160 return E_INVALIDARG;
161 }
162
163 hr = app_bundle->model()->DownloadPackage(package);
164 if (FAILED(hr)) {
165 CORE_LOG(LE, (_T("[DownloadPackage failed][0x%x][0x%p]"), hr, app_bundle));
166 return hr;
167 }
168
169 ChangeState(app_bundle, new AppBundleStateBusy);
170 return S_OK;
171 }
172
173 void AppBundleState::ChangeState(AppBundle* app_bundle, AppBundleState* state) {
174 ASSERT1(app_bundle);
175 ASSERT1(state);
176 ASSERT1(app_bundle->model()->IsLockedByCaller());
177 CORE_LOG(L3, (_T("[AppBundleState::ChangeState][0x%p][from: %u][to: %u]"),
178 app_bundle, state_, state->state_));
179
180 app_bundle->ChangeState(state);
181 }
182
183 HRESULT AppBundleState::HandleInvalidStateTransition(
184 AppBundle* app_bundle,
185 const TCHAR* function_name) {
186 UNREFERENCED_PARAMETER(app_bundle);
187 UNREFERENCED_PARAMETER(function_name);
188 ASSERT1(app_bundle);
189 ASSERT1(app_bundle->model()->IsLockedByCaller());
190 CORE_LOG(LE, (_T("[Invalid state transition][%s called while in %u]"),
191 function_name, state_));
192 return GOOPDATE_E_CALL_UNEXPECTED;
193 }
194
195 } // namespace fsm
196
197 } // namespace omaha
OLDNEW
« no previous file with comments | « goopdate/app_bundle_state.h ('k') | goopdate/app_bundle_state_busy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698