Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(564)

Side by Side Diff: chrome/utility/extensions/extensions_handler.cc

Issue 2610953003: Convert utility process WiFi Credentials IPC to mojo (Closed)
Patch Set: Delete the credentials getter_ early in the browser test. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698