OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/drive/drive_app_registry.h" | 5 #include "chrome/browser/chromeos/drive/drive_app_registry.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
88 is_primary_selector(is_primary_selector) { | 88 is_primary_selector(is_primary_selector) { |
89 } | 89 } |
90 | 90 |
91 DriveAppRegistry::DriveAppFileSelector::~DriveAppFileSelector() { | 91 DriveAppRegistry::DriveAppFileSelector::~DriveAppFileSelector() { |
92 } | 92 } |
93 | 93 |
94 // DriveAppRegistry implementation. | 94 // DriveAppRegistry implementation. |
95 | 95 |
96 DriveAppRegistry::DriveAppRegistry(JobScheduler* scheduler) | 96 DriveAppRegistry::DriveAppRegistry(JobScheduler* scheduler) |
97 : scheduler_(scheduler), | 97 : scheduler_(scheduler), |
| 98 is_updating_(false), |
98 weak_ptr_factory_(this) { | 99 weak_ptr_factory_(this) { |
99 } | 100 } |
100 | 101 |
101 DriveAppRegistry::~DriveAppRegistry() { | 102 DriveAppRegistry::~DriveAppRegistry() { |
102 STLDeleteValues(&app_extension_map_); | 103 STLDeleteValues(&app_extension_map_); |
103 STLDeleteValues(&app_mimetypes_map_); | 104 STLDeleteValues(&app_mimetypes_map_); |
104 } | 105 } |
105 | 106 |
106 void DriveAppRegistry::GetAppsForFile( | 107 void DriveAppRegistry::GetAppsForFile( |
107 const base::FilePath& file_path, | 108 const base::FilePath& file_path, |
(...skipping 22 matching lines...) Expand all Loading... |
130 if (inserted_app_ids.find(it->second->app_id) == inserted_app_ids.end()) { | 131 if (inserted_app_ids.find(it->second->app_id) == inserted_app_ids.end()) { |
131 inserted_app_ids.insert(it->second->app_id); | 132 inserted_app_ids.insert(it->second->app_id); |
132 apps->push_back(it->second); | 133 apps->push_back(it->second); |
133 } | 134 } |
134 } | 135 } |
135 } | 136 } |
136 | 137 |
137 void DriveAppRegistry::Update() { | 138 void DriveAppRegistry::Update() { |
138 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 139 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
139 | 140 |
| 141 if (is_updating_) // There is already an update in progress. |
| 142 return; |
| 143 |
| 144 is_updating_ = true; |
| 145 |
140 scheduler_->GetAppList( | 146 scheduler_->GetAppList( |
141 base::Bind(&DriveAppRegistry::UpdateAfterGetAppList, | 147 base::Bind(&DriveAppRegistry::UpdateAfterGetAppList, |
142 weak_ptr_factory_.GetWeakPtr())); | 148 weak_ptr_factory_.GetWeakPtr())); |
143 } | 149 } |
144 | 150 |
145 void DriveAppRegistry::UpdateAfterGetAppList( | 151 void DriveAppRegistry::UpdateAfterGetAppList( |
146 google_apis::GDataErrorCode gdata_error, | 152 google_apis::GDataErrorCode gdata_error, |
147 scoped_ptr<google_apis::AppList> app_list) { | 153 scoped_ptr<google_apis::AppList> app_list) { |
148 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 154 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
149 | 155 |
| 156 DCHECK(is_updating_); |
| 157 is_updating_ = false; |
| 158 |
150 FileError error = GDataToFileError(gdata_error); | 159 FileError error = GDataToFileError(gdata_error); |
151 if (error != FILE_ERROR_OK) { | 160 if (error != FILE_ERROR_OK) { |
152 // Failed to fetch the data from the server. We can do nothing here. | 161 // Failed to fetch the data from the server. We can do nothing here. |
153 return; | 162 return; |
154 } | 163 } |
155 | 164 |
156 DCHECK(app_list); | 165 DCHECK(app_list); |
157 | 166 |
158 url_to_name_map_.clear(); | 167 url_to_name_map_.clear(); |
159 STLDeleteValues(&app_extension_map_); | 168 STLDeleteValues(&app_extension_map_); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 web_app->app_icons, | 275 web_app->app_icons, |
267 web_app->document_icons, | 276 web_app->document_icons, |
268 web_store_id, | 277 web_store_id, |
269 UTF8ToUTF16(product_iter->second), // app name. | 278 UTF8ToUTF16(product_iter->second), // app name. |
270 web_app->object_type, | 279 web_app->object_type, |
271 web_app->is_primary_selector))); | 280 web_app->is_primary_selector))); |
272 } | 281 } |
273 } | 282 } |
274 | 283 |
275 } // namespace drive | 284 } // namespace drive |
OLD | NEW |