1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_UTILITY_EXTENSIONS_EXTENSIONS_HANDLER_H_ 6 #define CHROME_UTILITY_EXTENSIONS_EXTENSIONS_HANDLER_H_ 7 8 #include "base/base64.h" 9 #include "base/compiler_specific.h" 10 #include "base/json/json_reader.h" 11 #include "base/macros.h" 12 #include "chrome/common/media_galleries/picasa_types.h" 13 #include "chrome/utility/utility_message_handler.h" 14 15 #if !defined(ENABLE_EXTENSIONS) 16 #error "Extensions must be enabled" 17 #endif 18 19 namespace metadata { 20 class MediaMetadataParser; 21 } 22 23 namespace extensions { 24 25 // Dispatches IPCs for Chrome extensions utility messages. 26 class ExtensionsHandler : public UtilityMessageHandler { 27 public: 28 ExtensionsHandler(); 29 virtual ~ExtensionsHandler(); 30 31 static void PreSandboxStartup(); 32 static void UtilityThreadStarted(); 33 34 // IPC::Listener: 35 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 36 37 private: 38 // IPC message handlers. 39 void OnUnpackExtension(const base::FilePath& extension_path, 40 const std::string& extension_id, 41 int location, int creation_flags); 42 void OnUnzipToDir(const base::FilePath& zip_path, const base::FilePath& dir); 43 void OnParseUpdateManifest(const std::string& xml); 44 void OnDecodeImageBase64(const std::string& encoded_data); 45 void OnParseJSON(const std::string& json); 46 void OnCheckMediaFile(int64 milliseconds_of_decoding, 47 const IPC::PlatformFileForTransit& media_file); 48 49 #if defined(OS_WIN) 50 void OnParseITunesPrefXml(const std::string& itunes_xml_data); 51 #endif // defined(OS_WIN) 52 53 #if defined(OS_MACOSX) 54 void OnParseIPhotoLibraryXmlFile( 55 const IPC::PlatformFileForTransit& iphoto_library_file); 56 #endif // defined(OS_MACOSX) 57 58 #if defined(OS_WIN) || defined(OS_MACOSX) 59 void OnParseITunesLibraryXmlFile( 60 const IPC::PlatformFileForTransit& itunes_library_file); 61 62 void OnParsePicasaPMPDatabase( 63 const picasa::AlbumTableFilesForTransit& album_table_files); 64 65 void OnIndexPicasaAlbumsContents( 66 const picasa::AlbumUIDSet& album_uids, 67 const std::vector<picasa::FolderINIContents>& folders_inis); 68 #endif // defined(OS_WIN) || defined(OS_MACOSX) 69 70 #if defined(OS_WIN) 71 void OnGetWiFiCredentials(const std::string& network_guid); 72 #endif // defined(OS_WIN) 73 74 DISALLOW_COPY_AND_ASSIGN(ExtensionsHandler); 75 }; 76 77 } // namespace extensions 78 79 #endif // CHROME_UTILITY_EXTENSIONS_EXTENSIONS_HANDLER_H_ 80