15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 57dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#ifndef CHROME_UTILITY_IMPORTER_IMPORTER_H_ 67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#define CHROME_UTILITY_IMPORTER_IMPORTER_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ImporterBridge; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace importer { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct SourceProfile; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The base class of all importers. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Importer : public base::RefCountedThreadSafe<Importer> { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // All importers should implement this method by adding their import logic. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // And it will be run in file thread by ImporterHost. Since we do async 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // import, the importer should invoke ImporterHost::NotifyImportEnded() to 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // notify its host that import stuff have been finished. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void StartImport(const importer::SourceProfile& source_profile, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint16 items, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ImporterBridge* bridge) = 0; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cancels the import process. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Cancel(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool cancelled() const { return cancelled_; } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) friend class base::RefCountedThreadSafe<Importer>; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Importer(); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Importer(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ImporterBridge> bridge_; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // True if the caller cancels the import process. 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool cancelled_; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Importer); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#endif // CHROME_UTILITY_IMPORTER_IMPORTER_H_ 49