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

Side by Side Diff: chrome/browser/extensions/api/bookmarks/bookmarks_api.cc

Issue 411053002: Remove bookmarks API client-side write operations limits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: 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
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 <algorithm> 5 #include <algorithm>
6 6
7 #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h" 7 #include "chrome/browser/extensions/api/bookmarks/bookmarks_api.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 buckets_[id] = b; 817 buckets_[id] = b;
818 } 818 }
819 return b; 819 return b;
820 } 820 }
821 private: 821 private:
822 std::map<BucketIdType, Bucket*> buckets_; 822 std::map<BucketIdType, Bucket*> buckets_;
823 }; 823 };
824 824
825 // Mapper for 'bookmarks.create'. Maps "same input to bookmarks.create" to a 825 // Mapper for 'bookmarks.create'. Maps "same input to bookmarks.create" to a
826 // unique bucket. 826 // unique bucket.
827 class CreateBookmarkBucketMapper : public BookmarkBucketMapper<std::string> { 827 class CreateBookmarkBucketMapper : public BookmarkBucketMapper<std::string> {
not at google - send to devlin 2014/07/23 19:15:22 you can delete this code too, and a bunch of the t
Mike Wittman 2014/07/23 19:42:53 Done.
828 public: 828 public:
829 explicit CreateBookmarkBucketMapper(BrowserContext* context) 829 explicit CreateBookmarkBucketMapper(BrowserContext* context)
830 : browser_context_(context) {} 830 : browser_context_(context) {}
831 // TODO(tim): This should share code with BookmarksCreateFunction::RunOnReady, 831 // TODO(tim): This should share code with BookmarksCreateFunction::RunOnReady,
832 // but I can't figure out a good way to do that with all the macros. 832 // but I can't figure out a good way to do that with all the macros.
833 virtual void GetBucketsForArgs(const base::ListValue* args, 833 virtual void GetBucketsForArgs(const base::ListValue* args,
834 BucketList* buckets) OVERRIDE { 834 BucketList* buckets) OVERRIDE {
835 const base::DictionaryValue* json; 835 const base::DictionaryValue* json;
836 if (!args->GetDictionary(0, &json)) 836 if (!args->GetDictionary(0, &json))
837 return; 837 return;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 BucketList* buckets) { 914 BucketList* buckets) {
915 IdList ids; 915 IdList ids;
916 bool invalid_id = false; 916 bool invalid_id = false;
917 if (!FunctionType::ExtractIds(args, &ids, &invalid_id) || invalid_id) 917 if (!FunctionType::ExtractIds(args, &ids, &invalid_id) || invalid_id)
918 return; 918 return;
919 for (IdList::iterator it = ids.begin(); it != ids.end(); ++it) 919 for (IdList::iterator it = ids.begin(); it != ids.end(); ++it)
920 buckets->push_back(GetBucket(*it)); 920 buckets->push_back(GetBucket(*it));
921 } 921 }
922 }; 922 };
923 923
924 // Builds heuristics for all BookmarkFunctions using specialized BucketMappers.
925 class BookmarksQuotaLimitFactory {
926 public:
927 // For id-based bookmark functions.
928 template <class FunctionType>
929 static void Build(QuotaLimitHeuristics* heuristics) {
930 BuildWithMappers(heuristics, new BookmarkIdMapper<FunctionType>(),
931 new BookmarkIdMapper<FunctionType>());
932 }
933
934 // For bookmarks.create.
935 static void BuildForCreate(QuotaLimitHeuristics* heuristics,
936 BrowserContext* context) {
937 BuildWithMappers(heuristics,
938 new CreateBookmarkBucketMapper(context),
939 new CreateBookmarkBucketMapper(context));
940 }
941
942 // For bookmarks.remove.
943 static void BuildForRemove(QuotaLimitHeuristics* heuristics,
944 BrowserContext* context) {
945 BuildWithMappers(heuristics,
946 new RemoveBookmarksBucketMapper(context),
947 new RemoveBookmarksBucketMapper(context));
948 }
949
950 private:
951 static void BuildWithMappers(QuotaLimitHeuristics* heuristics,
952 BucketMapper* short_mapper, BucketMapper* long_mapper) {
953 const Config kSustainedLimitConfig = {
954 // See bookmarks.json for current value.
955 bookmarks::MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE,
956 TimeDelta::FromMinutes(1)
957 };
958 heuristics->push_back(new SustainedLimit(
959 TimeDelta::FromMinutes(10),
960 kSustainedLimitConfig,
961 short_mapper,
962 "MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE"));
963
964 const Config kTimedLimitConfig = {
965 // See bookmarks.json for current value.
966 bookmarks::MAX_WRITE_OPERATIONS_PER_HOUR,
967 TimeDelta::FromHours(1)
968 };
969 heuristics->push_back(new TimedLimit(
970 kTimedLimitConfig,
971 long_mapper,
972 "MAX_WRITE_OPERATIONS_PER_HOUR"));
973 }
974
975 DISALLOW_IMPLICIT_CONSTRUCTORS(BookmarksQuotaLimitFactory);
976 };
977
978 // And finally, building the individual heuristics for each function.
979 void BookmarksRemoveFunction::GetQuotaLimitHeuristics(
980 QuotaLimitHeuristics* heuristics) const {
981 BookmarksQuotaLimitFactory::BuildForRemove(heuristics, GetProfile());
982 }
983
984 void BookmarksMoveFunction::GetQuotaLimitHeuristics(
985 QuotaLimitHeuristics* heuristics) const {
986 BookmarksQuotaLimitFactory::Build<BookmarksMoveFunction>(heuristics);
987 }
988
989 void BookmarksUpdateFunction::GetQuotaLimitHeuristics(
990 QuotaLimitHeuristics* heuristics) const {
991 BookmarksQuotaLimitFactory::Build<BookmarksUpdateFunction>(heuristics);
992 }
993
994 void BookmarksCreateFunction::GetQuotaLimitHeuristics(
995 QuotaLimitHeuristics* heuristics) const {
996 BookmarksQuotaLimitFactory::BuildForCreate(heuristics, GetProfile());
997 }
998
999 BookmarksIOFunction::BookmarksIOFunction() {} 924 BookmarksIOFunction::BookmarksIOFunction() {}
1000 925
1001 BookmarksIOFunction::~BookmarksIOFunction() { 926 BookmarksIOFunction::~BookmarksIOFunction() {
1002 // There may be pending file dialogs, we need to tell them that we've gone 927 // There may be pending file dialogs, we need to tell them that we've gone
1003 // away so they don't try and call back to us. 928 // away so they don't try and call back to us.
1004 if (select_file_dialog_.get()) 929 if (select_file_dialog_.get())
1005 select_file_dialog_->ListenerDestroyed(); 930 select_file_dialog_->ListenerDestroyed();
1006 } 931 }
1007 932
1008 void BookmarksIOFunction::SelectFile(ui::SelectFileDialog::Type type) { 933 void BookmarksIOFunction::SelectFile(ui::SelectFileDialog::Type type) {
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 void BookmarksExportFunction::FileSelected(const base::FilePath& path, 1035 void BookmarksExportFunction::FileSelected(const base::FilePath& path,
1111 int index, 1036 int index,
1112 void* params) { 1037 void* params) {
1113 // TODO(jgreenwald): remove ifdef once extensions are no longer built on 1038 // TODO(jgreenwald): remove ifdef once extensions are no longer built on
1114 // Android. 1039 // Android.
1115 bookmark_html_writer::WriteBookmarks(GetProfile(), path, NULL); 1040 bookmark_html_writer::WriteBookmarks(GetProfile(), path, NULL);
1116 Release(); // Balanced in BookmarksIOFunction::SelectFile() 1041 Release(); // Balanced in BookmarksIOFunction::SelectFile()
1117 } 1042 }
1118 1043
1119 } // namespace extensions 1044 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698