| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ | 5 #ifndef CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ |
| 6 #define CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ | 6 #define CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| 11 #include "base/ref_counted.h" | 11 #include "base/ref_counted.h" |
| 12 #include "chrome/browser/chrome_thread.h" |
| 12 | 13 |
| 13 class MessageLoop; | |
| 14 | 14 |
| 15 // Manages packing an extension on the file thread and reporting the result | 15 // Manages packing an extension on the file thread and reporting the result |
| 16 // back to the UI. | 16 // back to the UI. |
| 17 class PackExtensionJob : public base::RefCountedThreadSafe<PackExtensionJob> { | 17 class PackExtensionJob : public base::RefCountedThreadSafe<PackExtensionJob> { |
| 18 public: | 18 public: |
| 19 | 19 |
| 20 // Interface for people who want to use PackExtensionJob to implement. | 20 // Interface for people who want to use PackExtensionJob to implement. |
| 21 class Client { | 21 class Client { |
| 22 public: | 22 public: |
| 23 virtual void OnPackSuccess(const FilePath& crx_file, | 23 virtual void OnPackSuccess(const FilePath& crx_file, |
| 24 const FilePath& key_file) = 0; | 24 const FilePath& key_file) = 0; |
| 25 virtual void OnPackFailure(const std::wstring& message) = 0; | 25 virtual void OnPackFailure(const std::wstring& message) = 0; |
| 26 }; | 26 }; |
| 27 | 27 |
| 28 PackExtensionJob(Client* client, | 28 PackExtensionJob(Client* client, |
| 29 const FilePath& root_directory, | 29 const FilePath& root_directory, |
| 30 const FilePath& key_file); | 30 const FilePath& key_file); |
| 31 | 31 |
| 32 // The client should call this when it is destroyed to prevent | 32 // The client should call this when it is destroyed to prevent |
| 33 // PackExtensionJob from attempting to access it. | 33 // PackExtensionJob from attempting to access it. |
| 34 void ClearClient(); | 34 void ClearClient(); |
| 35 | 35 |
| 36 private: | 36 private: |
| 37 void RunOnFileThread(); | 37 void RunOnFileThread(); |
| 38 void ReportSuccessOnUIThread(); | 38 void ReportSuccessOnUIThread(); |
| 39 void ReportFailureOnUIThread(const std::string& error); | 39 void ReportFailureOnUIThread(const std::string& error); |
| 40 | 40 |
| 41 MessageLoop* ui_loop_; | 41 ChromeThread::ID client_thread_id_; |
| 42 Client* client_; | 42 Client* client_; |
| 43 FilePath root_directory_; | 43 FilePath root_directory_; |
| 44 FilePath key_file_; | 44 FilePath key_file_; |
| 45 FilePath crx_file_out_; | 45 FilePath crx_file_out_; |
| 46 FilePath key_file_out_; | 46 FilePath key_file_out_; |
| 47 | 47 |
| 48 DISALLOW_COPY_AND_ASSIGN(PackExtensionJob); | 48 DISALLOW_COPY_AND_ASSIGN(PackExtensionJob); |
| 49 }; | 49 }; |
| 50 | 50 |
| 51 #endif // CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ | 51 #endif // CHROME_BROWSER_EXTENSIONS_PACK_EXTENSION_JOB_UI_H_ |
| 52 | 52 |
| OLD | NEW |