Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 #include "chrome/utility/extensions/extensions_handler.h" | 5 #include "chrome/utility/extensions/extensions_handler.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "media/base/media.h" | 25 #include "media/base/media.h" |
| 26 #include "mojo/public/cpp/bindings/strong_binding.h" | 26 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 27 #include "services/service_manager/public/cpp/interface_registry.h" | 27 #include "services/service_manager/public/cpp/interface_registry.h" |
| 28 #include "ui/base/ui_base_switches.h" | 28 #include "ui/base/ui_base_switches.h" |
| 29 | 29 |
| 30 #if !defined(MEDIA_DISABLE_FFMPEG) | 30 #if !defined(MEDIA_DISABLE_FFMPEG) |
| 31 #include "media/base/media_file_checker.h" | 31 #include "media/base/media_file_checker.h" |
| 32 #endif | 32 #endif |
| 33 | 33 |
| 34 #if defined(OS_WIN) | 34 #if defined(OS_WIN) |
| 35 #include "chrome/common/extensions/wifi_credentials.mojom.h" | |
| 35 #include "chrome/utility/media_galleries/itunes_pref_parser_win.h" | 36 #include "chrome/utility/media_galleries/itunes_pref_parser_win.h" |
| 36 #include "components/wifi/wifi_service.h" | 37 #include "components/wifi/wifi_service.h" |
| 37 #endif // defined(OS_WIN) | 38 #endif // defined(OS_WIN) |
| 38 | 39 |
| 39 #if defined(OS_WIN) || defined(OS_MACOSX) | 40 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 40 #include "chrome/utility/media_galleries/iapps_xml_utils.h" | 41 #include "chrome/utility/media_galleries/iapps_xml_utils.h" |
| 41 #include "chrome/utility/media_galleries/itunes_library_parser.h" | 42 #include "chrome/utility/media_galleries/itunes_library_parser.h" |
| 42 #include "chrome/utility/media_galleries/picasa_album_table_reader.h" | 43 #include "chrome/utility/media_galleries/picasa_album_table_reader.h" |
| 43 #include "chrome/utility/media_galleries/picasa_albums_indexer.h" | 44 #include "chrome/utility/media_galleries/picasa_albums_indexer.h" |
| 44 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 45 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 88 const std::vector<metadata::AttachedImage>& attached_images) { | 89 const std::vector<metadata::AttachedImage>& attached_images) { |
| 89 callback.Run(true, metadata.ToValue(), attached_images); | 90 callback.Run(true, metadata.ToValue(), attached_images); |
| 90 ReleaseProcessIfNeeded(); | 91 ReleaseProcessIfNeeded(); |
| 91 } | 92 } |
| 92 | 93 |
| 93 ChromeContentUtilityClient* const utility_client_; | 94 ChromeContentUtilityClient* const utility_client_; |
| 94 | 95 |
| 95 DISALLOW_COPY_AND_ASSIGN(MediaParserImpl); | 96 DISALLOW_COPY_AND_ASSIGN(MediaParserImpl); |
| 96 }; | 97 }; |
| 97 | 98 |
| 99 #if defined(OS_WIN) | |
| 100 class WiFiCredentialsImpl : public extensions::mojom::WiFiCredentials { | |
| 101 public: | |
| 102 static void Create(extensions::mojom::WiFiCredentialsRequest request) { | |
|
Sam McNally
2017/01/16 04:16:20
Constructors and destructors before methods.
Noel Gordon
2017/01/16 11:09:58
Done.
| |
| 103 mojo::MakeStrongBinding(base::MakeUnique<WiFiCredentialsImpl>(), | |
| 104 std::move(request)); | |
| 105 } | |
| 106 | |
| 107 WiFiCredentialsImpl() = default; | |
| 108 ~WiFiCredentialsImpl() override = default; | |
| 109 | |
| 110 private: | |
| 111 // extensions::mojom::WiFiCredentials: | |
| 112 void GetWiFiCredentials(const std::string& ssid, | |
| 113 const GetWiFiCredentialsCallback& callback) override { | |
| 114 if (ssid == "chrome://test-wifi-get-key-from-system") { | |
| 115 callback.Run(true, ssid); // test-mode: echo the ssid back in key_data. | |
| 116 return; | |
| 117 } | |
| 118 | |
| 119 std::unique_ptr<wifi::WiFiService> wifi_service( | |
| 120 wifi::WiFiService::Create()); | |
| 121 wifi_service->Initialize(nullptr); | |
| 122 | |
| 123 std::string key_data; | |
| 124 std::string error; | |
| 125 wifi_service->GetKeyFromSystem(ssid, &key_data, &error); | |
| 126 | |
| 127 const bool success = error.empty(); | |
| 128 if (!success) | |
| 129 key_data.clear(); | |
|
Sam McNally
2017/01/16 04:16:20
This wasn't here before.
Noel Gordon
2017/01/16 11:09:58
But is now because security. If this API fails, t
| |
| 130 | |
| 131 callback.Run(success, key_data); | |
| 132 } | |
| 133 | |
| 134 DISALLOW_COPY_AND_ASSIGN(WiFiCredentialsImpl); | |
| 135 }; | |
| 136 #endif // defined(OS_WIN) | |
| 137 | |
| 98 } // namespace | 138 } // namespace |
| 99 | 139 |
| 100 namespace extensions { | 140 namespace extensions { |
| 101 | 141 |
| 102 ExtensionsHandler::ExtensionsHandler() { | 142 ExtensionsHandler::ExtensionsHandler() { |
| 103 ExtensionsClient::Set(ChromeExtensionsClient::GetInstance()); | 143 ExtensionsClient::Set(ChromeExtensionsClient::GetInstance()); |
| 104 } | 144 } |
| 105 | 145 |
| 106 ExtensionsHandler::~ExtensionsHandler() { | 146 ExtensionsHandler::~ExtensionsHandler() { |
| 107 } | 147 } |
| 108 | 148 |
| 109 // static | 149 // static |
| 110 void ExtensionsHandler::PreSandboxStartup() { | 150 void ExtensionsHandler::PreSandboxStartup() { |
| 111 // Initialize media libraries for media file validation. | 151 // Initialize media libraries for media file validation. |
| 112 media::InitializeMediaLibrary(); | 152 media::InitializeMediaLibrary(); |
| 113 } | 153 } |
| 114 | 154 |
| 115 // static | 155 // static |
| 116 void ExtensionsHandler::ExposeInterfacesToBrowser( | 156 void ExtensionsHandler::ExposeInterfacesToBrowser( |
| 117 service_manager::InterfaceRegistry* registry, | 157 service_manager::InterfaceRegistry* registry, |
| 118 ChromeContentUtilityClient* utility_client, | 158 ChromeContentUtilityClient* utility_client, |
| 119 bool running_elevated) { | 159 bool running_elevated) { |
| 120 // If our process runs with elevated privileges, only add elevated | 160 // If our process runs with elevated privileges, only add elevated |
| 121 // Mojo services to the interface registry. | 161 // Mojo services to the interface registry. |
| 122 if (running_elevated) | 162 if (running_elevated) { |
| 163 #if defined(OS_WIN) | |
| 164 registry->AddInterface(base::Bind(&WiFiCredentialsImpl::Create)); | |
| 165 #endif | |
| 123 return; | 166 return; |
| 167 } | |
| 124 | 168 |
| 125 registry->AddInterface(base::Bind(&MediaParserImpl::Create, utility_client)); | 169 registry->AddInterface(base::Bind(&MediaParserImpl::Create, utility_client)); |
| 126 } | 170 } |
| 127 | 171 |
| 128 bool ExtensionsHandler::OnMessageReceived(const IPC::Message& message) { | 172 bool ExtensionsHandler::OnMessageReceived(const IPC::Message& message) { |
| 129 bool handled = true; | 173 bool handled = true; |
| 130 IPC_BEGIN_MESSAGE_MAP(ExtensionsHandler, message) | 174 IPC_BEGIN_MESSAGE_MAP(ExtensionsHandler, message) |
| 131 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CheckMediaFile, OnCheckMediaFile) | 175 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_CheckMediaFile, OnCheckMediaFile) |
| 132 | 176 |
| 133 #if defined(OS_WIN) | 177 #if defined(OS_WIN) |
| 134 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesPrefXml, | 178 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesPrefXml, |
| 135 OnParseITunesPrefXml) | 179 OnParseITunesPrefXml) |
| 136 #endif // defined(OS_WIN) | 180 #endif // defined(OS_WIN) |
| 137 | 181 |
| 138 #if defined(OS_WIN) || defined(OS_MACOSX) | 182 #if defined(OS_WIN) || defined(OS_MACOSX) |
| 139 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesLibraryXmlFile, | 183 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParseITunesLibraryXmlFile, |
| 140 OnParseITunesLibraryXmlFile) | 184 OnParseITunesLibraryXmlFile) |
| 141 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParsePicasaPMPDatabase, | 185 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_ParsePicasaPMPDatabase, |
| 142 OnParsePicasaPMPDatabase) | 186 OnParsePicasaPMPDatabase) |
| 143 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_IndexPicasaAlbumsContents, | 187 IPC_MESSAGE_HANDLER(ChromeUtilityMsg_IndexPicasaAlbumsContents, |
| 144 OnIndexPicasaAlbumsContents) | 188 OnIndexPicasaAlbumsContents) |
| 145 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 189 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
| 146 | 190 |
| 147 #if defined(OS_WIN) | |
| 148 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_GetWiFiCredentials, | |
| 149 OnGetWiFiCredentials) | |
| 150 #endif // defined(OS_WIN) | |
| 151 | |
| 152 IPC_MESSAGE_UNHANDLED(handled = false) | 191 IPC_MESSAGE_UNHANDLED(handled = false) |
| 153 IPC_END_MESSAGE_MAP() | 192 IPC_END_MESSAGE_MAP() |
| 154 | 193 |
| 155 return handled || utility_handler_.OnMessageReceived(message); | 194 return handled || utility_handler_.OnMessageReceived(message); |
| 156 } | 195 } |
| 157 | 196 |
| 158 void ExtensionsHandler::OnCheckMediaFile( | 197 void ExtensionsHandler::OnCheckMediaFile( |
| 159 int64_t milliseconds_of_decoding, | 198 int64_t milliseconds_of_decoding, |
| 160 const IPC::PlatformFileForTransit& media_file) { | 199 const IPC::PlatformFileForTransit& media_file) { |
| 161 #if !defined(MEDIA_DISABLE_FFMPEG) | 200 #if !defined(MEDIA_DISABLE_FFMPEG) |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 220 const std::vector<picasa::FolderINIContents>& folders_inis) { | 259 const std::vector<picasa::FolderINIContents>& folders_inis) { |
| 221 picasa::PicasaAlbumsIndexer indexer(album_uids); | 260 picasa::PicasaAlbumsIndexer indexer(album_uids); |
| 222 indexer.ParseFolderINI(folders_inis); | 261 indexer.ParseFolderINI(folders_inis); |
| 223 | 262 |
| 224 Send(new ChromeUtilityHostMsg_IndexPicasaAlbumsContents_Finished( | 263 Send(new ChromeUtilityHostMsg_IndexPicasaAlbumsContents_Finished( |
| 225 indexer.albums_images())); | 264 indexer.albums_images())); |
| 226 ReleaseProcessIfNeeded(); | 265 ReleaseProcessIfNeeded(); |
| 227 } | 266 } |
| 228 #endif // defined(OS_WIN) || defined(OS_MACOSX) | 267 #endif // defined(OS_WIN) || defined(OS_MACOSX) |
| 229 | 268 |
| 230 #if defined(OS_WIN) | |
| 231 void ExtensionsHandler::OnGetWiFiCredentials(const std::string& network_guid) { | |
| 232 std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create()); | |
| 233 wifi_service->Initialize(NULL); | |
| 234 | |
| 235 std::string key_data; | |
| 236 std::string error; | |
| 237 wifi_service->GetKeyFromSystem(network_guid, &key_data, &error); | |
| 238 | |
| 239 Send(new ChromeUtilityHostMsg_GotWiFiCredentials(key_data, error.empty())); | |
| 240 } | |
| 241 #endif // defined(OS_WIN) | |
| 242 | |
| 243 } // namespace extensions | 269 } // namespace extensions |
| OLD | NEW |