| // Copyright (c) 2011 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 CHROME_UTILITY_IMPORTER_IMPORTER_H_ |
| #define CHROME_UTILITY_IMPORTER_IMPORTER_H_ |
| |
| #include "base/basictypes.h" |
| #include "base/memory/ref_counted.h" |
| |
| class ImporterBridge; |
| |
| namespace importer { |
| struct SourceProfile; |
| } |
| |
| // The base class of all importers. |
| class Importer : public base::RefCountedThreadSafe<Importer> { |
| public: |
| // All importers should implement this method by adding their import logic. |
| // And it will be run in file thread by ImporterHost. Since we do async |
| // import, the importer should invoke ImporterHost::NotifyImportEnded() to |
| // notify its host that import stuff have been finished. |
| virtual void StartImport(const importer::SourceProfile& source_profile, |
| uint16 items, |
| ImporterBridge* bridge) = 0; |
| |
| // Cancels the import process. |
| virtual void Cancel(); |
| |
| bool cancelled() const { return cancelled_; } |
| |
| protected: |
| friend class base::RefCountedThreadSafe<Importer>; |
| |
| Importer(); |
| virtual ~Importer(); |
| |
| scoped_refptr<ImporterBridge> bridge_; |
| |
| private: |
| // True if the caller cancels the import process. |
| bool cancelled_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Importer); |
| }; |
| |
| #endif // CHROME_UTILITY_IMPORTER_IMPORTER_H_ |