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

Side by Side Diff: webkit/quota/quota_manager.cc

Issue 7168019: Implement QM::GetOriginsModifiedSince for browser data deleter support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reflected comments Created 9 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 | « webkit/quota/quota_manager.h ('k') | webkit/quota/quota_manager_unittest.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) 2011 The Chromium Authors. All rights reserved. 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 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 "webkit/quota/quota_manager.h" 5 #include "webkit/quota/quota_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <deque> 8 #include <deque>
9 #include <set> 9 #include <set>
10 10
(...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 manager()->DidInitializeTemporaryGlobalQuota(temporary_storage_quota_); 478 manager()->DidInitializeTemporaryGlobalQuota(temporary_storage_quota_);
479 } 479 }
480 480
481 private: 481 private:
482 FilePath profile_path_; 482 FilePath profile_path_;
483 bool is_incognito_; 483 bool is_incognito_;
484 bool need_initialize_origins_; 484 bool need_initialize_origins_;
485 int64 temporary_storage_quota_; 485 int64 temporary_storage_quota_;
486 }; 486 };
487 487
488 class QuotaManager::TemporaryGlobalQuotaUpdateTask 488 class QuotaManager::UpdateTemporaryGlobalQuotaTask
489 : public QuotaManager::DatabaseTaskBase { 489 : public QuotaManager::DatabaseTaskBase {
490 public: 490 public:
491 TemporaryGlobalQuotaUpdateTask( 491 UpdateTemporaryGlobalQuotaTask(
492 QuotaManager* manager, 492 QuotaManager* manager,
493 int64 new_quota, 493 int64 new_quota,
494 QuotaCallback* callback) 494 QuotaCallback* callback)
495 : DatabaseTaskBase(manager), 495 : DatabaseTaskBase(manager),
496 new_quota_(new_quota), 496 new_quota_(new_quota),
497 callback_(callback) { 497 callback_(callback) {
498 DCHECK_GE(new_quota, 0); 498 DCHECK_GE(new_quota, 0);
499 } 499 }
500 500
501 protected: 501 protected:
(...skipping 10 matching lines...) Expand all
512 if (!db_disabled()) { 512 if (!db_disabled()) {
513 manager()->temporary_global_quota_ = new_quota_; 513 manager()->temporary_global_quota_ = new_quota_;
514 } 514 }
515 } 515 }
516 516
517 private: 517 private:
518 int64 new_quota_; 518 int64 new_quota_;
519 scoped_ptr<QuotaCallback> callback_; 519 scoped_ptr<QuotaCallback> callback_;
520 }; 520 };
521 521
522 class QuotaManager::PersistentHostQuotaQueryTask 522 class QuotaManager::GetPersistentHostQuotaTask
523 : public QuotaManager::DatabaseTaskBase { 523 : public QuotaManager::DatabaseTaskBase {
524 public: 524 public:
525 PersistentHostQuotaQueryTask( 525 GetPersistentHostQuotaTask(
526 QuotaManager* manager, 526 QuotaManager* manager,
527 const std::string& host, 527 const std::string& host,
528 HostQuotaCallback* callback) 528 HostQuotaCallback* callback)
529 : DatabaseTaskBase(manager), 529 : DatabaseTaskBase(manager),
530 host_(host), 530 host_(host),
531 quota_(-1), 531 quota_(-1),
532 callback_(callback) { 532 callback_(callback) {
533 } 533 }
534 protected: 534 protected:
535 virtual void RunOnTargetThread() OVERRIDE { 535 virtual void RunOnTargetThread() OVERRIDE {
536 if (!database()->GetHostQuota(host_, kStorageTypePersistent, &quota_)) 536 if (!database()->GetHostQuota(host_, kStorageTypePersistent, &quota_))
537 quota_ = 0; 537 quota_ = 0;
538 } 538 }
539 virtual void DatabaseTaskCompleted() OVERRIDE { 539 virtual void DatabaseTaskCompleted() OVERRIDE {
540 callback_->Run(kQuotaStatusOk, 540 callback_->Run(kQuotaStatusOk,
541 host_, kStorageTypePersistent, quota_); 541 host_, kStorageTypePersistent, quota_);
542 } 542 }
543 private: 543 private:
544 std::string host_; 544 std::string host_;
545 int64 quota_; 545 int64 quota_;
546 scoped_ptr<HostQuotaCallback> callback_; 546 scoped_ptr<HostQuotaCallback> callback_;
547 }; 547 };
548 548
549 class QuotaManager::PersistentHostQuotaUpdateTask 549 class QuotaManager::UpdatePersistentHostQuotaTask
550 : public QuotaManager::DatabaseTaskBase { 550 : public QuotaManager::DatabaseTaskBase {
551 public: 551 public:
552 PersistentHostQuotaUpdateTask( 552 UpdatePersistentHostQuotaTask(
553 QuotaManager* manager, 553 QuotaManager* manager,
554 const std::string& host, 554 const std::string& host,
555 int new_quota, 555 int new_quota,
556 HostQuotaCallback* callback) 556 HostQuotaCallback* callback)
557 : DatabaseTaskBase(manager), 557 : DatabaseTaskBase(manager),
558 host_(host), 558 host_(host),
559 new_quota_(new_quota), 559 new_quota_(new_quota),
560 callback_(callback) { 560 callback_(callback) {
561 DCHECK_GE(new_quota_, 0); 561 DCHECK_GE(new_quota_, 0);
562 } 562 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 } 626 }
627 627
628 private: 628 private:
629 StorageType type_; 629 StorageType type_;
630 std::set<GURL> exceptions_; 630 std::set<GURL> exceptions_;
631 scoped_ptr<GetLRUOriginCallback> callback_; 631 scoped_ptr<GetLRUOriginCallback> callback_;
632 scoped_refptr<SpecialStoragePolicy> special_storage_policy_; 632 scoped_refptr<SpecialStoragePolicy> special_storage_policy_;
633 GURL url_; 633 GURL url_;
634 }; 634 };
635 635
636 class QuotaManager::OriginDeletionDatabaseTask 636 class QuotaManager::DeleteOriginInfo
637 : public QuotaManager::DatabaseTaskBase { 637 : public QuotaManager::DatabaseTaskBase {
638 public: 638 public:
639 OriginDeletionDatabaseTask( 639 DeleteOriginInfo(
640 QuotaManager* manager, 640 QuotaManager* manager,
641 const GURL& origin, 641 const GURL& origin,
642 StorageType type) 642 StorageType type)
643 : DatabaseTaskBase(manager), 643 : DatabaseTaskBase(manager),
644 origin_(origin), 644 origin_(origin),
645 type_(type) {} 645 type_(type) {}
646 646
647 protected: 647 protected:
648 virtual void RunOnTargetThread() OVERRIDE { 648 virtual void RunOnTargetThread() OVERRIDE {
649 if (!database()->DeleteOriginLastAccessTime(origin_, type_)) { 649 if (!database()->DeleteOriginInfo(origin_, type_)) {
650 set_db_disabled(true); 650 set_db_disabled(true);
651 } 651 }
652 } 652 }
653 virtual void DatabaseTaskCompleted() OVERRIDE {} 653 virtual void DatabaseTaskCompleted() OVERRIDE {}
654 654
655 private: 655 private:
656 GURL origin_; 656 GURL origin_;
657 StorageType type_; 657 StorageType type_;
658 }; 658 };
659 659
660 class QuotaManager::TemporaryOriginsRegistrationTask 660 class QuotaManager::InitializeTemporaryOriginsInfoTask
661 : public QuotaManager::DatabaseTaskBase { 661 : public QuotaManager::DatabaseTaskBase {
662 public: 662 public:
663 TemporaryOriginsRegistrationTask( 663 InitializeTemporaryOriginsInfoTask(
664 QuotaManager* manager, 664 QuotaManager* manager,
665 UsageTracker* temporary_usage_tracker) 665 UsageTracker* temporary_usage_tracker)
666 : DatabaseTaskBase(manager), 666 : DatabaseTaskBase(manager),
667 has_registered_origins_(false) { 667 has_registered_origins_(false) {
668 DCHECK(temporary_usage_tracker); 668 DCHECK(temporary_usage_tracker);
669 temporary_usage_tracker->GetCachedOrigins(&origins_); 669 temporary_usage_tracker->GetCachedOrigins(&origins_);
670 } 670 }
671 671
672 protected: 672 protected:
673 virtual void RunOnTargetThread() OVERRIDE { 673 virtual void RunOnTargetThread() OVERRIDE {
674 if (!database()->IsOriginDatabaseBootstrapped()) { 674 if (!database()->IsOriginDatabaseBootstrapped()) {
675 // Register existing origins with 0 last time access. 675 // Register existing origins with 0 last time access.
676 if (!database()->RegisterOrigins(origins_, 676 if (!database()->RegisterInitialOriginInfo(
677 kStorageTypeTemporary, 677 origins_, kStorageTypeTemporary)) {
678 base::Time::FromInternalValue(0))) {
679 set_db_disabled(true); 678 set_db_disabled(true);
680 } else { 679 } else {
681 has_registered_origins_ = true; 680 has_registered_origins_ = true;
682 database()->SetOriginDatabaseBootstrapped(true); 681 database()->SetOriginDatabaseBootstrapped(true);
683 } 682 }
684 } 683 }
685 } 684 }
686 virtual void DatabaseTaskCompleted() OVERRIDE { 685 virtual void DatabaseTaskCompleted() OVERRIDE {
687 if (has_registered_origins_) 686 if (has_registered_origins_)
688 manager()->StartEviction(); 687 manager()->StartEviction();
(...skipping 16 matching lines...) Expand all
705 space_(-1), 704 space_(-1),
706 callback_(callback) {} 705 callback_(callback) {}
707 virtual ~AvailableSpaceQueryTask() {} 706 virtual ~AvailableSpaceQueryTask() {}
708 707
709 protected: 708 protected:
710 virtual void RunOnTargetThread() OVERRIDE { 709 virtual void RunOnTargetThread() OVERRIDE {
711 space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_); 710 space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_);
712 } 711 }
713 712
714 virtual void Aborted() OVERRIDE { 713 virtual void Aborted() OVERRIDE {
715 callback_->Run(kQuotaErrorAbort, space_); 714 callback_->Run(kQuotaErrorAbort, -1);
716 } 715 }
717 716
718 virtual void Completed() OVERRIDE { 717 virtual void Completed() OVERRIDE {
719 callback_->Run(kQuotaStatusOk, space_); 718 callback_->Run(kQuotaStatusOk, space_);
720 } 719 }
721 720
722 private: 721 private:
723 FilePath profile_path_; 722 FilePath profile_path_;
724 int64 space_; 723 int64 space_;
725 scoped_ptr<AvailableSpaceCallback> callback_; 724 scoped_ptr<AvailableSpaceCallback> callback_;
726 }; 725 };
727 726
728 class QuotaManager::OriginAccessRecordDatabaseTask 727 class QuotaManager::UpdateAccesTimeTask
729 : public QuotaManager::DatabaseTaskBase { 728 : public QuotaManager::DatabaseTaskBase {
730 public: 729 public:
731 OriginAccessRecordDatabaseTask( 730 UpdateAccesTimeTask(
732 QuotaManager* manager, 731 QuotaManager* manager,
733 const GURL& origin, 732 const GURL& origin,
734 StorageType type, 733 StorageType type,
735 base::Time accessed_time) 734 base::Time accessed_time)
736 : DatabaseTaskBase(manager), 735 : DatabaseTaskBase(manager),
737 origin_(origin), 736 origin_(origin),
738 type_(type), 737 type_(type),
739 accessed_time_(accessed_time) {} 738 accessed_time_(accessed_time) {}
740 739
741 protected: 740 protected:
742 virtual void RunOnTargetThread() OVERRIDE { 741 virtual void RunOnTargetThread() OVERRIDE {
743 if (!database()->SetOriginLastAccessTime(origin_, type_, accessed_time_)) { 742 if (!database()->SetOriginLastAccessTime(origin_, type_, accessed_time_)) {
744 set_db_disabled(true); 743 set_db_disabled(true);
745 } 744 }
746 } 745 }
747 virtual void DatabaseTaskCompleted() OVERRIDE {} 746 virtual void DatabaseTaskCompleted() OVERRIDE {}
748 747
749 private: 748 private:
750 GURL origin_; 749 GURL origin_;
751 StorageType type_; 750 StorageType type_;
752 base::Time accessed_time_; 751 base::Time accessed_time_;
753 }; 752 };
754 753
754 class QuotaManager::UpdateModifiedTimeTask
755 : public QuotaManager::DatabaseTaskBase {
756 public:
757 UpdateModifiedTimeTask(
758 QuotaManager* manager,
759 const GURL& origin,
760 StorageType type,
761 base::Time modified_time)
762 : DatabaseTaskBase(manager),
763 origin_(origin),
764 type_(type),
765 modified_time_(modified_time) {}
766
767 protected:
768 virtual void RunOnTargetThread() OVERRIDE {
769 if (!database()->SetOriginLastModifiedTime(
770 origin_, type_, modified_time_)) {
771 set_db_disabled(true);
772 }
773 }
774 virtual void DatabaseTaskCompleted() OVERRIDE {}
775
776 private:
777 GURL origin_;
778 StorageType type_;
779 base::Time modified_time_;
780 };
781
782 class QuotaManager::GetModifiedSinceTask
783 : public QuotaManager::DatabaseTaskBase {
784 public:
785 GetModifiedSinceTask(
786 QuotaManager* manager,
787 StorageType type,
788 base::Time modified_since,
789 GetOriginsCallback* callback)
790 : DatabaseTaskBase(manager),
791 type_(type),
792 modified_since_(modified_since),
793 callback_(callback) {}
794
795 protected:
796 virtual void RunOnTargetThread() OVERRIDE {
797 if (!database()->GetOriginsModifiedSince(
798 type_, &origins_, modified_since_)) {
799 set_db_disabled(true);
800 }
801 }
802
803 virtual void DatabaseTaskCompleted() OVERRIDE {
804 callback_->Run(origins_);
805 }
806
807 virtual void Aborted() OVERRIDE {
808 callback_->Run(std::set<GURL>());
809 }
810
811 private:
812 StorageType type_;
813 base::Time modified_since_;
814 std::set<GURL> origins_;
815 scoped_ptr<GetOriginsCallback> callback_;
816 };
817
755 class QuotaManager::DumpQuotaTableTask 818 class QuotaManager::DumpQuotaTableTask
756 : public QuotaManager::DatabaseTaskBase { 819 : public QuotaManager::DatabaseTaskBase {
757 private: 820 private:
758 typedef QuotaManager::DumpQuotaTableTask self_type; 821 typedef QuotaManager::DumpQuotaTableTask self_type;
759 typedef QuotaManager::DumpQuotaTableCallback Callback; 822 typedef QuotaManager::DumpQuotaTableCallback Callback;
760 typedef QuotaManager::QuotaTableEntry TableEntry; 823 typedef QuotaManager::QuotaTableEntry TableEntry;
761 typedef QuotaManager::QuotaTableEntries TableEntries; 824 typedef QuotaManager::QuotaTableEntries TableEntries;
762 typedef QuotaDatabase::QuotaTableCallback TableCallback; 825 typedef QuotaDatabase::QuotaTableCallback TableCallback;
763 826
764 public: 827 public:
765 DumpQuotaTableTask( 828 DumpQuotaTableTask(
766 QuotaManager* manager, 829 QuotaManager* manager,
767 Callback* callback) 830 Callback* callback)
768 : DatabaseTaskBase(manager), 831 : DatabaseTaskBase(manager),
769 callback_(callback) { 832 callback_(callback) {
770 } 833 }
771 protected: 834 protected:
772 virtual void RunOnTargetThread() OVERRIDE { 835 virtual void RunOnTargetThread() OVERRIDE {
773 if (!database()->DumpQuotaTable( 836 if (!database()->DumpQuotaTable(
774 new TableCallback( 837 new TableCallback(
775 base::Bind(&self_type::AppendEntry, this)))) 838 base::Bind(&self_type::AppendEntry, this))))
776 set_db_disabled(true); 839 set_db_disabled(true);
777 } 840 }
778 841
779 virtual void Aborted() OVERRIDE { 842 virtual void Aborted() OVERRIDE {
780 callback_->Run(entries_); 843 callback_->Run(TableEntries());
781 } 844 }
782 845
783 virtual void DatabaseTaskCompleted() OVERRIDE { 846 virtual void DatabaseTaskCompleted() OVERRIDE {
784 callback_->Run(entries_); 847 callback_->Run(entries_);
785 } 848 }
786 849
787 private: 850 private:
788 bool AppendEntry(const TableEntry& entry) { 851 bool AppendEntry(const TableEntry& entry) {
789 entries_.push_back(entry); 852 entries_.push_back(entry);
790 return true; 853 return true;
791 } 854 }
792 855
793 scoped_ptr<Callback> callback_; 856 scoped_ptr<Callback> callback_;
794 TableEntries entries_; 857 TableEntries entries_;
795 }; 858 };
796 859
797 class QuotaManager::DumpLastAccessTimeTableTask 860 class QuotaManager::DumpOriginInfoTableTask
798 : public QuotaManager::DatabaseTaskBase { 861 : public QuotaManager::DatabaseTaskBase {
799 private: 862 private:
800 typedef QuotaManager::DumpLastAccessTimeTableTask self_type; 863 typedef QuotaManager::DumpOriginInfoTableTask self_type;
801 typedef QuotaManager::DumpLastAccessTimeTableCallback Callback; 864 typedef QuotaManager::DumpOriginInfoTableCallback Callback;
802 typedef QuotaManager::LastAccessTimeTableEntry TableEntry; 865 typedef QuotaManager::OriginInfoTableEntry TableEntry;
803 typedef QuotaManager::LastAccessTimeTableEntries TableEntries; 866 typedef QuotaManager::OriginInfoTableEntries TableEntries;
804 typedef QuotaDatabase::LastAccessTimeTableCallback TableCallback; 867 typedef QuotaDatabase::OriginInfoTableCallback TableCallback;
805 868
806 public: 869 public:
807 DumpLastAccessTimeTableTask( 870 DumpOriginInfoTableTask(
808 QuotaManager* manager, 871 QuotaManager* manager,
809 Callback* callback) 872 Callback* callback)
810 : DatabaseTaskBase(manager), 873 : DatabaseTaskBase(manager),
811 callback_(callback) { 874 callback_(callback) {
812 } 875 }
813 protected: 876 protected:
814 virtual void RunOnTargetThread() OVERRIDE { 877 virtual void RunOnTargetThread() OVERRIDE {
815 if (!database()->DumpLastAccessTimeTable( 878 if (!database()->DumpOriginInfoTable(
816 new TableCallback( 879 new TableCallback(
817 base::Bind(&self_type::AppendEntry, this)))) 880 base::Bind(&self_type::AppendEntry, this))))
818 set_db_disabled(true); 881 set_db_disabled(true);
819 } 882 }
820 883
821 virtual void Aborted() OVERRIDE { 884 virtual void Aborted() OVERRIDE {
822 callback_->Run(entries_); 885 callback_->Run(TableEntries());
823 } 886 }
824 887
825 virtual void DatabaseTaskCompleted() OVERRIDE { 888 virtual void DatabaseTaskCompleted() OVERRIDE {
826 callback_->Run(entries_); 889 callback_->Run(entries_);
827 } 890 }
828 891
829 private: 892 private:
830 bool AppendEntry(const TableEntry& entry) { 893 bool AppendEntry(const TableEntry& entry) {
831 entries_.push_back(entry); 894 entries_.push_back(entry);
832 return true; 895 return true;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 QuotaCallback* callback) { 980 QuotaCallback* callback) {
918 LazyInitialize(); 981 LazyInitialize();
919 if (new_quota < 0) { 982 if (new_quota < 0) {
920 callback->Run(kQuotaErrorInvalidModification, 983 callback->Run(kQuotaErrorInvalidModification,
921 kStorageTypeTemporary, -1); 984 kStorageTypeTemporary, -1);
922 delete callback; 985 delete callback;
923 return; 986 return;
924 } 987 }
925 988
926 if (!db_disabled_) { 989 if (!db_disabled_) {
927 scoped_refptr<TemporaryGlobalQuotaUpdateTask> task( 990 scoped_refptr<UpdateTemporaryGlobalQuotaTask> task(
928 new TemporaryGlobalQuotaUpdateTask(this, new_quota, callback)); 991 new UpdateTemporaryGlobalQuotaTask(this, new_quota, callback));
929 task->Start(); 992 task->Start();
930 } else { 993 } else {
931 callback->Run(kQuotaErrorInvalidAccess, 994 callback->Run(kQuotaErrorInvalidAccess,
932 kStorageTypeTemporary, -1); 995 kStorageTypeTemporary, -1);
933 delete callback; 996 delete callback;
934 } 997 }
935 } 998 }
936 999
937 void QuotaManager::GetPersistentHostQuota(const std::string& host, 1000 void QuotaManager::GetPersistentHostQuota(const std::string& host,
938 HostQuotaCallback* callback_ptr) { 1001 HostQuotaCallback* callback_ptr) {
939 scoped_ptr<HostQuotaCallback> callback(callback_ptr); 1002 scoped_ptr<HostQuotaCallback> callback(callback_ptr);
940 LazyInitialize(); 1003 LazyInitialize();
941 if (host.empty()) { 1004 if (host.empty()) {
942 // This could happen if we are called on file:///. 1005 // This could happen if we are called on file:///.
943 // TODO(kinuko) We may want to respect --allow-file-access-from-files 1006 // TODO(kinuko) We may want to respect --allow-file-access-from-files
944 // command line switch. 1007 // command line switch.
945 callback->Run(kQuotaStatusOk, host, kStorageTypePersistent, 0); 1008 callback->Run(kQuotaStatusOk, host, kStorageTypePersistent, 0);
946 return; 1009 return;
947 } 1010 }
948 scoped_refptr<PersistentHostQuotaQueryTask> task( 1011 scoped_refptr<GetPersistentHostQuotaTask> task(
949 new PersistentHostQuotaQueryTask(this, host, callback.release())); 1012 new GetPersistentHostQuotaTask(this, host, callback.release()));
950 task->Start(); 1013 task->Start();
951 } 1014 }
952 1015
953 void QuotaManager::SetPersistentHostQuota(const std::string& host, 1016 void QuotaManager::SetPersistentHostQuota(const std::string& host,
954 int64 new_quota, 1017 int64 new_quota,
955 HostQuotaCallback* callback_ptr) { 1018 HostQuotaCallback* callback_ptr) {
956 scoped_ptr<HostQuotaCallback> callback(callback_ptr); 1019 scoped_ptr<HostQuotaCallback> callback(callback_ptr);
957 LazyInitialize(); 1020 LazyInitialize();
958 if (host.empty()) { 1021 if (host.empty()) {
959 // This could happen if we are called on file:///. 1022 // This could happen if we are called on file:///.
960 callback->Run(kQuotaErrorNotSupported, host, kStorageTypePersistent, 0); 1023 callback->Run(kQuotaErrorNotSupported, host, kStorageTypePersistent, 0);
961 return; 1024 return;
962 } 1025 }
963 if (new_quota < 0) { 1026 if (new_quota < 0) {
964 callback->Run(kQuotaErrorInvalidModification, 1027 callback->Run(kQuotaErrorInvalidModification,
965 host, kStorageTypePersistent, -1); 1028 host, kStorageTypePersistent, -1);
966 return; 1029 return;
967 } 1030 }
968 1031
969 if (!db_disabled_) { 1032 if (!db_disabled_) {
970 scoped_refptr<PersistentHostQuotaUpdateTask> task( 1033 scoped_refptr<UpdatePersistentHostQuotaTask> task(
971 new PersistentHostQuotaUpdateTask( 1034 new UpdatePersistentHostQuotaTask(
972 this, host, new_quota, callback.release())); 1035 this, host, new_quota, callback.release()));
973 task->Start(); 1036 task->Start();
974 } else { 1037 } else {
975 callback->Run(kQuotaErrorInvalidAccess, 1038 callback->Run(kQuotaErrorInvalidAccess,
976 host, kStorageTypePersistent, -1); 1039 host, kStorageTypePersistent, -1);
977 } 1040 }
978 } 1041 }
979 1042
980 void QuotaManager::GetGlobalUsage( 1043 void QuotaManager::GetGlobalUsage(
981 StorageType type, 1044 StorageType type,
(...skipping 14 matching lines...) Expand all
996 if (temporary_storage_evictor_.get()) { 1059 if (temporary_storage_evictor_.get()) {
997 std::map<std::string, int64> stats; 1060 std::map<std::string, int64> stats;
998 temporary_storage_evictor_->GetStatistics(&stats); 1061 temporary_storage_evictor_->GetStatistics(&stats);
999 for (std::map<std::string, int64>::iterator p = stats.begin(); 1062 for (std::map<std::string, int64>::iterator p = stats.begin();
1000 p != stats.end(); 1063 p != stats.end();
1001 ++p) 1064 ++p)
1002 (*statistics)[p->first] = base::Int64ToString(p->second); 1065 (*statistics)[p->first] = base::Int64ToString(p->second);
1003 } 1066 }
1004 } 1067 }
1005 1068
1069 void QuotaManager::GetOriginsModifiedSince(
1070 StorageType type,
1071 base::Time modified_since,
1072 GetOriginsCallback* callback) {
1073 LazyInitialize();
1074 make_scoped_refptr(new GetModifiedSinceTask(
1075 this, type, modified_since, callback))->Start();
1076 }
1077
1006 void QuotaManager::LazyInitialize() { 1078 void QuotaManager::LazyInitialize() {
1007 DCHECK(io_thread_->BelongsToCurrentThread()); 1079 DCHECK(io_thread_->BelongsToCurrentThread());
1008 if (database_.get()) { 1080 if (database_.get()) {
1009 // Initialization seems to be done already. 1081 // Initialization seems to be done already.
1010 return; 1082 return;
1011 } 1083 }
1012 1084
1013 // Use an empty path to open an in-memory only databse for incognito. 1085 // Use an empty path to open an in-memory only databse for incognito.
1014 database_.reset(new QuotaDatabase(is_incognito_ ? FilePath() : 1086 database_.reset(new QuotaDatabase(is_incognito_ ? FilePath() :
1015 profile_path_.AppendASCII(kDatabaseName))); 1087 profile_path_.AppendASCII(kDatabaseName)));
(...skipping 18 matching lines...) Expand all
1034 1106
1035 void QuotaManager::NotifyStorageAccessed( 1107 void QuotaManager::NotifyStorageAccessed(
1036 QuotaClient::ID client_id, 1108 QuotaClient::ID client_id,
1037 const GURL& origin, StorageType type) { 1109 const GURL& origin, StorageType type) {
1038 NotifyStorageAccessedInternal(client_id, origin, type, base::Time::Now()); 1110 NotifyStorageAccessedInternal(client_id, origin, type, base::Time::Now());
1039 } 1111 }
1040 1112
1041 void QuotaManager::NotifyStorageModified( 1113 void QuotaManager::NotifyStorageModified(
1042 QuotaClient::ID client_id, 1114 QuotaClient::ID client_id,
1043 const GURL& origin, StorageType type, int64 delta) { 1115 const GURL& origin, StorageType type, int64 delta) {
1044 LazyInitialize(); 1116 NotifyStorageModifiedInternal(client_id, origin, type, delta,
1045 GetUsageTracker(type)->UpdateUsageCache(client_id, origin, delta); 1117 base::Time::Now());
1046 } 1118 }
1047 1119
1048 void QuotaManager::NotifyOriginInUse(const GURL& origin) { 1120 void QuotaManager::NotifyOriginInUse(const GURL& origin) {
1049 DCHECK(io_thread_->BelongsToCurrentThread()); 1121 DCHECK(io_thread_->BelongsToCurrentThread());
1050 origins_in_use_[origin]++; 1122 origins_in_use_[origin]++;
1051 } 1123 }
1052 1124
1053 void QuotaManager::NotifyOriginNoLongerInUse(const GURL& origin) { 1125 void QuotaManager::NotifyOriginNoLongerInUse(const GURL& origin) {
1054 DCHECK(io_thread_->BelongsToCurrentThread()); 1126 DCHECK(io_thread_->BelongsToCurrentThread());
1055 DCHECK(IsOriginInUse(origin)); 1127 DCHECK(IsOriginInUse(origin));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 base::Time accessed_time) { 1181 base::Time accessed_time) {
1110 LazyInitialize(); 1182 LazyInitialize();
1111 if (type == kStorageTypeTemporary && lru_origin_callback_.get()) { 1183 if (type == kStorageTypeTemporary && lru_origin_callback_.get()) {
1112 // Record the accessed origins while GetLRUOrigin task is runing 1184 // Record the accessed origins while GetLRUOrigin task is runing
1113 // to filter out them from eviction. 1185 // to filter out them from eviction.
1114 access_notified_origins_.insert(origin); 1186 access_notified_origins_.insert(origin);
1115 } 1187 }
1116 1188
1117 if (db_disabled_) 1189 if (db_disabled_)
1118 return; 1190 return;
1119 scoped_refptr<OriginAccessRecordDatabaseTask> task( 1191 make_scoped_refptr(new UpdateAccesTimeTask(
1120 new OriginAccessRecordDatabaseTask(this, origin, type, accessed_time)); 1192 this, origin, type, accessed_time))->Start();
1121 task->Start(); 1193 }
1194
1195 void QuotaManager::NotifyStorageModifiedInternal(
1196 QuotaClient::ID client_id,
1197 const GURL& origin,
1198 StorageType type,
1199 int64 delta,
1200 base::Time modified_time) {
1201 LazyInitialize();
1202 GetUsageTracker(type)->UpdateUsageCache(client_id, origin, delta);
1203 make_scoped_refptr(new UpdateModifiedTimeTask(
1204 this, origin, type, modified_time))->Start();
1122 } 1205 }
1123 1206
1124 void QuotaManager::DumpQuotaTable(DumpQuotaTableCallback* callback) { 1207 void QuotaManager::DumpQuotaTable(DumpQuotaTableCallback* callback) {
1125 make_scoped_refptr(new DumpQuotaTableTask(this, callback))->Start(); 1208 make_scoped_refptr(new DumpQuotaTableTask(this, callback))->Start();
1126 } 1209 }
1127 1210
1128 void QuotaManager::DumpLastAccessTimeTable( 1211 void QuotaManager::DumpOriginInfoTable(
1129 DumpLastAccessTimeTableCallback* callback) { 1212 DumpOriginInfoTableCallback* callback) {
1130 make_scoped_refptr(new DumpLastAccessTimeTableTask(this, callback))->Start(); 1213 make_scoped_refptr(new DumpOriginInfoTableTask(this, callback))->Start();
1131 } 1214 }
1132 1215
1133 1216
1134 void QuotaManager::DeleteOriginFromDatabase( 1217 void QuotaManager::DeleteOriginFromDatabase(
1135 const GURL& origin, StorageType type) { 1218 const GURL& origin, StorageType type) {
1136 LazyInitialize(); 1219 LazyInitialize();
1137 if (db_disabled_) 1220 if (db_disabled_)
1138 return; 1221 return;
1139 scoped_refptr<OriginDeletionDatabaseTask> task = 1222 scoped_refptr<DeleteOriginInfo> task =
1140 new OriginDeletionDatabaseTask(this, origin, type); 1223 new DeleteOriginInfo(this, origin, type);
1141 task->Start(); 1224 task->Start();
1142 } 1225 }
1143 1226
1144 void QuotaManager::GetLRUOrigin( 1227 void QuotaManager::GetLRUOrigin(
1145 StorageType type, 1228 StorageType type,
1146 GetLRUOriginCallback* callback) { 1229 GetLRUOriginCallback* callback) {
1147 LazyInitialize(); 1230 LazyInitialize();
1148 // This must not be called while there's an in-flight task. 1231 // This must not be called while there's an in-flight task.
1149 DCHECK(!lru_origin_callback_.get()); 1232 DCHECK(!lru_origin_callback_.get());
1150 lru_origin_callback_.reset(callback); 1233 lru_origin_callback_.reset(callback);
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1266 // for eviction later.) 1349 // for eviction later.)
1267 temporary_usage_tracker_->GetGlobalUsage(callback_factory_.NewCallback( 1350 temporary_usage_tracker_->GetGlobalUsage(callback_factory_.NewCallback(
1268 &QuotaManager::DidRunInitialGetTemporaryGlobalUsage)); 1351 &QuotaManager::DidRunInitialGetTemporaryGlobalUsage));
1269 } 1352 }
1270 1353
1271 void QuotaManager::DidRunInitialGetTemporaryGlobalUsage( 1354 void QuotaManager::DidRunInitialGetTemporaryGlobalUsage(
1272 StorageType type, int64 usage_unused, int64 unlimited_usage_unused) { 1355 StorageType type, int64 usage_unused, int64 unlimited_usage_unused) {
1273 DCHECK_EQ(type, kStorageTypeTemporary); 1356 DCHECK_EQ(type, kStorageTypeTemporary);
1274 // This will call the StartEviction() when initial origin registration 1357 // This will call the StartEviction() when initial origin registration
1275 // is completed. 1358 // is completed.
1276 scoped_refptr<TemporaryOriginsRegistrationTask> task( 1359 scoped_refptr<InitializeTemporaryOriginsInfoTask> task(
1277 new TemporaryOriginsRegistrationTask( 1360 new InitializeTemporaryOriginsInfoTask(
1278 this, temporary_usage_tracker_.get())); 1361 this, temporary_usage_tracker_.get()));
1279 task->Start(); 1362 task->Start();
1280 } 1363 }
1281 1364
1282 void QuotaManager::DidGetDatabaseLRUOrigin(const GURL& origin) { 1365 void QuotaManager::DidGetDatabaseLRUOrigin(const GURL& origin) {
1283 // Make sure the returned origin is (still) not in the origin_in_use_ set 1366 // Make sure the returned origin is (still) not in the origin_in_use_ set
1284 // and has not been accessed since we posted the task. 1367 // and has not been accessed since we posted the task.
1285 if (origins_in_use_.find(origin) != origins_in_use_.end() || 1368 if (origins_in_use_.find(origin) != origins_in_use_.end() ||
1286 access_notified_origins_.find(origin) != access_notified_origins_.end()) 1369 access_notified_origins_.find(origin) != access_notified_origins_.end())
1287 lru_origin_callback_->Run(GURL()); 1370 lru_origin_callback_->Run(GURL());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1371 1454
1372 QuotaManagerProxy::QuotaManagerProxy( 1455 QuotaManagerProxy::QuotaManagerProxy(
1373 QuotaManager* manager, base::MessageLoopProxy* io_thread) 1456 QuotaManager* manager, base::MessageLoopProxy* io_thread)
1374 : manager_(manager), io_thread_(io_thread) { 1457 : manager_(manager), io_thread_(io_thread) {
1375 } 1458 }
1376 1459
1377 QuotaManagerProxy::~QuotaManagerProxy() { 1460 QuotaManagerProxy::~QuotaManagerProxy() {
1378 } 1461 }
1379 1462
1380 } // namespace quota 1463 } // namespace quota
OLDNEW
« no previous file with comments | « webkit/quota/quota_manager.h ('k') | webkit/quota/quota_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698