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 |