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

Unified Diff: chromeos/printing/ppd_cache.h

Issue 2343983004: Add PPDProvider barebones implementation and associated cache skeleton. (Closed)
Patch Set: Initial PPDProvider/PPDCache implementation. Also, add associated unittests. This doesn't plumb th… Created 4 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 side-by-side diff with in-line comments
Download patch
Index: chromeos/printing/ppd_cache.h
diff --git a/chromeos/printing/ppd_cache.h b/chromeos/printing/ppd_cache.h
new file mode 100644
index 0000000000000000000000000000000000000000..909a39b4b8eee3845ffd1662acfaecd7b0e503c3
--- /dev/null
+++ b/chromeos/printing/ppd_cache.h
@@ -0,0 +1,87 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_PRINTING_PPD_CACHE_H_
+#define CHROMEOS_PRINTING_PPD_CACHE_H_
+
+#include <memory>
+#include <string>
+
+#include "base/files/file_path.h"
+#include "base/optional.h"
+#include "chromeos/chromeos_export.h"
+
+namespace chromeos {
+namespace printing {
+
+// PPDCache is manages a cache of locally-stored ppd files. It stores
skau 2016/10/07 16:29:06 typo (is)
Carlson 2016/10/14 19:28:56 Done.
+// its cache in the directory pointed at by
+// PathService::Get(DIR_PRINTER_DRIVERS_CACHE).
+class CHROMEOS_EXPORT PPDCache {
+ public:
+ // Construction-time optional parameters. These should all have defaults that
+ // are sane.
+ struct Options {
+ // Nothing here yet. We may want to add ttl-style options
+ // here eventually.
+ };
+
+ static std::unique_ptr<PPDCache> Create();
+ static std::unique_ptr<PPDCache> Create(const Options& options);
+ virtual ~PPDCache() {}
+
+ // Look for a cached canonical PPD for the given manufacturer/model in the
+ // cache, and return it if it does exist.
+ //
+ // On success, the returned FilePath is guaranteed to remain valid until the
+ // next Store* call.
+ virtual base::Optional<base::FilePath> Find(
+ const std::string& manufacturer,
+ const std::string& model) const = 0;
+
+ // Look for a ppd previously cached with this key using AddLocal. Return
+ // it if it does exist.
+ //
+ // On success, the returned FilePath is guaranteed to remain valid until the
+ // next Store* call.
+ virtual base::Optional<base::FilePath> FindLocal(
+ const std::string& key) const = 0;
skau 2016/10/07 16:29:06 Would this be the appropriate place to document wh
Carlson 2016/10/14 19:28:56 Obsolete
+
+ // Take the contents of a ppd file, store it to the cache, and return the
+ // path to the stored file.
+ //
+ // If this manufacturer-model tuple already exists, the new data will replace
+ // it. Returns nothing on failure-to-store. On failure, cache contents may
+ // be changed, but are guaranteed to remain coherent. It's reasonable to
+ // believe that a failure-to-store means something is very wrong in the system
+ // (out of disk or similar).
+ //
+ // On success, the returned FilePath is guaranteed to remain valid until the
+ // next Store* call.
+ virtual base::Optional<base::FilePath> Store(
+ const std::string& manufacturer,
+ const std::string& model,
+ const std::string& compressed_ppd_contents) = 0;
+
+ // Store a manually added ppd with the given key. They key can be any
+ // arbitrary string of up to 256 characters. Note that the keyspace for Local
+ // PPDs is completely disjoint from the keyspace for manufacturer/model stored
+ // PPDs -- one will never clobber the other due to a name collision.
+ //
+ // Returns nothing on failure-to-store. On failure, cache contents may be
+ // changed, but are guaranteed to remain coherent. It's reasonable to believe
+ // that a failure-to-store means something is very wrong in the system (out of
+ // disk or similar).
+ //
+ // On success, the returned FilePath is guaranteed to remain valid until the
+ // next Store* call.
+ virtual base::Optional<base::FilePath> StoreLocal(
+ const std::string& key,
+ const std::string& compressed_ppd_contents) = 0;
+};
+
+} // namespace printing
+} // namespace chromeos
+
+#endif // CHROMEOS_PRINTING_PPD_CACHE_H_

Powered by Google App Engine
This is Rietveld 408576698