| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  | // Copyright (c) 2015 GitHub, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ATOM_BROWSER_API_ATOM_API_DOWNLOAD_ITEM_H_
 | 
					
						
							|  |  |  | #define ATOM_BROWSER_API_ATOM_API_DOWNLOAD_ITEM_H_
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <string>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "atom/browser/api/trackable_object.h"
 | 
					
						
							| 
									
										
										
										
											2015-09-24 15:55:45 +08:00
										 |  |  | #include "base/files/file_path.h"
 | 
					
						
							| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  | #include "content/public/browser/download_item.h"
 | 
					
						
							|  |  |  | #include "native_mate/handle.h"
 | 
					
						
							|  |  |  | #include "url/gurl.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace atom { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace api { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-24 15:55:45 +08:00
										 |  |  | class DownloadItem : public mate::EventEmitter, | 
					
						
							| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  |                      public content::DownloadItem::Observer { | 
					
						
							|  |  |  |  public: | 
					
						
							| 
									
										
										
										
											2015-09-24 15:55:45 +08:00
										 |  |  |   class SavePathData : public base::SupportsUserData::Data { | 
					
						
							|  |  |  |    public: | 
					
						
							|  |  |  |     explicit SavePathData(const base::FilePath& path); | 
					
						
							|  |  |  |     const base::FilePath& path(); | 
					
						
							|  |  |  |    private: | 
					
						
							|  |  |  |     base::FilePath path_; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  |   static mate::Handle<DownloadItem> Create(v8::Isolate* isolate, | 
					
						
							|  |  |  |                                            content::DownloadItem* item); | 
					
						
							| 
									
										
										
										
											2015-09-24 19:31:09 +08:00
										 |  |  |   static void* UserDataKey(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  protected: | 
					
						
							|  |  |  |   explicit DownloadItem(content::DownloadItem* download_item); | 
					
						
							|  |  |  |   ~DownloadItem(); | 
					
						
							| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // Override content::DownloadItem::Observer methods
 | 
					
						
							|  |  |  |   void OnDownloadUpdated(content::DownloadItem* download) override; | 
					
						
							|  |  |  |   void OnDownloadDestroyed(content::DownloadItem* download) override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   void Pause(); | 
					
						
							|  |  |  |   void Resume(); | 
					
						
							|  |  |  |   void Cancel(); | 
					
						
							|  |  |  |   int64 GetReceivedBytes(); | 
					
						
							|  |  |  |   int64 GetTotalBytes(); | 
					
						
							|  |  |  |   std::string GetMimeType(); | 
					
						
							|  |  |  |   bool HasUserGesture(); | 
					
						
							| 
									
										
										
										
											2015-09-24 16:31:41 +08:00
										 |  |  |   std::string GetFilename(); | 
					
						
							| 
									
										
										
										
											2015-09-21 09:38:38 +08:00
										 |  |  |   std::string GetContentDisposition(); | 
					
						
							| 
									
										
										
										
											2015-11-13 16:03:40 +08:00
										 |  |  |   const GURL& GetURL(); | 
					
						
							| 
									
										
										
										
											2015-09-24 15:55:45 +08:00
										 |  |  |   void SetSavePath(const base::FilePath& path); | 
					
						
							| 
									
										
										
										
											2015-09-20 18:56:10 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |  private: | 
					
						
							|  |  |  |   // mate::Wrappable:
 | 
					
						
							|  |  |  |   mate::ObjectTemplateBuilder GetObjectTemplateBuilder( | 
					
						
							|  |  |  |       v8::Isolate* isolate) override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   content::DownloadItem* download_item_; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   DISALLOW_COPY_AND_ASSIGN(DownloadItem); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace api
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace atom
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif  // ATOM_BROWSER_API_ATOM_API_DOWNLOAD_ITEM_H_
 |