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

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

Issue 10066044: RefCounted types should not have public destructors, webkit/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Implementation ordering Created 8 years, 7 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/support/test_webmessageportchannel.h » ('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 #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 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 public: 637 public:
638 explicit DatabaseTaskBase(QuotaManager* manager) 638 explicit DatabaseTaskBase(QuotaManager* manager)
639 : QuotaThreadTask(manager, manager->db_thread_), 639 : QuotaThreadTask(manager, manager->db_thread_),
640 manager_(manager), 640 manager_(manager),
641 database_(manager->database_.get()), 641 database_(manager->database_.get()),
642 db_disabled_(false) { 642 db_disabled_(false) {
643 DCHECK(database_); 643 DCHECK(database_);
644 } 644 }
645 645
646 protected: 646 protected:
647 virtual ~DatabaseTaskBase() {}
648
647 virtual void DatabaseTaskCompleted() = 0; 649 virtual void DatabaseTaskCompleted() = 0;
648 650
651 // QuotaThreadTask:
649 virtual void Completed() OVERRIDE { 652 virtual void Completed() OVERRIDE {
650 manager_->db_disabled_ = db_disabled_; 653 manager_->db_disabled_ = db_disabled_;
651 DatabaseTaskCompleted(); 654 DatabaseTaskCompleted();
652 } 655 }
653 656
654 bool db_disabled() const { return db_disabled_; } 657 bool db_disabled() const { return db_disabled_; }
655 void set_db_disabled(bool db_disabled) { 658 void set_db_disabled(bool db_disabled) {
656 db_disabled_ = db_disabled; 659 db_disabled_ = db_disabled;
657 } 660 }
658 661
659 QuotaManager* manager() const { return manager_; } 662 QuotaManager* manager() const { return manager_; }
660 QuotaDatabase* database() const { return database_; } 663 QuotaDatabase* database() const { return database_; }
661 664
662 private: 665 private:
663 QuotaManager* manager_; 666 QuotaManager* manager_;
664 QuotaDatabase* database_; 667 QuotaDatabase* database_;
665 bool db_disabled_; 668 bool db_disabled_;
666 }; 669 };
667 670
668 class QuotaManager::InitializeTask : public QuotaManager::DatabaseTaskBase { 671 class QuotaManager::InitializeTask : public QuotaManager::DatabaseTaskBase {
669 public: 672 public:
670 InitializeTask(QuotaManager* manager) 673 InitializeTask(QuotaManager* manager)
671 : DatabaseTaskBase(manager), 674 : DatabaseTaskBase(manager),
672 temporary_quota_override_(-1), 675 temporary_quota_override_(-1),
673 desired_available_space_(-1) { 676 desired_available_space_(-1) {
674 } 677 }
675 678
676 protected: 679 protected:
680 virtual ~InitializeTask() {}
681
682 // QuotaThreadTask:
677 virtual void RunOnTargetThread() OVERRIDE { 683 virtual void RunOnTargetThread() OVERRIDE {
678 // See if we have overriding temporary quota configuration. 684 // See if we have overriding temporary quota configuration.
679 database()->GetQuotaConfigValue(QuotaDatabase::kTemporaryQuotaOverrideKey, 685 database()->GetQuotaConfigValue(QuotaDatabase::kTemporaryQuotaOverrideKey,
680 &temporary_quota_override_); 686 &temporary_quota_override_);
681 database()->GetQuotaConfigValue(QuotaDatabase::kDesiredAvailableSpaceKey, 687 database()->GetQuotaConfigValue(QuotaDatabase::kDesiredAvailableSpaceKey,
682 &desired_available_space_); 688 &desired_available_space_);
683 } 689 }
684 690
691 // DatabaseTaskBase:
685 virtual void DatabaseTaskCompleted() OVERRIDE { 692 virtual void DatabaseTaskCompleted() OVERRIDE {
686 manager()->temporary_quota_override_ = temporary_quota_override_; 693 manager()->temporary_quota_override_ = temporary_quota_override_;
687 manager()->desired_available_space_ = desired_available_space_; 694 manager()->desired_available_space_ = desired_available_space_;
688 manager()->temporary_quota_initialized_ = true; 695 manager()->temporary_quota_initialized_ = true;
689 manager()->DidRunInitializeTask(); 696 manager()->DidRunInitializeTask();
690 } 697 }
691 698
692 private: 699 private:
693 int64 temporary_quota_override_; 700 int64 temporary_quota_override_;
694 int64 desired_available_space_; 701 int64 desired_available_space_;
695 }; 702 };
696 703
697 class QuotaManager::UpdateTemporaryQuotaOverrideTask 704 class QuotaManager::UpdateTemporaryQuotaOverrideTask
698 : public QuotaManager::DatabaseTaskBase { 705 : public QuotaManager::DatabaseTaskBase {
699 public: 706 public:
700 UpdateTemporaryQuotaOverrideTask( 707 UpdateTemporaryQuotaOverrideTask(
701 QuotaManager* manager, 708 QuotaManager* manager,
702 int64 new_quota, 709 int64 new_quota,
703 const QuotaCallback& callback) 710 const QuotaCallback& callback)
704 : DatabaseTaskBase(manager), 711 : DatabaseTaskBase(manager),
705 new_quota_(new_quota), 712 new_quota_(new_quota),
706 callback_(callback) {} 713 callback_(callback) {}
707 714
708 protected: 715 protected:
716 virtual ~UpdateTemporaryQuotaOverrideTask() {}
717
718 // QuotaThreadTask:
709 virtual void RunOnTargetThread() OVERRIDE { 719 virtual void RunOnTargetThread() OVERRIDE {
710 if (!database()->SetQuotaConfigValue( 720 if (!database()->SetQuotaConfigValue(
711 QuotaDatabase::kTemporaryQuotaOverrideKey, new_quota_)) { 721 QuotaDatabase::kTemporaryQuotaOverrideKey, new_quota_)) {
712 set_db_disabled(true); 722 set_db_disabled(true);
713 new_quota_ = -1; 723 new_quota_ = -1;
714 return; 724 return;
715 } 725 }
716 } 726 }
717 727
728 // DatabaseTaskBase:
718 virtual void DatabaseTaskCompleted() OVERRIDE { 729 virtual void DatabaseTaskCompleted() OVERRIDE {
719 if (!db_disabled()) { 730 if (!db_disabled()) {
720 manager()->temporary_quota_override_ = new_quota_; 731 manager()->temporary_quota_override_ = new_quota_;
721 CallCallback(kQuotaStatusOk, kStorageTypeTemporary, new_quota_); 732 CallCallback(kQuotaStatusOk, kStorageTypeTemporary, new_quota_);
722 } else { 733 } else {
723 CallCallback(kQuotaErrorInvalidAccess, kStorageTypeTemporary, new_quota_); 734 CallCallback(kQuotaErrorInvalidAccess, kStorageTypeTemporary, new_quota_);
724 } 735 }
725 } 736 }
726 737
727 private: 738 private:
(...skipping 13 matching lines...) Expand all
741 public: 752 public:
742 GetPersistentHostQuotaTask( 753 GetPersistentHostQuotaTask(
743 QuotaManager* manager, 754 QuotaManager* manager,
744 const std::string& host, 755 const std::string& host,
745 const HostQuotaCallback& callback) 756 const HostQuotaCallback& callback)
746 : DatabaseTaskBase(manager), 757 : DatabaseTaskBase(manager),
747 host_(host), 758 host_(host),
748 quota_(-1), 759 quota_(-1),
749 callback_(callback) { 760 callback_(callback) {
750 } 761 }
762
751 protected: 763 protected:
764 virtual ~GetPersistentHostQuotaTask() {}
765
766 // QuotaThreadTask:
752 virtual void RunOnTargetThread() OVERRIDE { 767 virtual void RunOnTargetThread() OVERRIDE {
753 if (!database()->GetHostQuota(host_, kStorageTypePersistent, &quota_)) 768 if (!database()->GetHostQuota(host_, kStorageTypePersistent, &quota_))
754 quota_ = 0; 769 quota_ = 0;
755 } 770 }
771
772 // DatabaseTaskBase:
756 virtual void DatabaseTaskCompleted() OVERRIDE { 773 virtual void DatabaseTaskCompleted() OVERRIDE {
757 callback_.Run(kQuotaStatusOk, 774 callback_.Run(kQuotaStatusOk,
758 host_, kStorageTypePersistent, quota_); 775 host_, kStorageTypePersistent, quota_);
759 } 776 }
777
760 private: 778 private:
761 std::string host_; 779 std::string host_;
762 int64 quota_; 780 int64 quota_;
763 HostQuotaCallback callback_; 781 HostQuotaCallback callback_;
764 }; 782 };
765 783
766 class QuotaManager::UpdatePersistentHostQuotaTask 784 class QuotaManager::UpdatePersistentHostQuotaTask
767 : public QuotaManager::DatabaseTaskBase { 785 : public QuotaManager::DatabaseTaskBase {
768 public: 786 public:
769 UpdatePersistentHostQuotaTask( 787 UpdatePersistentHostQuotaTask(
770 QuotaManager* manager, 788 QuotaManager* manager,
771 const std::string& host, 789 const std::string& host,
772 int64 new_quota, 790 int64 new_quota,
773 const HostQuotaCallback& callback) 791 const HostQuotaCallback& callback)
774 : DatabaseTaskBase(manager), 792 : DatabaseTaskBase(manager),
775 host_(host), 793 host_(host),
776 new_quota_(new_quota), 794 new_quota_(new_quota),
777 callback_(callback) { 795 callback_(callback) {
778 DCHECK_GE(new_quota_, 0); 796 DCHECK_GE(new_quota_, 0);
779 } 797 }
798
780 protected: 799 protected:
800 virtual ~UpdatePersistentHostQuotaTask() {}
801
802 // QuotaThreadTask:
781 virtual void RunOnTargetThread() OVERRIDE { 803 virtual void RunOnTargetThread() OVERRIDE {
782 if (!database()->SetHostQuota(host_, kStorageTypePersistent, new_quota_)) { 804 if (!database()->SetHostQuota(host_, kStorageTypePersistent, new_quota_)) {
783 set_db_disabled(true); 805 set_db_disabled(true);
784 new_quota_ = 0; 806 new_quota_ = 0;
785 } 807 }
786 } 808 }
787 809
788 virtual void DatabaseTaskCompleted() OVERRIDE {
789 callback_.Run(db_disabled() ? kQuotaErrorInvalidAccess : kQuotaStatusOk,
790 host_, kStorageTypePersistent, new_quota_);
791 }
792
793 virtual void Aborted() OVERRIDE { 810 virtual void Aborted() OVERRIDE {
794 callback_.Reset(); 811 callback_.Reset();
795 } 812 }
796 813
814 // DatabaseTaskBase:
815 virtual void DatabaseTaskCompleted() OVERRIDE {
816 callback_.Run(db_disabled() ? kQuotaErrorInvalidAccess : kQuotaStatusOk,
817 host_, kStorageTypePersistent, new_quota_);
818 }
819
797 private: 820 private:
798 std::string host_; 821 std::string host_;
799 int64 new_quota_; 822 int64 new_quota_;
800 HostQuotaCallback callback_; 823 HostQuotaCallback callback_;
801 }; 824 };
802 825
803 class QuotaManager::GetLRUOriginTask 826 class QuotaManager::GetLRUOriginTask
804 : public QuotaManager::DatabaseTaskBase { 827 : public QuotaManager::DatabaseTaskBase {
805 public: 828 public:
806 GetLRUOriginTask( 829 GetLRUOriginTask(
(...skipping 14 matching lines...) Expand all
821 } 844 }
822 for (std::map<GURL, int>::const_iterator p = origins_in_error.begin(); 845 for (std::map<GURL, int>::const_iterator p = origins_in_error.begin();
823 p != origins_in_error.end(); 846 p != origins_in_error.end();
824 ++p) { 847 ++p) {
825 if (p->second > QuotaManager::kThresholdOfErrorsToBeBlacklisted) 848 if (p->second > QuotaManager::kThresholdOfErrorsToBeBlacklisted)
826 exceptions_.insert(p->first); 849 exceptions_.insert(p->first);
827 } 850 }
828 } 851 }
829 852
830 protected: 853 protected:
854 virtual ~GetLRUOriginTask() {}
855
856 // QuotaThreadTask:
831 virtual void RunOnTargetThread() OVERRIDE { 857 virtual void RunOnTargetThread() OVERRIDE {
832 database()->GetLRUOrigin( 858 database()->GetLRUOrigin(
833 type_, exceptions_, special_storage_policy_, &url_); 859 type_, exceptions_, special_storage_policy_, &url_);
834 } 860 }
835 861
836 virtual void DatabaseTaskCompleted() OVERRIDE {
837 callback_.Run(url_);
838 }
839
840 virtual void Aborted() OVERRIDE { 862 virtual void Aborted() OVERRIDE {
841 callback_.Reset(); 863 callback_.Reset();
842 } 864 }
843 865
866 // DatabaseTaskBase:
867 virtual void DatabaseTaskCompleted() OVERRIDE {
868 callback_.Run(url_);
869 }
870
844 private: 871 private:
845 StorageType type_; 872 StorageType type_;
846 std::set<GURL> exceptions_; 873 std::set<GURL> exceptions_;
847 GetLRUOriginCallback callback_; 874 GetLRUOriginCallback callback_;
848 scoped_refptr<SpecialStoragePolicy> special_storage_policy_; 875 scoped_refptr<SpecialStoragePolicy> special_storage_policy_;
849 GURL url_; 876 GURL url_;
850 }; 877 };
851 878
852 class QuotaManager::DeleteOriginInfo 879 class QuotaManager::DeleteOriginInfo
853 : public QuotaManager::DatabaseTaskBase { 880 : public QuotaManager::DatabaseTaskBase {
854 public: 881 public:
855 DeleteOriginInfo( 882 DeleteOriginInfo(
856 QuotaManager* manager, 883 QuotaManager* manager,
857 const GURL& origin, 884 const GURL& origin,
858 StorageType type) 885 StorageType type)
859 : DatabaseTaskBase(manager), 886 : DatabaseTaskBase(manager),
860 origin_(origin), 887 origin_(origin),
861 type_(type) {} 888 type_(type) {}
862 889
863 protected: 890 protected:
891 virtual ~DeleteOriginInfo() {}
892
893 // QuotaThreadTask:
864 virtual void RunOnTargetThread() OVERRIDE { 894 virtual void RunOnTargetThread() OVERRIDE {
865 if (!database()->DeleteOriginInfo(origin_, type_)) { 895 if (!database()->DeleteOriginInfo(origin_, type_)) {
866 set_db_disabled(true); 896 set_db_disabled(true);
867 } 897 }
868 } 898 }
899
900 // DatabaseTaskBase:
869 virtual void DatabaseTaskCompleted() OVERRIDE {} 901 virtual void DatabaseTaskCompleted() OVERRIDE {}
870 902
871 private: 903 private:
872 GURL origin_; 904 GURL origin_;
873 StorageType type_; 905 StorageType type_;
874 }; 906 };
875 907
876 class QuotaManager::InitializeTemporaryOriginsInfoTask 908 class QuotaManager::InitializeTemporaryOriginsInfoTask
877 : public QuotaManager::DatabaseTaskBase { 909 : public QuotaManager::DatabaseTaskBase {
878 public: 910 public:
879 InitializeTemporaryOriginsInfoTask( 911 InitializeTemporaryOriginsInfoTask(
880 QuotaManager* manager, 912 QuotaManager* manager,
881 UsageTracker* temporary_usage_tracker) 913 UsageTracker* temporary_usage_tracker)
882 : DatabaseTaskBase(manager), 914 : DatabaseTaskBase(manager),
883 has_registered_origins_(false) { 915 has_registered_origins_(false) {
884 DCHECK(temporary_usage_tracker); 916 DCHECK(temporary_usage_tracker);
885 temporary_usage_tracker->GetCachedOrigins(&origins_); 917 temporary_usage_tracker->GetCachedOrigins(&origins_);
886 } 918 }
887 919
888 protected: 920 protected:
921 virtual ~InitializeTemporaryOriginsInfoTask() {}
922
923 // QuotaThreadTask:
889 virtual void RunOnTargetThread() OVERRIDE { 924 virtual void RunOnTargetThread() OVERRIDE {
890 if (!database()->IsOriginDatabaseBootstrapped()) { 925 if (!database()->IsOriginDatabaseBootstrapped()) {
891 // Register existing origins with 0 last time access. 926 // Register existing origins with 0 last time access.
892 if (!database()->RegisterInitialOriginInfo( 927 if (!database()->RegisterInitialOriginInfo(
893 origins_, kStorageTypeTemporary)) { 928 origins_, kStorageTypeTemporary)) {
894 set_db_disabled(true); 929 set_db_disabled(true);
895 } else { 930 } else {
896 has_registered_origins_ = true; 931 has_registered_origins_ = true;
897 database()->SetOriginDatabaseBootstrapped(true); 932 database()->SetOriginDatabaseBootstrapped(true);
898 } 933 }
899 } 934 }
900 } 935 }
936
937 // DatabaseTaskBase:
901 virtual void DatabaseTaskCompleted() OVERRIDE { 938 virtual void DatabaseTaskCompleted() OVERRIDE {
902 if (has_registered_origins_) 939 if (has_registered_origins_)
903 manager()->StartEviction(); 940 manager()->StartEviction();
904 } 941 }
905 942
906 private: 943 private:
907 std::set<GURL> origins_; 944 std::set<GURL> origins_;
908 bool has_registered_origins_; 945 bool has_registered_origins_;
909 }; 946 };
910 947
911 class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask { 948 class QuotaManager::AvailableSpaceQueryTask : public QuotaThreadTask {
912 public: 949 public:
913 AvailableSpaceQueryTask( 950 AvailableSpaceQueryTask(
914 QuotaManager* manager, 951 QuotaManager* manager,
915 const AvailableSpaceCallback& callback) 952 const AvailableSpaceCallback& callback)
916 : QuotaThreadTask(manager, manager->db_thread_), 953 : QuotaThreadTask(manager, manager->db_thread_),
917 profile_path_(manager->profile_path_), 954 profile_path_(manager->profile_path_),
918 space_(-1), 955 space_(-1),
919 callback_(callback) { 956 callback_(callback) {
920 } 957 }
958
959 protected:
921 virtual ~AvailableSpaceQueryTask() {} 960 virtual ~AvailableSpaceQueryTask() {}
922 961
923 protected: 962 // QuotaThreadTask:
924 virtual void RunOnTargetThread() OVERRIDE { 963 virtual void RunOnTargetThread() OVERRIDE {
925 space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_); 964 space_ = base::SysInfo::AmountOfFreeDiskSpace(profile_path_);
926 } 965 }
927 966
928 virtual void Aborted() OVERRIDE { 967 virtual void Aborted() OVERRIDE {
929 callback_.Reset(); 968 callback_.Reset();
930 } 969 }
931 970
932 virtual void Completed() OVERRIDE { 971 virtual void Completed() OVERRIDE {
933 callback_.Run(kQuotaStatusOk, space_); 972 callback_.Run(kQuotaStatusOk, space_);
(...skipping 12 matching lines...) Expand all
946 QuotaManager* manager, 985 QuotaManager* manager,
947 const GURL& origin, 986 const GURL& origin,
948 StorageType type, 987 StorageType type,
949 base::Time accessed_time) 988 base::Time accessed_time)
950 : DatabaseTaskBase(manager), 989 : DatabaseTaskBase(manager),
951 origin_(origin), 990 origin_(origin),
952 type_(type), 991 type_(type),
953 accessed_time_(accessed_time) {} 992 accessed_time_(accessed_time) {}
954 993
955 protected: 994 protected:
995 virtual ~UpdateAccessTimeTask() {}
996
997 // QuotaThreadTask:
956 virtual void RunOnTargetThread() OVERRIDE { 998 virtual void RunOnTargetThread() OVERRIDE {
957 if (!database()->SetOriginLastAccessTime(origin_, type_, accessed_time_)) { 999 if (!database()->SetOriginLastAccessTime(origin_, type_, accessed_time_)) {
958 set_db_disabled(true); 1000 set_db_disabled(true);
959 } 1001 }
960 } 1002 }
1003
1004 // DatabaseTaskBase:
961 virtual void DatabaseTaskCompleted() OVERRIDE {} 1005 virtual void DatabaseTaskCompleted() OVERRIDE {}
962 1006
963 private: 1007 private:
964 GURL origin_; 1008 GURL origin_;
965 StorageType type_; 1009 StorageType type_;
966 base::Time accessed_time_; 1010 base::Time accessed_time_;
967 }; 1011 };
968 1012
969 class QuotaManager::UpdateModifiedTimeTask 1013 class QuotaManager::UpdateModifiedTimeTask
970 : public QuotaManager::DatabaseTaskBase { 1014 : public QuotaManager::DatabaseTaskBase {
971 public: 1015 public:
972 UpdateModifiedTimeTask( 1016 UpdateModifiedTimeTask(
973 QuotaManager* manager, 1017 QuotaManager* manager,
974 const GURL& origin, 1018 const GURL& origin,
975 StorageType type, 1019 StorageType type,
976 base::Time modified_time) 1020 base::Time modified_time)
977 : DatabaseTaskBase(manager), 1021 : DatabaseTaskBase(manager),
978 origin_(origin), 1022 origin_(origin),
979 type_(type), 1023 type_(type),
980 modified_time_(modified_time) {} 1024 modified_time_(modified_time) {}
981 1025
982 protected: 1026 protected:
1027 virtual ~UpdateModifiedTimeTask() {}
1028
1029 // QuotaThreadTask:
983 virtual void RunOnTargetThread() OVERRIDE { 1030 virtual void RunOnTargetThread() OVERRIDE {
984 if (!database()->SetOriginLastModifiedTime( 1031 if (!database()->SetOriginLastModifiedTime(
985 origin_, type_, modified_time_)) { 1032 origin_, type_, modified_time_)) {
986 set_db_disabled(true); 1033 set_db_disabled(true);
987 } 1034 }
988 } 1035 }
1036
1037 // DatabaseTaskBase:
989 virtual void DatabaseTaskCompleted() OVERRIDE {} 1038 virtual void DatabaseTaskCompleted() OVERRIDE {}
990 1039
991 private: 1040 private:
992 GURL origin_; 1041 GURL origin_;
993 StorageType type_; 1042 StorageType type_;
994 base::Time modified_time_; 1043 base::Time modified_time_;
995 }; 1044 };
996 1045
997 class QuotaManager::GetModifiedSinceTask 1046 class QuotaManager::GetModifiedSinceTask
998 : public QuotaManager::DatabaseTaskBase { 1047 : public QuotaManager::DatabaseTaskBase {
999 public: 1048 public:
1000 GetModifiedSinceTask( 1049 GetModifiedSinceTask(
1001 QuotaManager* manager, 1050 QuotaManager* manager,
1002 StorageType type, 1051 StorageType type,
1003 base::Time modified_since, 1052 base::Time modified_since,
1004 GetOriginsCallback callback) 1053 GetOriginsCallback callback)
1005 : DatabaseTaskBase(manager), 1054 : DatabaseTaskBase(manager),
1006 type_(type), 1055 type_(type),
1007 modified_since_(modified_since), 1056 modified_since_(modified_since),
1008 callback_(callback) {} 1057 callback_(callback) {}
1009 1058
1010 protected: 1059 protected:
1060 virtual ~GetModifiedSinceTask() {}
1061
1062 // QuotaThreadTask:
1011 virtual void RunOnTargetThread() OVERRIDE { 1063 virtual void RunOnTargetThread() OVERRIDE {
1012 if (!database()->GetOriginsModifiedSince( 1064 if (!database()->GetOriginsModifiedSince(
1013 type_, &origins_, modified_since_)) { 1065 type_, &origins_, modified_since_)) {
1014 set_db_disabled(true); 1066 set_db_disabled(true);
1015 } 1067 }
1016 } 1068 }
1017 1069
1018 virtual void DatabaseTaskCompleted() OVERRIDE {
1019 callback_.Run(origins_, type_);
1020 }
1021
1022 virtual void Aborted() OVERRIDE { 1070 virtual void Aborted() OVERRIDE {
1023 callback_.Run(std::set<GURL>(), type_); 1071 callback_.Run(std::set<GURL>(), type_);
1024 } 1072 }
1025 1073
1074 // DatabaseTaskBase:
1075 virtual void DatabaseTaskCompleted() OVERRIDE {
1076 callback_.Run(origins_, type_);
1077 }
1078
1026 private: 1079 private:
1027 StorageType type_; 1080 StorageType type_;
1028 base::Time modified_since_; 1081 base::Time modified_since_;
1029 std::set<GURL> origins_; 1082 std::set<GURL> origins_;
1030 GetOriginsCallback callback_; 1083 GetOriginsCallback callback_;
1031 }; 1084 };
1032 1085
1033 class QuotaManager::DumpQuotaTableTask 1086 class QuotaManager::DumpQuotaTableTask
1034 : public QuotaManager::DatabaseTaskBase { 1087 : public QuotaManager::DatabaseTaskBase {
1035 private: 1088 private:
1036 typedef QuotaManager::DumpQuotaTableTask self_type; 1089 typedef QuotaManager::DumpQuotaTableTask self_type;
1037 typedef QuotaManager::DumpQuotaTableCallback Callback; 1090 typedef QuotaManager::DumpQuotaTableCallback Callback;
1038 typedef QuotaManager::QuotaTableEntry TableEntry; 1091 typedef QuotaManager::QuotaTableEntry TableEntry;
1039 typedef QuotaManager::QuotaTableEntries TableEntries; 1092 typedef QuotaManager::QuotaTableEntries TableEntries;
1040 typedef QuotaDatabase::QuotaTableCallback TableCallback; 1093 typedef QuotaDatabase::QuotaTableCallback TableCallback;
1041 1094
1042 public: 1095 public:
1043 DumpQuotaTableTask( 1096 DumpQuotaTableTask(
1044 QuotaManager* manager, 1097 QuotaManager* manager,
1045 const Callback& callback) 1098 const Callback& callback)
1046 : DatabaseTaskBase(manager), 1099 : DatabaseTaskBase(manager),
1047 callback_(callback) { 1100 callback_(callback) {
1048 } 1101 }
1102
1049 protected: 1103 protected:
1104 virtual ~DumpQuotaTableTask() {}
1105
1106 // QuotaThreadTask:
1050 virtual void RunOnTargetThread() OVERRIDE { 1107 virtual void RunOnTargetThread() OVERRIDE {
1051 if (!database()->DumpQuotaTable( 1108 if (!database()->DumpQuotaTable(
1052 new TableCallback( 1109 new TableCallback(
1053 base::Bind(&self_type::AppendEntry, this)))) 1110 base::Bind(&self_type::AppendEntry, this))))
1054 set_db_disabled(true); 1111 set_db_disabled(true);
1055 } 1112 }
1056 1113
1057 virtual void Aborted() OVERRIDE { 1114 virtual void Aborted() OVERRIDE {
1058 callback_.Run(TableEntries()); 1115 callback_.Run(TableEntries());
1059 } 1116 }
1060 1117
1118 // DatabaseTaskBase:
1061 virtual void DatabaseTaskCompleted() OVERRIDE { 1119 virtual void DatabaseTaskCompleted() OVERRIDE {
1062 callback_.Run(entries_); 1120 callback_.Run(entries_);
1063 } 1121 }
1064 1122
1065 private: 1123 private:
1066 bool AppendEntry(const TableEntry& entry) { 1124 bool AppendEntry(const TableEntry& entry) {
1067 entries_.push_back(entry); 1125 entries_.push_back(entry);
1068 return true; 1126 return true;
1069 } 1127 }
1070 1128
(...skipping 10 matching lines...) Expand all
1081 typedef QuotaManager::OriginInfoTableEntries TableEntries; 1139 typedef QuotaManager::OriginInfoTableEntries TableEntries;
1082 typedef QuotaDatabase::OriginInfoTableCallback TableCallback; 1140 typedef QuotaDatabase::OriginInfoTableCallback TableCallback;
1083 1141
1084 public: 1142 public:
1085 DumpOriginInfoTableTask( 1143 DumpOriginInfoTableTask(
1086 QuotaManager* manager, 1144 QuotaManager* manager,
1087 const Callback& callback) 1145 const Callback& callback)
1088 : DatabaseTaskBase(manager), 1146 : DatabaseTaskBase(manager),
1089 callback_(callback) { 1147 callback_(callback) {
1090 } 1148 }
1149
1091 protected: 1150 protected:
1151 virtual ~DumpOriginInfoTableTask() {}
1152
1153 // QuotaThreadTask:
1092 virtual void RunOnTargetThread() OVERRIDE { 1154 virtual void RunOnTargetThread() OVERRIDE {
1093 if (!database()->DumpOriginInfoTable( 1155 if (!database()->DumpOriginInfoTable(
1094 new TableCallback( 1156 new TableCallback(
1095 base::Bind(&self_type::AppendEntry, this)))) 1157 base::Bind(&self_type::AppendEntry, this))))
1096 set_db_disabled(true); 1158 set_db_disabled(true);
1097 } 1159 }
1098 1160
1099 virtual void Aborted() OVERRIDE { 1161 virtual void Aborted() OVERRIDE {
1100 callback_.Run(TableEntries()); 1162 callback_.Run(TableEntries());
1101 } 1163 }
1102 1164
1165 // DatabaseTaskBase:
1103 virtual void DatabaseTaskCompleted() OVERRIDE { 1166 virtual void DatabaseTaskCompleted() OVERRIDE {
1104 callback_.Run(entries_); 1167 callback_.Run(entries_);
1105 } 1168 }
1106 1169
1107 private: 1170 private:
1108 bool AppendEntry(const TableEntry& entry) { 1171 bool AppendEntry(const TableEntry& entry) {
1109 entries_.push_back(entry); 1172 entries_.push_back(entry);
1110 return true; 1173 return true;
1111 } 1174 }
1112 1175
(...skipping 16 matching lines...) Expand all
1129 eviction_disabled_(false), 1192 eviction_disabled_(false),
1130 io_thread_(io_thread), 1193 io_thread_(io_thread),
1131 db_thread_(db_thread), 1194 db_thread_(db_thread),
1132 temporary_quota_initialized_(false), 1195 temporary_quota_initialized_(false),
1133 temporary_quota_override_(-1), 1196 temporary_quota_override_(-1),
1134 desired_available_space_(-1), 1197 desired_available_space_(-1),
1135 special_storage_policy_(special_storage_policy), 1198 special_storage_policy_(special_storage_policy),
1136 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { 1199 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
1137 } 1200 }
1138 1201
1139 QuotaManager::~QuotaManager() {
1140 proxy_->manager_ = NULL;
1141 std::for_each(clients_.begin(), clients_.end(),
1142 std::mem_fun(&QuotaClient::OnQuotaManagerDestroyed));
1143 if (database_.get())
1144 db_thread_->DeleteSoon(FROM_HERE, database_.release());
1145 }
1146
1147 void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) { 1202 void QuotaManager::GetUsageInfo(const GetUsageInfoCallback& callback) {
1148 LazyInitialize(); 1203 LazyInitialize();
1149 GetUsageInfoTask* get_usage_info = new GetUsageInfoTask(this, callback); 1204 GetUsageInfoTask* get_usage_info = new GetUsageInfoTask(this, callback);
1150 get_usage_info->Start(); 1205 get_usage_info->Start();
1151 } 1206 }
1152 1207
1153 void QuotaManager::GetUsageAndQuota( 1208 void QuotaManager::GetUsageAndQuota(
1154 const GURL& origin, StorageType type, 1209 const GURL& origin, StorageType type,
1155 const GetUsageAndQuotaCallback& callback) { 1210 const GetUsageAndQuotaCallback& callback) {
1156 GetUsageAndQuotaInternal(origin, type, false /* global */, 1211 GetUsageAndQuotaInternal(origin, type, false /* global */,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1267 } 1322 }
1268 1323
1269 void QuotaManager::GetOriginsModifiedSince(StorageType type, 1324 void QuotaManager::GetOriginsModifiedSince(StorageType type,
1270 base::Time modified_since, 1325 base::Time modified_since,
1271 const GetOriginsCallback& callback) { 1326 const GetOriginsCallback& callback) {
1272 LazyInitialize(); 1327 LazyInitialize();
1273 make_scoped_refptr(new GetModifiedSinceTask( 1328 make_scoped_refptr(new GetModifiedSinceTask(
1274 this, type, modified_since, callback))->Start(); 1329 this, type, modified_since, callback))->Start();
1275 } 1330 }
1276 1331
1332 QuotaManager::~QuotaManager() {
1333 proxy_->manager_ = NULL;
1334 std::for_each(clients_.begin(), clients_.end(),
1335 std::mem_fun(&QuotaClient::OnQuotaManagerDestroyed));
1336 if (database_.get())
1337 db_thread_->DeleteSoon(FROM_HERE, database_.release());
1338 }
1339
1277 void QuotaManager::LazyInitialize() { 1340 void QuotaManager::LazyInitialize() {
1278 DCHECK(io_thread_->BelongsToCurrentThread()); 1341 DCHECK(io_thread_->BelongsToCurrentThread());
1279 if (database_.get()) { 1342 if (database_.get()) {
1280 // Initialization seems to be done already. 1343 // Initialization seems to be done already.
1281 return; 1344 return;
1282 } 1345 }
1283 1346
1284 // Use an empty path to open an in-memory only databse for incognito. 1347 // Use an empty path to open an in-memory only databse for incognito.
1285 database_.reset(new QuotaDatabase(is_incognito_ ? FilePath() : 1348 database_.reset(new QuotaDatabase(is_incognito_ ? FilePath() :
1286 profile_path_.AppendASCII(kDatabaseName))); 1349 profile_path_.AppendASCII(kDatabaseName)));
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1761 1824
1762 QuotaManagerProxy::QuotaManagerProxy( 1825 QuotaManagerProxy::QuotaManagerProxy(
1763 QuotaManager* manager, base::MessageLoopProxy* io_thread) 1826 QuotaManager* manager, base::MessageLoopProxy* io_thread)
1764 : manager_(manager), io_thread_(io_thread) { 1827 : manager_(manager), io_thread_(io_thread) {
1765 } 1828 }
1766 1829
1767 QuotaManagerProxy::~QuotaManagerProxy() { 1830 QuotaManagerProxy::~QuotaManagerProxy() {
1768 } 1831 }
1769 1832
1770 } // namespace quota 1833 } // namespace quota
OLDNEW
« no previous file with comments | « webkit/quota/quota_manager.h ('k') | webkit/support/test_webmessageportchannel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698