| Index: components/translate/content/common/cld_data_source.h
|
| diff --git a/components/translate/content/common/cld_data_source.h b/components/translate/content/common/cld_data_source.h
|
| index 07a56b0437a6894c0ff105608f86ff68a9126033..eb7fc0aa7afe6ae340980d0a0323305e63dc0c3e 100644
|
| --- a/components/translate/content/common/cld_data_source.h
|
| +++ b/components/translate/content/common/cld_data_source.h
|
| @@ -7,12 +7,19 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/files/file_path.h"
|
| +#include "base/synchronization/lock.h"
|
| +
|
| namespace translate {
|
|
|
| // Provides high-level functionality related to a CLD Data Source.
|
| class CldDataSource {
|
|
|
| public:
|
| + CldDataSource(std::string name,
|
| + bool register_for_component_updates,
|
| + bool use_standalone_data_file);
|
| + virtual ~CldDataSource() {}
|
|
|
| // Returns the symbolic name of the data source. In the Chromium
|
| // open-source tree, the following data sources exist:
|
| @@ -29,19 +36,74 @@ class CldDataSource {
|
| // boolean methods in this class instead:
|
| // ShouldRegisterForComponentUpdates()
|
| // ShouldUseStandaloneDataFile()
|
| - static std::string GetName();
|
| + virtual std::string GetName();
|
|
|
| // Returns true if the data source needs to receive updates from the
|
| // Component Updater.
|
| // This is only true if the data source name is "component", but makes caller
|
| // logic more generic.
|
| - static bool ShouldRegisterForComponentUpdates();
|
| + virtual bool ShouldRegisterForComponentUpdates();
|
|
|
| // Returns true if the data source needs to have the path to the CLD
|
| // data file configured immediately because it is bundled with Chromium.
|
| // This is only true if the data source name is "standalone", but makes
|
| // caller logic more generic.
|
| - static bool ShouldUseStandaloneDataFile();
|
| + virtual bool ShouldUseStandaloneDataFile();
|
| +
|
| + // For data sources that support a separate CLD data file, configures the path
|
| + // of that data file.
|
| + //
|
| + // The 'component' and 'standalone' data sources need this method to be called
|
| + // in order to locate the CLD data on disk.
|
| + // If the data source doesn't need or doesn't support such configuration, this
|
| + // function is a no-op. This is the case for, e.g., the static data source.
|
| + // This method is threadsafe.
|
| + void SetCldDataFilePath(const base::FilePath& path);
|
| +
|
| + // Returns the path most recently set by SetCldDataFilePath. The initial value
|
| + // prior to any such call is the empty path. If the data source doesn't
|
| + // support a data file, returns the empty path.
|
| + // This method is threadsafe.
|
| + base::FilePath GetCldDataFilePath();
|
| +
|
| + // Sets the data source for this process, optionally overwriting the previous
|
| + // value. Embedders and narrow use-cases (such as shells and test code) should
|
| + // use the overwrite capability, while generic code should not.
|
| + static void Set(CldDataSource* data_source, bool overwrite);
|
| +
|
| + // Returns the data source for this process.
|
| + static CldDataSource* Get();
|
| +
|
| + // Fetch the global instance of the "NONE" data source, i.e. a data source
|
| + // that gracefully does nothing. Callers should set this data source if it is
|
| + // the intent that there truly be no source of CLD data; this will result in
|
| + // language detection (and subsequently, translation) being unavailable.
|
| + // This is provided for convenience, to avoid a bunch of trivial subclasses
|
| + // whose only differences are in their unique combination of read-only values.
|
| + static CldDataSource* NONE();
|
| +
|
| + // Fetch the global instance of the "static" data source.
|
| + // This is provided for convenience, to avoid a bunch of trivial subclasses
|
| + // whose only differences are in their unique combination of read-only values.
|
| + static CldDataSource* STATIC();
|
| +
|
| + // Fetch the global instance of the "standalone" data source.
|
| + // This is provided for convenience, to avoid a bunch of trivial subclasses
|
| + // whose only differences are in their unique combination of read-only values.
|
| + static CldDataSource* STANDALONE();
|
| +
|
| + // Fetch the global instance of the "component" data source.
|
| + // This is provided for convenience, to avoid a bunch of trivial subclasses
|
| + // whose only differences are in their unique combination of read-only values.
|
| + static CldDataSource* COMPONENT();
|
| +
|
| + protected:
|
| + const std::string m_name;
|
| + const bool m_register_for_component_updates;
|
| + const bool m_use_standalone_data_file;
|
| + base::FilePath m_cached_filepath; // Guarded by m_file_lock
|
| + base::Lock m_file_lock; // Guards m_cached_filepath
|
| +
|
| };
|
|
|
| } // namespace translate
|
|
|