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

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

Issue 384543004: Get rid of DriveEntryKind. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed some temporary variables and IsHostedDocumentByFileExtension(). Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « google_apis/drive/drive_entry_kinds.h ('k') | google_apis/drive/gdata_wapi_parser.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_GDATA_WAPI_PARSER_H_ 5 #ifndef GOOGLE_APIS_DRIVE_GDATA_WAPI_PARSER_H_
6 #define GOOGLE_APIS_DRIVE_GDATA_WAPI_PARSER_H_ 6 #define GOOGLE_APIS_DRIVE_GDATA_WAPI_PARSER_H_
7 7
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/memory/scoped_vector.h" 14 #include "base/memory/scoped_vector.h"
15 #include "base/strings/string_piece.h" 15 #include "base/strings/string_piece.h"
16 #include "base/time/time.h" 16 #include "base/time/time.h"
17 #include "google_apis/drive/drive_entry_kinds.h"
18 #include "url/gurl.h" 17 #include "url/gurl.h"
19 18
20 namespace base { 19 namespace base {
21 class FilePath; 20 class FilePath;
22 class DictionaryValue; 21 class DictionaryValue;
23 class Value; 22 class Value;
24 23
25 template <class StructType> 24 template <class StructType>
26 class JSONValueConverter; 25 class JSONValueConverter;
27 26
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 ScopedVector<Category> categories_; 304 ScopedVector<Category> categories_;
306 base::Time updated_time_; 305 base::Time updated_time_;
307 306
308 DISALLOW_COPY_AND_ASSIGN(CommonMetadata); 307 DISALLOW_COPY_AND_ASSIGN(CommonMetadata);
309 }; 308 };
310 309
311 // This class represents a resource entry. A resource is a generic term which 310 // This class represents a resource entry. A resource is a generic term which
312 // refers to a file and a directory. 311 // refers to a file and a directory.
313 class ResourceEntry : public CommonMetadata { 312 class ResourceEntry : public CommonMetadata {
314 public: 313 public:
314 enum ResourceEntryKind {
315 ENTRY_KIND_UNKNOWN,
316 ENTRY_KIND_FOLDER,
317 ENTRY_KIND_FILE
318 };
315 ResourceEntry(); 319 ResourceEntry();
316 virtual ~ResourceEntry(); 320 virtual ~ResourceEntry();
317 321
318 // Extracts "entry" dictionary from the JSON value, and parse the contents, 322 // Extracts "entry" dictionary from the JSON value, and parse the contents,
319 // using CreateFrom(). Returns NULL on failure. The input JSON data, coming 323 // using CreateFrom(). Returns NULL on failure. The input JSON data, coming
320 // from the gdata server, looks like: 324 // from the gdata server, looks like:
321 // 325 //
322 // { 326 // {
323 // "encoding": "UTF-8", 327 // "encoding": "UTF-8",
324 // "entry": { ... }, // This function will extract this and parse. 328 // "entry": { ... }, // This function will extract this and parse.
(...skipping 28 matching lines...) Expand all
353 357
354 // The resource ID is used to identify a resource, which looks like: 358 // The resource ID is used to identify a resource, which looks like:
355 // file:d41d8cd98f00b204e9800998ecf8 359 // file:d41d8cd98f00b204e9800998ecf8
356 const std::string& resource_id() const { return resource_id_; } 360 const std::string& resource_id() const { return resource_id_; }
357 361
358 // This is a URL looks like: 362 // This is a URL looks like:
359 // https://docs.google.com/feeds/id/file%3Ad41d8cd98f00b204e9800998ecf8. 363 // https://docs.google.com/feeds/id/file%3Ad41d8cd98f00b204e9800998ecf8.
360 // The URL is currently not used. 364 // The URL is currently not used.
361 const std::string& id() const { return id_; } 365 const std::string& id() const { return id_; }
362 366
363 DriveEntryKind kind() const { return kind_; } 367 ResourceEntryKind kind() const { return kind_; }
364 const std::string& title() const { return title_; } 368 const std::string& title() const { return title_; }
365 base::Time published_time() const { return published_time_; } 369 base::Time published_time() const { return published_time_; }
366 base::Time last_viewed_time() const { return last_viewed_time_; } 370 base::Time last_viewed_time() const { return last_viewed_time_; }
367 const std::vector<std::string>& labels() const { return labels_; } 371 const std::vector<std::string>& labels() const { return labels_; }
368 372
369 // The URL to download a file content. 373 // The URL to download a file content.
370 // Search for 'download_url' in gdata_wapi_requests.h for details. 374 // Search for 'download_url' in gdata_wapi_requests.h for details.
371 const GURL& download_url() const { return content_.url(); } 375 const GURL& download_url() const { return content_.url(); }
372 376
373 const std::string& content_mime_type() const { return content_.mime_type(); } 377 const std::string& content_mime_type() const { return content_.mime_type(); }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 int64 image_rotation() const { return image_rotation_; } 415 int64 image_rotation() const { return image_rotation_; }
412 416
413 // The time of this modification. 417 // The time of this modification.
414 // Note: This property is filled only when converted from ChangeResource. 418 // Note: This property is filled only when converted from ChangeResource.
415 const base::Time& modification_date() const { return modification_date_; } 419 const base::Time& modification_date() const { return modification_date_; }
416 420
417 // Text version of resource entry kind. Returns an empty string for 421 // Text version of resource entry kind. Returns an empty string for
418 // unknown entry kind. 422 // unknown entry kind.
419 std::string GetEntryKindText() const; 423 std::string GetEntryKindText() const;
420 424
421 // Returns preferred file extension for hosted documents. If entry is not
422 // a hosted document, this call returns an empty string.
423 static std::string GetHostedDocumentExtension(DriveEntryKind kind);
424
425 // True if resource entry is remotely hosted.
426 bool is_hosted_document() const {
427 return (ClassifyEntryKind(kind_) & KIND_OF_HOSTED_DOCUMENT) > 0;
428 }
429 // True if resource entry hosted by Google Documents.
430 bool is_google_document() const {
431 return (ClassifyEntryKind(kind_) & KIND_OF_GOOGLE_DOCUMENT) > 0;
432 }
433 // True if resource entry is hosted by an external application.
434 bool is_external_document() const {
435 return (ClassifyEntryKind(kind_) & KIND_OF_EXTERNAL_DOCUMENT) > 0;
436 }
437 // True if resource entry is a folder (collection). 425 // True if resource entry is a folder (collection).
438 bool is_folder() const { 426 bool is_folder() const {
439 return (ClassifyEntryKind(kind_) & KIND_OF_FOLDER) > 0; 427 return kind_ == ENTRY_KIND_FOLDER;
440 } 428 }
441 // True if resource entry is regular file. 429 // True if resource entry is regular file.
442 bool is_file() const { 430 bool is_file() const {
443 return (ClassifyEntryKind(kind_) & KIND_OF_FILE) > 0; 431 return kind_ == ENTRY_KIND_FILE;
444 } 432 }
445 // True if resource entry can't be mapped to the file system.
446 bool is_special() const {
447 return !is_file() && !is_folder() && !is_hosted_document();
448 }
449
450 // The following constructs are exposed for unit tests.
451
452 // Classes of EntryKind. Used for ClassifyEntryKind().
453 enum EntryKindClass {
454 KIND_OF_NONE = 0,
455 KIND_OF_HOSTED_DOCUMENT = 1,
456 KIND_OF_GOOGLE_DOCUMENT = 1 << 1,
457 KIND_OF_EXTERNAL_DOCUMENT = 1 << 2,
458 KIND_OF_FOLDER = 1 << 3,
459 KIND_OF_FILE = 1 << 4,
460 };
461
462 // Returns the kind enum corresponding to the extension in form ".xxx".
463 static DriveEntryKind GetEntryKindFromExtension(const std::string& extension);
464
465 // Classifies the EntryKind. The returned value is a bitmask of
466 // EntryKindClass. For example, DOCUMENT is classified as
467 // KIND_OF_HOSTED_DOCUMENT and KIND_OF_GOOGLE_DOCUMENT, hence the returned
468 // value is KIND_OF_HOSTED_DOCUMENT | KIND_OF_GOOGLE_DOCUMENT.
469 static int ClassifyEntryKind(DriveEntryKind kind);
470
471 // Classifies the EntryKind by the file extension of specific path. The
472 // returned value is a bitmask of EntryKindClass. See also ClassifyEntryKind.
473 static int ClassifyEntryKindByFileExtension(const base::FilePath& file);
474 433
475 void set_resource_id(const std::string& resource_id) { 434 void set_resource_id(const std::string& resource_id) {
476 resource_id_ = resource_id; 435 resource_id_ = resource_id;
477 } 436 }
478 void set_id(const std::string& id) { id_ = id; } 437 void set_id(const std::string& id) { id_ = id; }
479 void set_kind(DriveEntryKind kind) { kind_ = kind; } 438 void set_kind(ResourceEntryKind kind) { kind_ = kind; }
480 void set_title(const std::string& title) { title_ = title; } 439 void set_title(const std::string& title) { title_ = title; }
481 void set_published_time(const base::Time& published_time) { 440 void set_published_time(const base::Time& published_time) {
482 published_time_ = published_time; 441 published_time_ = published_time;
483 } 442 }
484 void set_last_viewed_time(const base::Time& last_viewed_time) { 443 void set_last_viewed_time(const base::Time& last_viewed_time) {
485 last_viewed_time_ = last_viewed_time; 444 last_viewed_time_ = last_viewed_time;
486 } 445 }
487 void set_labels(const std::vector<std::string>& labels) { 446 void set_labels(const std::vector<std::string>& labels) {
488 labels_ = labels; 447 labels_ = labels;
489 } 448 }
(...skipping 24 matching lines...) Expand all
514 // Fills the remaining fields where JSONValueConverter cannot catch. 473 // Fills the remaining fields where JSONValueConverter cannot catch.
515 // Currently, sets |kind_| and |labels_| based on the |categories_| in the 474 // Currently, sets |kind_| and |labels_| based on the |categories_| in the
516 // class. 475 // class.
517 void FillRemainingFields(); 476 void FillRemainingFields();
518 477
519 private: 478 private:
520 friend class base::internal::RepeatedMessageConverter<ResourceEntry>; 479 friend class base::internal::RepeatedMessageConverter<ResourceEntry>;
521 friend class ResourceList; 480 friend class ResourceList;
522 friend class ResumeUploadRequest; 481 friend class ResumeUploadRequest;
523 482
524 // Converts categories.term into DriveEntryKind enum. 483 // Converts categories.term into ResourceEntryKind enum.
525 static DriveEntryKind GetEntryKindFromTerm(const std::string& term); 484 static ResourceEntryKind GetEntryKindFromTerm(const std::string& term);
526 // Converts |kind| into its text identifier equivalent.
527 static const char* GetEntryKindDescription(DriveEntryKind kind);
528 485
529 std::string resource_id_; 486 std::string resource_id_;
530 std::string id_; 487 std::string id_;
531 DriveEntryKind kind_; 488 ResourceEntryKind kind_;
532 std::string title_; 489 std::string title_;
533 base::Time published_time_; 490 base::Time published_time_;
534 // Last viewed value may be unreliable. See: crbug.com/152628. 491 // Last viewed value may be unreliable. See: crbug.com/152628.
535 base::Time last_viewed_time_; 492 base::Time last_viewed_time_;
536 std::vector<std::string> labels_; 493 std::vector<std::string> labels_;
537 Content content_; 494 Content content_;
538 ScopedVector<ResourceLink> resource_links_; 495 ScopedVector<ResourceLink> resource_links_;
539 // Optional fields for files only. 496 // Optional fields for files only.
540 std::string filename_; 497 std::string filename_;
541 std::string suggested_filename_; 498 std::string suggested_filename_;
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 int items_per_page_; 593 int items_per_page_;
637 std::string title_; 594 std::string title_;
638 int64 largest_changestamp_; 595 int64 largest_changestamp_;
639 596
640 DISALLOW_COPY_AND_ASSIGN(ResourceList); 597 DISALLOW_COPY_AND_ASSIGN(ResourceList);
641 }; 598 };
642 599
643 } // namespace google_apis 600 } // namespace google_apis
644 601
645 #endif // GOOGLE_APIS_DRIVE_GDATA_WAPI_PARSER_H_ 602 #endif // GOOGLE_APIS_DRIVE_GDATA_WAPI_PARSER_H_
OLDNEW
« no previous file with comments | « google_apis/drive/drive_entry_kinds.h ('k') | google_apis/drive/gdata_wapi_parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698