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

Side by Side Diff: storage/browser/quota/quota_manager.cc

Issue 1394563002: Add trace to the caller of QuotaManager::GetAvailableSpace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "storage/browser/quota/quota_manager.h" 5 #include "storage/browser/quota/quota_manager.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <functional> 8 #include <functional>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "base/files/file_util.h" 13 #include "base/files/file_util.h"
14 #include "base/metrics/histogram.h" 14 #include "base/metrics/histogram.h"
15 #include "base/profiler/scoped_tracker.h" 15 #include "base/profiler/scoped_tracker.h"
16 #include "base/sequenced_task_runner.h" 16 #include "base/sequenced_task_runner.h"
17 #include "base/single_thread_task_runner.h" 17 #include "base/single_thread_task_runner.h"
18 #include "base/strings/string_number_conversions.h" 18 #include "base/strings/string_number_conversions.h"
19 #include "base/sys_info.h" 19 #include "base/sys_info.h"
20 #include "base/task_runner_util.h" 20 #include "base/task_runner_util.h"
21 #include "base/time/time.h" 21 #include "base/time/time.h"
22 #include "base/trace_event/trace_event.h"
22 #include "net/base/net_util.h" 23 #include "net/base/net_util.h"
23 #include "storage/browser/quota/client_usage_tracker.h" 24 #include "storage/browser/quota/client_usage_tracker.h"
24 #include "storage/browser/quota/quota_manager_proxy.h" 25 #include "storage/browser/quota/quota_manager_proxy.h"
25 #include "storage/browser/quota/quota_temporary_storage_evictor.h" 26 #include "storage/browser/quota/quota_temporary_storage_evictor.h"
26 #include "storage/browser/quota/storage_monitor.h" 27 #include "storage/browser/quota/storage_monitor.h"
27 #include "storage/browser/quota/usage_tracker.h" 28 #include "storage/browser/quota/usage_tracker.h"
28 #include "storage/common/quota/quota_types.h" 29 #include "storage/common/quota/quota_types.h"
29 30
30 #define UMA_HISTOGRAM_MBYTES(name, sample) \ 31 #define UMA_HISTOGRAM_MBYTES(name, sample) \
31 UMA_HISTOGRAM_CUSTOM_COUNTS( \ 32 UMA_HISTOGRAM_CUSTOM_COUNTS( \
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 182
182 bool UpdateModifiedTimeOnDBThread(const GURL& origin, 183 bool UpdateModifiedTimeOnDBThread(const GURL& origin,
183 StorageType type, 184 StorageType type,
184 base::Time modified_time, 185 base::Time modified_time,
185 QuotaDatabase* database) { 186 QuotaDatabase* database) {
186 DCHECK(database); 187 DCHECK(database);
187 return database->SetOriginLastModifiedTime(origin, type, modified_time); 188 return database->SetOriginLastModifiedTime(origin, type, modified_time);
188 } 189 }
189 190
190 int64 CallSystemGetAmountOfFreeDiskSpace(const base::FilePath& profile_path) { 191 int64 CallSystemGetAmountOfFreeDiskSpace(const base::FilePath& profile_path) {
192 // crbug.com/349708
193 TRACE_EVENT0("io", "QuotaManager::GetUsageAndQuotaForEviction");
194
191 // Ensure the profile path exists. 195 // Ensure the profile path exists.
192 if (!base::CreateDirectory(profile_path)) { 196 if (!base::CreateDirectory(profile_path)) {
193 LOG(WARNING) << "Create directory failed for path" << profile_path.value(); 197 LOG(WARNING) << "Create directory failed for path" << profile_path.value();
194 return 0; 198 return 0;
195 } 199 }
196 return base::SysInfo::AmountOfFreeDiskSpace(profile_path); 200 return base::SysInfo::AmountOfFreeDiskSpace(profile_path);
197 } 201 }
198 202
199 int64 CalculateTemporaryGlobalQuota(int64 global_limited_usage, 203 int64 CalculateTemporaryGlobalQuota(int64 global_limited_usage,
200 int64 available_space) { 204 int64 available_space) {
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 } 407 }
404 408
405 void DidGetQuota(QuotaStatusCode status, int64 quota) { 409 void DidGetQuota(QuotaStatusCode status, int64 quota) {
406 if (status_ == kQuotaStatusUnknown || status_ == kQuotaStatusOk) 410 if (status_ == kQuotaStatusUnknown || status_ == kQuotaStatusOk)
407 status_ = status; 411 status_ = status;
408 usage_and_quota_.quota = quota; 412 usage_and_quota_.quota = quota;
409 CheckCompleted(); 413 CheckCompleted();
410 } 414 }
411 415
412 void DidGetAvailableSpace(QuotaStatusCode status, int64 space) { 416 void DidGetAvailableSpace(QuotaStatusCode status, int64 space) {
417 // crbug.com/349708
418 TRACE_EVENT0(
419 "io", "UsageAndQuotaCallbackDispatcher::DidGetAvailableSpace");
420
413 DCHECK_GE(space, 0); 421 DCHECK_GE(space, 0);
414 if (status_ == kQuotaStatusUnknown || status_ == kQuotaStatusOk) 422 if (status_ == kQuotaStatusUnknown || status_ == kQuotaStatusOk)
415 status_ = status; 423 status_ = status;
416 usage_and_quota_.available_disk_space = space; 424 usage_and_quota_.available_disk_space = space;
417 CheckCompleted(); 425 CheckCompleted();
418 } 426 }
419 427
420 void Run() override { 428 void Run() override {
421 // We initialize waiting_callbacks to 1 so that we won't run 429 // We initialize waiting_callbacks to 1 so that we won't run
422 // the completion callback until here even some of the callbacks 430 // the completion callback until here even some of the callbacks
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 } 961 }
954 962
955 HostDataDeleter* deleter = 963 HostDataDeleter* deleter =
956 new HostDataDeleter(this, host, type, quota_client_mask, callback); 964 new HostDataDeleter(this, host, type, quota_client_mask, callback);
957 deleter->Start(); 965 deleter->Start();
958 } 966 }
959 967
960 void QuotaManager::GetAvailableSpace(const AvailableSpaceCallback& callback) { 968 void QuotaManager::GetAvailableSpace(const AvailableSpaceCallback& callback) {
961 if (!available_space_callbacks_.Add(callback)) 969 if (!available_space_callbacks_.Add(callback))
962 return; 970 return;
971 // crbug.com/349708
972 TRACE_EVENT0("io", "QuotaManager::GetAvailableSpace");
963 973
964 PostTaskAndReplyWithResult(db_thread_.get(), 974 PostTaskAndReplyWithResult(db_thread_.get(),
965 FROM_HERE, 975 FROM_HERE,
966 base::Bind(get_disk_space_fn_, profile_path_), 976 base::Bind(get_disk_space_fn_, profile_path_),
967 base::Bind(&QuotaManager::DidGetAvailableSpace, 977 base::Bind(&QuotaManager::DidGetAvailableSpace,
968 weak_factory_.GetWeakPtr())); 978 weak_factory_.GetWeakPtr()));
969 } 979 }
970 980
971 void QuotaManager::GetTemporaryGlobalQuota(const QuotaCallback& callback) { 981 void QuotaManager::GetTemporaryGlobalQuota(const QuotaCallback& callback) {
972 LazyInitialize(); 982 LazyInitialize();
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after
1455 eviction_context_.evicted_type = type; 1465 eviction_context_.evicted_type = type;
1456 eviction_context_.evict_origin_data_callback = callback; 1466 eviction_context_.evict_origin_data_callback = callback;
1457 1467
1458 DeleteOriginData(origin, type, QuotaClient::kAllClientsMask, 1468 DeleteOriginData(origin, type, QuotaClient::kAllClientsMask,
1459 base::Bind(&QuotaManager::DidOriginDataEvicted, 1469 base::Bind(&QuotaManager::DidOriginDataEvicted,
1460 weak_factory_.GetWeakPtr())); 1470 weak_factory_.GetWeakPtr()));
1461 } 1471 }
1462 1472
1463 void QuotaManager::GetUsageAndQuotaForEviction( 1473 void QuotaManager::GetUsageAndQuotaForEviction(
1464 const UsageAndQuotaCallback& callback) { 1474 const UsageAndQuotaCallback& callback) {
1475 // crbug.com/349708
1476 TRACE_EVENT0("io", "QuotaManager::GetUsageAndQuotaForEviction");
michaeln 2015/10/09 19:00:05 fyi: i think many of the quota systems async apis
oshima 2015/10/09 21:07:00 We can tell it from the stack in the trace. I did
1477
1465 DCHECK(io_thread_->BelongsToCurrentThread()); 1478 DCHECK(io_thread_->BelongsToCurrentThread());
1466 LazyInitialize(); 1479 LazyInitialize();
1467 1480
1468 UsageAndQuotaCallbackDispatcher* dispatcher = 1481 UsageAndQuotaCallbackDispatcher* dispatcher =
1469 new UsageAndQuotaCallbackDispatcher(this); 1482 new UsageAndQuotaCallbackDispatcher(this);
1470 GetUsageTracker(kStorageTypeTemporary) 1483 GetUsageTracker(kStorageTypeTemporary)
1471 ->GetGlobalLimitedUsage(dispatcher->GetGlobalLimitedUsageCallback()); 1484 ->GetGlobalLimitedUsage(dispatcher->GetGlobalLimitedUsageCallback());
1472 GetTemporaryGlobalQuota(dispatcher->GetQuotaCallback()); 1485 GetTemporaryGlobalQuota(dispatcher->GetQuotaCallback());
1473 GetAvailableSpace(dispatcher->GetAvailableSpaceCallback()); 1486 GetAvailableSpace(dispatcher->GetAvailableSpaceCallback());
1474 dispatcher->WaitForResults(callback); 1487 dispatcher->WaitForResults(callback);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1595 weak_factory_.GetWeakPtr())); 1608 weak_factory_.GetWeakPtr()));
1596 } 1609 }
1597 1610
1598 void QuotaManager::DidInitializeTemporaryOriginsInfo(bool success) { 1611 void QuotaManager::DidInitializeTemporaryOriginsInfo(bool success) {
1599 DidDatabaseWork(success); 1612 DidDatabaseWork(success);
1600 if (success) 1613 if (success)
1601 StartEviction(); 1614 StartEviction();
1602 } 1615 }
1603 1616
1604 void QuotaManager::DidGetAvailableSpace(int64 space) { 1617 void QuotaManager::DidGetAvailableSpace(int64 space) {
1618 // crbug.com/349708
1619 TRACE_EVENT0("io", "QuotaManager::DidGetAvailableSpace");
1620
1605 available_space_callbacks_.Run(kQuotaStatusOk, space); 1621 available_space_callbacks_.Run(kQuotaStatusOk, space);
1606 } 1622 }
1607 1623
1608 void QuotaManager::DidDatabaseWork(bool success) { 1624 void QuotaManager::DidDatabaseWork(bool success) {
1609 db_disabled_ = !success; 1625 db_disabled_ = !success;
1610 } 1626 }
1611 1627
1612 void QuotaManager::DeleteOnCorrectThread() const { 1628 void QuotaManager::DeleteOnCorrectThread() const {
1613 if (!io_thread_->BelongsToCurrentThread() && 1629 if (!io_thread_->BelongsToCurrentThread() &&
1614 io_thread_->DeleteSoon(FROM_HERE, this)) { 1630 io_thread_->DeleteSoon(FROM_HERE, this)) {
(...skipping 10 matching lines...) Expand all
1625 // |database_|, therefore we can be sure that database_ is alive when this 1641 // |database_|, therefore we can be sure that database_ is alive when this
1626 // task runs. 1642 // task runs.
1627 base::PostTaskAndReplyWithResult( 1643 base::PostTaskAndReplyWithResult(
1628 db_thread_.get(), 1644 db_thread_.get(),
1629 from_here, 1645 from_here,
1630 base::Bind(task, base::Unretained(database_.get())), 1646 base::Bind(task, base::Unretained(database_.get())),
1631 reply); 1647 reply);
1632 } 1648 }
1633 1649
1634 } // namespace storage 1650 } // namespace storage
OLDNEW
« no previous file with comments | « storage/browser/fileapi/sandbox_file_stream_writer.cc ('k') | storage/browser/quota/quota_manager_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698