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 @@
#include "base/containers/flat_map.h"
#include "base/strings/string_piece.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/clock.h"
#include "base/time/time.h"
#include "chromeos/printing/printer_config_cache.h"
......@@ -37,15 +38,19 @@ void FakePrinterConfigCache::Fetch(const std::string& key,
base::TimeDelta unused_expiration,
PrinterConfigCache::FetchCallback cb) {
if (contents_.contains(key)) {
std::move(cb).Run(PrinterConfigCache::FetchResult::Success(
key, contents_.at(key), base::Time()));
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(cb),
PrinterConfigCache::FetchResult::Success(
key, contents_.at(key), base::Time())));
return;
} else if (fetch_requests_to_ignore_.contains(key)) {
// Caller has directed us, by way of DiscardFetchRequestFor(), to
// _not_ respond to this Fetch().
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) {
......
......@@ -17,6 +17,7 @@
#include "base/strings/strcat.h"
#include "base/strings/string_piece.h"
#include "base/task/post_task.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/time/clock.h"
#include "base/time/time.h"
#include "net/base/load_flags.h"
......@@ -96,8 +97,10 @@ class PrinterConfigCacheImpl : public PrinterConfigCache {
if (finding != cache_.end()) {
const Entry& entry = finding->second;
if (entry.time_of_fetch + expiration > clock_->Now()) {
std::move(cb).Run(
FetchResult::Success(key, entry.contents, entry.time_of_fetch));
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(cb), FetchResult::Success(
key, entry.contents,
entry.time_of_fetch)));
return;
}
}
......@@ -177,11 +180,15 @@ class PrinterConfigCacheImpl : public PrinterConfigCache {
// (if extant) or retain no entry at all (if not).
const Entry newly_inserted = Entry(*contents, clock_->Now());
cache_.insert_or_assign(context->key, newly_inserted);
std::move(context->cb)
.Run(FetchResult::Success(context->key, newly_inserted.contents,
newly_inserted.time_of_fetch));
base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(std::move(context->cb),
FetchResult::Success(
context->key, newly_inserted.contents,
newly_inserted.time_of_fetch)));
} 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();
......
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