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

Side by Side Diff: google_apis/drive/drive_api_parser.h

Issue 2613223002: Remove ScopedVector from base::JSONValueConverter (Closed)
Patch Set: Add a TODO Created 3 years, 11 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
OLDNEW
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 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_ 5 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_
6 #define GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_ 6 #define GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
11 #include <string> 11 #include <string>
12 #include <utility> 12 #include <utility>
13 #include <vector>
13 14
14 #include "base/compiler_specific.h" 15 #include "base/compiler_specific.h"
15 #include "base/gtest_prod_util.h" 16 #include "base/gtest_prod_util.h"
16 #include "base/macros.h" 17 #include "base/macros.h"
17 #include "base/memory/scoped_vector.h" 18 #include "base/memory/scoped_vector.h"
hidehiko 2017/01/10 06:44:36 Could you remove?
leonhsl(Using Gerrit) 2017/01/10 09:48:13 Done. And added '#include "base/memory/scoped_vect
18 #include "base/strings/string_piece.h" 19 #include "base/strings/string_piece.h"
19 #include "base/time/time.h" 20 #include "base/time/time.h"
20 #include "url/gurl.h" 21 #include "url/gurl.h"
21 22
22 namespace base { 23 namespace base {
23 class Value; 24 class Value;
24 template <class StructType> 25 template <class StructType>
25 class JSONValueConverter; 26 class JSONValueConverter;
26 27
27 namespace internal { 28 namespace internal {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 183
183 // Returns whether this application is removable by apps.delete API. 184 // Returns whether this application is removable by apps.delete API.
184 bool is_removable() const { return removable_; } 185 bool is_removable() const { return removable_; }
185 186
186 // Returns the create URL, i.e., the URL for opening a new file by the app. 187 // Returns the create URL, i.e., the URL for opening a new file by the app.
187 const GURL& create_url() const { return create_url_; } 188 const GURL& create_url() const { return create_url_; }
188 189
189 // List of primary mime types supported by this WebApp. Primary status should 190 // List of primary mime types supported by this WebApp. Primary status should
190 // trigger this WebApp becoming the default handler of file instances that 191 // trigger this WebApp becoming the default handler of file instances that
191 // have these mime types. 192 // have these mime types.
192 const ScopedVector<std::string>& primary_mimetypes() const { 193 const std::vector<std::unique_ptr<std::string>>& primary_mimetypes() const {
193 return primary_mimetypes_; 194 return primary_mimetypes_;
194 } 195 }
195 196
196 // List of secondary mime types supported by this WebApp. Secondary status 197 // List of secondary mime types supported by this WebApp. Secondary status
197 // should make this WebApp show up in "Open with..." pop-up menu of the 198 // should make this WebApp show up in "Open with..." pop-up menu of the
198 // default action menu for file with matching mime types. 199 // default action menu for file with matching mime types.
199 const ScopedVector<std::string>& secondary_mimetypes() const { 200 const std::vector<std::unique_ptr<std::string>>& secondary_mimetypes() const {
200 return secondary_mimetypes_; 201 return secondary_mimetypes_;
201 } 202 }
202 203
203 // List of primary file extensions supported by this WebApp. Primary status 204 // List of primary file extensions supported by this WebApp. Primary status
204 // should trigger this WebApp becoming the default handler of file instances 205 // should trigger this WebApp becoming the default handler of file instances
205 // that match these extensions. 206 // that match these extensions.
206 const ScopedVector<std::string>& primary_file_extensions() const { 207 const std::vector<std::unique_ptr<std::string>>& primary_file_extensions()
208 const {
207 return primary_file_extensions_; 209 return primary_file_extensions_;
208 } 210 }
209 211
210 // List of secondary file extensions supported by this WebApp. Secondary 212 // List of secondary file extensions supported by this WebApp. Secondary
211 // status should make this WebApp show up in "Open with..." pop-up menu of the 213 // status should make this WebApp show up in "Open with..." pop-up menu of the
212 // default action menu for file with matching extensions. 214 // default action menu for file with matching extensions.
213 const ScopedVector<std::string>& secondary_file_extensions() const { 215 const std::vector<std::unique_ptr<std::string>>& secondary_file_extensions()
216 const {
214 return secondary_file_extensions_; 217 return secondary_file_extensions_;
215 } 218 }
216 219
217 // Returns Icons for this application. An application can have multiple 220 // Returns Icons for this application. An application can have multiple
218 // icons for different purpose (application, document, shared document) 221 // icons for different purpose (application, document, shared document)
219 // in several sizes. 222 // in several sizes.
220 const ScopedVector<DriveAppIcon>& icons() const { 223 const std::vector<std::unique_ptr<DriveAppIcon>>& icons() const {
221 return icons_; 224 return icons_;
222 } 225 }
223 226
224 void set_application_id(const std::string& application_id) { 227 void set_application_id(const std::string& application_id) {
225 application_id_ = application_id; 228 application_id_ = application_id;
226 } 229 }
227 void set_name(const std::string& name) { name_ = name; } 230 void set_name(const std::string& name) { name_ = name; }
228 void set_object_type(const std::string& object_type) { 231 void set_object_type(const std::string& object_type) {
229 object_type_ = object_type; 232 object_type_ = object_type;
230 } 233 }
231 void set_product_id(const std::string& id) { product_id_ = id; } 234 void set_product_id(const std::string& id) { product_id_ = id; }
232 void set_supports_create(bool supports_create) { 235 void set_supports_create(bool supports_create) {
233 supports_create_ = supports_create; 236 supports_create_ = supports_create;
234 } 237 }
235 void set_removable(bool removable) { removable_ = removable; } 238 void set_removable(bool removable) { removable_ = removable; }
236 void set_primary_mimetypes( 239 void set_primary_mimetypes(
237 ScopedVector<std::string> primary_mimetypes) { 240 std::vector<std::unique_ptr<std::string>> primary_mimetypes) {
238 primary_mimetypes_ = std::move(primary_mimetypes); 241 primary_mimetypes_ = std::move(primary_mimetypes);
239 } 242 }
240 void set_secondary_mimetypes( 243 void set_secondary_mimetypes(
241 ScopedVector<std::string> secondary_mimetypes) { 244 std::vector<std::unique_ptr<std::string>> secondary_mimetypes) {
242 secondary_mimetypes_ = std::move(secondary_mimetypes); 245 secondary_mimetypes_ = std::move(secondary_mimetypes);
243 } 246 }
244 void set_primary_file_extensions( 247 void set_primary_file_extensions(
245 ScopedVector<std::string> primary_file_extensions) { 248 std::vector<std::unique_ptr<std::string>> primary_file_extensions) {
246 primary_file_extensions_ = std::move(primary_file_extensions); 249 primary_file_extensions_ = std::move(primary_file_extensions);
247 } 250 }
248 void set_secondary_file_extensions( 251 void set_secondary_file_extensions(
249 ScopedVector<std::string> secondary_file_extensions) { 252 std::vector<std::unique_ptr<std::string>> secondary_file_extensions) {
250 secondary_file_extensions_ = std::move(secondary_file_extensions); 253 secondary_file_extensions_ = std::move(secondary_file_extensions);
251 } 254 }
252 void set_icons(ScopedVector<DriveAppIcon> icons) { 255 void set_icons(std::vector<std::unique_ptr<DriveAppIcon>> icons) {
253 icons_ = std::move(icons); 256 icons_ = std::move(icons);
254 } 257 }
255 void set_create_url(const GURL& url) { 258 void set_create_url(const GURL& url) {
256 create_url_ = url; 259 create_url_ = url;
257 } 260 }
258 261
259 private: 262 private:
260 friend class base::internal::RepeatedMessageConverter<AppResource>; 263 friend class base::internal::RepeatedMessageConverter<AppResource>;
261 friend class AppList; 264 friend class AppList;
262 265
263 // Parses and initializes data members from content of |value|. 266 // Parses and initializes data members from content of |value|.
264 // Return false if parsing fails. 267 // Return false if parsing fails.
265 bool Parse(const base::Value& value); 268 bool Parse(const base::Value& value);
266 269
267 std::string application_id_; 270 std::string application_id_;
268 std::string name_; 271 std::string name_;
269 std::string object_type_; 272 std::string object_type_;
270 std::string product_id_; 273 std::string product_id_;
271 bool supports_create_; 274 bool supports_create_;
272 bool removable_; 275 bool removable_;
273 GURL create_url_; 276 GURL create_url_;
274 ScopedVector<std::string> primary_mimetypes_; 277 std::vector<std::unique_ptr<std::string>> primary_mimetypes_;
275 ScopedVector<std::string> secondary_mimetypes_; 278 std::vector<std::unique_ptr<std::string>> secondary_mimetypes_;
276 ScopedVector<std::string> primary_file_extensions_; 279 std::vector<std::unique_ptr<std::string>> primary_file_extensions_;
277 ScopedVector<std::string> secondary_file_extensions_; 280 std::vector<std::unique_ptr<std::string>> secondary_file_extensions_;
278 ScopedVector<DriveAppIcon> icons_; 281 std::vector<std::unique_ptr<DriveAppIcon>> icons_;
279 282
280 DISALLOW_COPY_AND_ASSIGN(AppResource); 283 DISALLOW_COPY_AND_ASSIGN(AppResource);
281 }; 284 };
282 285
283 // AppList represents a list of Drive Applications. 286 // AppList represents a list of Drive Applications.
284 // https://developers.google.com/drive/v2/reference/apps/list 287 // https://developers.google.com/drive/v2/reference/apps/list
285 class AppList { 288 class AppList {
286 public: 289 public:
287 AppList(); 290 AppList();
288 ~AppList(); 291 ~AppList();
289 292
290 // Registers the mapping between JSON field names and the members in this 293 // Registers the mapping between JSON field names and the members in this
291 // class. 294 // class.
292 static void RegisterJSONConverter( 295 static void RegisterJSONConverter(
293 base::JSONValueConverter<AppList>* converter); 296 base::JSONValueConverter<AppList>* converter);
294 297
295 // Creates app list from parsed JSON. 298 // Creates app list from parsed JSON.
296 static std::unique_ptr<AppList> CreateFrom(const base::Value& value); 299 static std::unique_ptr<AppList> CreateFrom(const base::Value& value);
297 300
298 // ETag for this resource. 301 // ETag for this resource.
299 const std::string& etag() const { return etag_; } 302 const std::string& etag() const { return etag_; }
300 303
301 // Returns a vector of applications. 304 // Returns a vector of applications.
302 const ScopedVector<AppResource>& items() const { return items_; } 305 const std::vector<std::unique_ptr<AppResource>>& items() const {
306 return items_;
307 }
303 308
304 void set_etag(const std::string& etag) { 309 void set_etag(const std::string& etag) {
305 etag_ = etag; 310 etag_ = etag;
306 } 311 }
307 void set_items(ScopedVector<AppResource> items) { items_ = std::move(items); } 312 void set_items(std::vector<std::unique_ptr<AppResource>> items) {
313 items_ = std::move(items);
314 }
308 315
309 private: 316 private:
310 friend class DriveAPIParserTest; 317 friend class DriveAPIParserTest;
311 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, AppListParser); 318 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, AppListParser);
312 319
313 // Parses and initializes data members from content of |value|. 320 // Parses and initializes data members from content of |value|.
314 // Return false if parsing fails. 321 // Return false if parsing fails.
315 bool Parse(const base::Value& value); 322 bool Parse(const base::Value& value);
316 323
317 std::string etag_; 324 std::string etag_;
318 ScopedVector<AppResource> items_; 325 std::vector<std::unique_ptr<AppResource>> items_;
319 326
320 DISALLOW_COPY_AND_ASSIGN(AppList); 327 DISALLOW_COPY_AND_ASSIGN(AppList);
321 }; 328 };
322 329
323 // ParentReference represents a directory. 330 // ParentReference represents a directory.
324 // https://developers.google.com/drive/v2/reference/parents 331 // https://developers.google.com/drive/v2/reference/parents
325 class ParentReference { 332 class ParentReference {
326 public: 333 public:
327 ParentReference(); 334 ParentReference();
328 ~ParentReference(); 335 ~ParentReference();
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 static bool HasFileListKind(const base::Value& value); 613 static bool HasFileListKind(const base::Value& value);
607 614
608 // Creates file list from parsed JSON. 615 // Creates file list from parsed JSON.
609 static std::unique_ptr<FileList> CreateFrom(const base::Value& value); 616 static std::unique_ptr<FileList> CreateFrom(const base::Value& value);
610 617
611 // Returns a link to the next page of files. The URL includes the next page 618 // Returns a link to the next page of files. The URL includes the next page
612 // token. 619 // token.
613 const GURL& next_link() const { return next_link_; } 620 const GURL& next_link() const { return next_link_; }
614 621
615 // Returns a set of files in this list. 622 // Returns a set of files in this list.
616 const ScopedVector<FileResource>& items() const { return items_; } 623 const std::vector<std::unique_ptr<FileResource>>& items() const {
617 ScopedVector<FileResource>* mutable_items() { return &items_; } 624 return items_;
625 }
626 std::vector<std::unique_ptr<FileResource>>* mutable_items() {
627 return &items_;
628 }
618 629
619 void set_next_link(const GURL& next_link) { 630 void set_next_link(const GURL& next_link) {
620 next_link_ = next_link; 631 next_link_ = next_link;
621 } 632 }
622 633
623 private: 634 private:
624 friend class DriveAPIParserTest; 635 friend class DriveAPIParserTest;
625 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, FileListParser); 636 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, FileListParser);
626 637
627 // Parses and initializes data members from content of |value|. 638 // Parses and initializes data members from content of |value|.
628 // Return false if parsing fails. 639 // Return false if parsing fails.
629 bool Parse(const base::Value& value); 640 bool Parse(const base::Value& value);
630 641
631 GURL next_link_; 642 GURL next_link_;
632 ScopedVector<FileResource> items_; 643 std::vector<std::unique_ptr<FileResource>> items_;
633 644
634 DISALLOW_COPY_AND_ASSIGN(FileList); 645 DISALLOW_COPY_AND_ASSIGN(FileList);
635 }; 646 };
636 647
637 // ChangeResource represents a change in a file. 648 // ChangeResource represents a change in a file.
638 // https://developers.google.com/drive/v2/reference/changes 649 // https://developers.google.com/drive/v2/reference/changes
639 class ChangeResource { 650 class ChangeResource {
640 public: 651 public:
641 ChangeResource(); 652 ChangeResource();
642 ~ChangeResource(); 653 ~ChangeResource();
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 static std::unique_ptr<ChangeList> CreateFrom(const base::Value& value); 725 static std::unique_ptr<ChangeList> CreateFrom(const base::Value& value);
715 726
716 // Returns a link to the next page of files. The URL includes the next page 727 // Returns a link to the next page of files. The URL includes the next page
717 // token. 728 // token.
718 const GURL& next_link() const { return next_link_; } 729 const GURL& next_link() const { return next_link_; }
719 730
720 // Returns the largest change ID number. 731 // Returns the largest change ID number.
721 int64_t largest_change_id() const { return largest_change_id_; } 732 int64_t largest_change_id() const { return largest_change_id_; }
722 733
723 // Returns a set of changes in this list. 734 // Returns a set of changes in this list.
724 const ScopedVector<ChangeResource>& items() const { return items_; } 735 const std::vector<std::unique_ptr<ChangeResource>>& items() const {
725 ScopedVector<ChangeResource>* mutable_items() { return &items_; } 736 return items_;
737 }
738 std::vector<std::unique_ptr<ChangeResource>>* mutable_items() {
739 return &items_;
740 }
726 741
727 void set_next_link(const GURL& next_link) { 742 void set_next_link(const GURL& next_link) {
728 next_link_ = next_link; 743 next_link_ = next_link;
729 } 744 }
730 void set_largest_change_id(int64_t largest_change_id) { 745 void set_largest_change_id(int64_t largest_change_id) {
731 largest_change_id_ = largest_change_id; 746 largest_change_id_ = largest_change_id;
732 } 747 }
733 748
734 private: 749 private:
735 friend class DriveAPIParserTest; 750 friend class DriveAPIParserTest;
736 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, ChangeListParser); 751 FRIEND_TEST_ALL_PREFIXES(DriveAPIParserTest, ChangeListParser);
737 752
738 // Parses and initializes data members from content of |value|. 753 // Parses and initializes data members from content of |value|.
739 // Return false if parsing fails. 754 // Return false if parsing fails.
740 bool Parse(const base::Value& value); 755 bool Parse(const base::Value& value);
741 756
742 GURL next_link_; 757 GURL next_link_;
743 int64_t largest_change_id_; 758 int64_t largest_change_id_;
744 ScopedVector<ChangeResource> items_; 759 std::vector<std::unique_ptr<ChangeResource>> items_;
745 760
746 DISALLOW_COPY_AND_ASSIGN(ChangeList); 761 DISALLOW_COPY_AND_ASSIGN(ChangeList);
747 }; 762 };
748 763
749 } // namespace google_apis 764 } // namespace google_apis
750 765
751 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_ 766 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_PARSER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698