Commit 7a9571e4 authored by Kalvin Lee's avatar Kalvin Lee Committed by Commit Bot

PpdProvider v3: prefer to post tasks

This change modifies the PrinterConfigCache and FakePrinterConfigCache
classes to post callback tasks rather than Run()ning them synchronously.

Bug: chromium:888189
Test: chromeos_unittests --gtest_filter='PrinterConfigCacheTest.*'
Test: chromeos_unittests --gtest_filter='PpdMetadataManagerTest.*'
Change-Id: I4a42c855eb49b5eb58f0831141ddfbeae373d676
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2303860
Commit-Queue: Kalvin Lee <kdlee@chromium.org>
Reviewed-by: default avatarSean Kau <skau@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791539}
parent 9bf3843a
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "base/containers/flat_map.h" #include "base/containers/flat_map.h"
#include "base/strings/string_piece.h" #include "base/strings/string_piece.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/clock.h" #include "base/time/clock.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chromeos/printing/printer_config_cache.h" #include "chromeos/printing/printer_config_cache.h"
...@@ -37,15 +38,19 @@ void FakePrinterConfigCache::Fetch(const std::string& key, ...@@ -37,15 +38,19 @@ void FakePrinterConfigCache::Fetch(const std::string& key,
base::TimeDelta unused_expiration, base::TimeDelta unused_expiration,
PrinterConfigCache::FetchCallback cb) { PrinterConfigCache::FetchCallback cb) {
if (contents_.contains(key)) { if (contents_.contains(key)) {
std::move(cb).Run(PrinterConfigCache::FetchResult::Success( base::SequencedTaskRunnerHandle::Get()->PostTask(
key, contents_.at(key), base::Time())); FROM_HERE, base::BindOnce(std::move(cb),
PrinterConfigCache::FetchResult::Success(
key, contents_.at(key), base::Time())));
return; return;
} else if (fetch_requests_to_ignore_.contains(key)) { } else if (fetch_requests_to_ignore_.contains(key)) {
// Caller has directed us, by way of DiscardFetchRequestFor(), to // Caller has directed us, by way of DiscardFetchRequestFor(), to
// _not_ respond to this Fetch(). // _not_ respond to this Fetch().
return; return;
} }
std::move(cb).Run(PrinterConfigCache::FetchResult::Failure(key)); base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(cb),
PrinterConfigCache::FetchResult::Failure(key)));
} }
void FakePrinterConfigCache::Drop(const std::string& key) { void FakePrinterConfigCache::Drop(const std::string& key) {
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "base/strings/strcat.h" #include "base/strings/strcat.h"
#include "base/strings/string_piece.h" #include "base/strings/string_piece.h"
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/clock.h" #include "base/time/clock.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "net/base/load_flags.h" #include "net/base/load_flags.h"
...@@ -96,8 +97,10 @@ class PrinterConfigCacheImpl : public PrinterConfigCache { ...@@ -96,8 +97,10 @@ class PrinterConfigCacheImpl : public PrinterConfigCache {
if (finding != cache_.end()) { if (finding != cache_.end()) {
const Entry& entry = finding->second; const Entry& entry = finding->second;
if (entry.time_of_fetch + expiration > clock_->Now()) { if (entry.time_of_fetch + expiration > clock_->Now()) {
std::move(cb).Run( base::SequencedTaskRunnerHandle::Get()->PostTask(
FetchResult::Success(key, entry.contents, entry.time_of_fetch)); FROM_HERE, base::BindOnce(std::move(cb), FetchResult::Success(
key, entry.contents,
entry.time_of_fetch)));
return; return;
} }
} }
...@@ -177,11 +180,15 @@ class PrinterConfigCacheImpl : public PrinterConfigCache { ...@@ -177,11 +180,15 @@ class PrinterConfigCacheImpl : public PrinterConfigCache {
// (if extant) or retain no entry at all (if not). // (if extant) or retain no entry at all (if not).
const Entry newly_inserted = Entry(*contents, clock_->Now()); const Entry newly_inserted = Entry(*contents, clock_->Now());
cache_.insert_or_assign(context->key, newly_inserted); cache_.insert_or_assign(context->key, newly_inserted);
std::move(context->cb) base::SequencedTaskRunnerHandle::Get()->PostTask(
.Run(FetchResult::Success(context->key, newly_inserted.contents, FROM_HERE, base::BindOnce(std::move(context->cb),
newly_inserted.time_of_fetch)); FetchResult::Success(
context->key, newly_inserted.contents,
newly_inserted.time_of_fetch)));
} else { } else {
std::move(context->cb).Run(FetchResult::Failure(context->key)); base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(context->cb),
FetchResult::Failure(context->key)));
} }
fetcher_.reset(); fetcher_.reset();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment