Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/browser/ui/webui/nacl_ui.h" | 5 #include "chrome/browser/ui/webui/nacl_ui.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 210 results->SetString("key", key); | 210 results->SetString("key", key); |
| 211 results->SetString("value", value); | 211 results->SetString("value", value); |
| 212 list->Append(results); | 212 list->Append(results); |
| 213 } | 213 } |
| 214 | 214 |
| 215 // Generate an empty data-pair which acts as a line break. | 215 // Generate an empty data-pair which acts as a line break. |
| 216 void AddLineBreak(ListValue* list) { | 216 void AddLineBreak(ListValue* list) { |
| 217 AddPair(list, ASCIIToUTF16(""), ASCIIToUTF16("")); | 217 AddPair(list, ASCIIToUTF16(""), ASCIIToUTF16("")); |
| 218 } | 218 } |
| 219 | 219 |
| 220 // Check whether a commandline switch is turned on or off. | |
| 221 void ListFlagStatus(ListValue* list, const std::string& flag_label, | |
| 222 const std::string& flag_name) { | |
| 223 if (CommandLine::ForCurrentProcess()->HasSwitch(flag_name)) | |
| 224 AddPair(list, ASCIIToUTF16(flag_label), ASCIIToUTF16("On")); | |
| 225 else | |
| 226 AddPair(list, ASCIIToUTF16(flag_label), ASCIIToUTF16("Off")); | |
| 227 } | |
| 228 | |
| 229 void NaClDomHandler::HandleRequestNaClInfo(const ListValue* args) { | 220 void NaClDomHandler::HandleRequestNaClInfo(const ListValue* args) { |
| 230 page_has_requested_data_ = true; | 221 page_has_requested_data_ = true; |
| 231 // Force re-validation of pnacl's path in the next call to | 222 // Force re-validation of pnacl's path in the next call to |
| 232 // MaybeRespondToPage(), in case PNaCl went from not-installed | 223 // MaybeRespondToPage(), in case PNaCl went from not-installed |
| 233 // to installed since the request. | 224 // to installed since the request. |
| 234 pnacl_path_validated_ = false; | 225 pnacl_path_validated_ = false; |
| 235 MaybeRespondToPage(); | 226 MaybeRespondToPage(); |
| 236 } | 227 } |
| 237 | 228 |
| 238 void NaClDomHandler::OnGotPlugins( | 229 void NaClDomHandler::OnGotPlugins( |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 280 ASCIIToUTF16(os_label)); | 271 ASCIIToUTF16(os_label)); |
| 281 | 272 |
| 282 AddLineBreak(list.get()); | 273 AddLineBreak(list.get()); |
| 283 | 274 |
| 284 // Obtain the version of the NaCl plugin. | 275 // Obtain the version of the NaCl plugin. |
| 285 std::vector<content::WebPluginInfo> info_array; | 276 std::vector<content::WebPluginInfo> info_array; |
| 286 PluginService::GetInstance()->GetPluginInfoArray( | 277 PluginService::GetInstance()->GetPluginInfoArray( |
| 287 GURL(), "application/x-nacl", false, &info_array, NULL); | 278 GURL(), "application/x-nacl", false, &info_array, NULL); |
| 288 string16 nacl_version; | 279 string16 nacl_version; |
| 289 string16 nacl_key = ASCIIToUTF16("NaCl plugin"); | 280 string16 nacl_key = ASCIIToUTF16("NaCl plugin"); |
| 281 bool plugin_enabled = true; | |
| 290 if (info_array.empty()) { | 282 if (info_array.empty()) { |
| 291 AddPair(list.get(), nacl_key, ASCIIToUTF16("Disabled")); | 283 AddPair(list.get(), nacl_key, ASCIIToUTF16("Disabled")); |
| 284 plugin_enabled = false; | |
| 292 } else { | 285 } else { |
| 293 PluginPrefs* plugin_prefs = | 286 PluginPrefs* plugin_prefs = |
| 294 PluginPrefs::GetForProfile(Profile::FromWebUI(web_ui())).get(); | 287 PluginPrefs::GetForProfile(Profile::FromWebUI(web_ui())).get(); |
| 295 | 288 |
| 296 // Only the 0th plugin is used. | 289 // Only the 0th plugin is used. |
| 297 nacl_version = info_array[0].version + ASCIIToUTF16(" ") + | 290 nacl_version = info_array[0].version + ASCIIToUTF16(" ") + |
| 298 info_array[0].path.LossyDisplayName(); | 291 info_array[0].path.LossyDisplayName(); |
| 299 if (!plugin_prefs->IsPluginEnabled(info_array[0])) { | 292 if (!plugin_prefs->IsPluginEnabled(info_array[0])) { |
| 293 plugin_enabled = false; | |
| 300 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); | 294 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); |
| 301 AddPair(list.get(), nacl_key, nacl_version); | 295 AddPair(list.get(), nacl_key, nacl_version); |
| 302 } | 296 } |
| 303 | 297 |
| 304 AddPair(list.get(), nacl_key, nacl_version); | 298 AddPair(list.get(), nacl_key, nacl_version); |
| 305 | 299 |
| 306 // Mark the rest as not used. | 300 // Mark the rest as not used. |
| 307 for (size_t i = 1; i < info_array.size(); ++i) { | 301 for (size_t i = 1; i < info_array.size(); ++i) { |
| 308 nacl_version = info_array[i].version + ASCIIToUTF16(" ") + | 302 nacl_version = info_array[i].version + ASCIIToUTF16(" ") + |
| 309 info_array[i].path.LossyDisplayName(); | 303 info_array[i].path.LossyDisplayName(); |
| 310 nacl_version += ASCIIToUTF16(" (not used)"); | 304 nacl_version += ASCIIToUTF16(" (not used)"); |
| 311 if (!plugin_prefs->IsPluginEnabled(info_array[i])) | 305 if (!plugin_prefs->IsPluginEnabled(info_array[i])) { |
| 306 plugin_enabled = false; | |
|
Mark Seaborn
2013/07/22 23:28:10
I don't understand this. If there are multiple pl
sehr
2013/07/23 22:03:26
There weren't multiple plugins handling the mime t
| |
| 312 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); | 307 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); |
| 308 } | |
| 313 AddPair(list.get(), nacl_key, nacl_version); | 309 AddPair(list.get(), nacl_key, nacl_version); |
| 314 } | 310 } |
| 315 } | 311 } |
| 316 | 312 |
| 317 // Check that commandline flags are enabled. | 313 // Display whether NaCl is enabled. |
| 318 ListFlagStatus(list.get(), "Flag '--enable-nacl'", switches::kEnableNaCl); | 314 string16 nacl_enabled_string = ASCIIToUTF16("Disabled"); |
| 315 if (plugin_enabled && | |
| 316 CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaCl)) { | |
| 317 nacl_enabled_string = ASCIIToUTF16("Enabled by flag '--enable-nacl'"); | |
| 318 } | |
| 319 AddPair(list.get(), ASCIIToUTF16("Native Client"), nacl_enabled_string); | |
| 319 | 320 |
| 320 AddLineBreak(list.get()); | 321 AddLineBreak(list.get()); |
| 321 | 322 |
| 323 // Display whether PNaCl is enabled. | |
| 324 string16 pnacl_enabled_string = ASCIIToUTF16("Enabled"); | |
| 325 if (!plugin_enabled) { | |
| 326 pnacl_enabled_string = ASCIIToUTF16("Disabled in profile prefs"); | |
| 327 } | |
| 328 else if (CommandLine::ForCurrentProcess()->HasSwitch( | |
|
Mark Seaborn
2013/07/22 23:28:10
Should go on previous line as "} else if"
sehr
2013/07/23 22:03:26
Done.
| |
| 329 switches::kDisablePnacl)) { | |
|
Mark Seaborn
2013/07/22 23:28:10
Fix indentation here.
// good
if (SomeFunc(
sehr
2013/07/23 22:03:26
Done.
| |
| 330 pnacl_enabled_string = ASCIIToUTF16("Disabled by flag '--disable-pnacl'"); | |
| 331 } | |
| 332 AddPair(list.get(), | |
| 333 ASCIIToUTF16("Portable Native Client"), | |
| 334 pnacl_enabled_string); | |
| 335 | |
| 322 // Obtain the version of the PNaCl translator. | 336 // Obtain the version of the PNaCl translator. |
| 323 base::FilePath pnacl_path; | 337 base::FilePath pnacl_path; |
| 324 bool got_path = PathService::Get(chrome::DIR_PNACL_COMPONENT, &pnacl_path); | 338 bool got_path = PathService::Get(chrome::DIR_PNACL_COMPONENT, &pnacl_path); |
| 325 if (!got_path || pnacl_path.empty() || !pnacl_path_exists_) { | 339 if (!got_path || pnacl_path.empty() || !pnacl_path_exists_) { |
| 326 AddPair(list.get(), | 340 AddPair(list.get(), |
| 327 ASCIIToUTF16("PNaCl translator"), | 341 ASCIIToUTF16("PNaCl translator"), |
| 328 ASCIIToUTF16("Not installed")); | 342 ASCIIToUTF16("Not installed")); |
| 329 } else { | 343 } else { |
| 330 AddPair(list.get(), | 344 AddPair(list.get(), |
| 331 ASCIIToUTF16("PNaCl translator path"), | 345 ASCIIToUTF16("PNaCl translator path"), |
| 332 pnacl_path.LossyDisplayName()); | 346 pnacl_path.LossyDisplayName()); |
| 333 // Version string is part of the directory name: | 347 // Version string is part of the directory name: |
| 334 // pnacl/<version>/_platform_specific/<arch>/[files] | 348 // pnacl/<version>/_platform_specific/<arch>/[files] |
| 335 // Keep in sync with pnacl_component_installer.cc. | 349 // Keep in sync with pnacl_component_installer.cc. |
| 336 AddPair(list.get(), | 350 AddPair(list.get(), |
| 337 ASCIIToUTF16("PNaCl translator version"), | 351 ASCIIToUTF16("PNaCl translator version"), |
| 338 pnacl_path.DirName().DirName().BaseName().LossyDisplayName()); | 352 pnacl_path.DirName().DirName().BaseName().LossyDisplayName()); |
| 339 } | 353 } |
| 340 | 354 |
| 341 ListFlagStatus(list.get(), "Flag '--enable-pnacl'", switches::kEnablePnacl); | |
| 342 // naclInfo will take ownership of list, and clean it up on destruction. | 355 // naclInfo will take ownership of list, and clean it up on destruction. |
| 343 naclInfo->Set("naclInfo", list.release()); | 356 naclInfo->Set("naclInfo", list.release()); |
| 344 } | 357 } |
| 345 | 358 |
| 346 void NaClDomHandler::DidValidatePnaclPath(bool is_valid) { | 359 void NaClDomHandler::DidValidatePnaclPath(bool is_valid) { |
| 347 pnacl_path_validated_ = true; | 360 pnacl_path_validated_ = true; |
| 348 pnacl_path_exists_ = is_valid; | 361 pnacl_path_exists_ = is_valid; |
| 349 MaybeRespondToPage(); | 362 MaybeRespondToPage(); |
| 350 } | 363 } |
| 351 | 364 |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 376 | 389 |
| 377 NaClUI::NaClUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 390 NaClUI::NaClUI(content::WebUI* web_ui) : WebUIController(web_ui) { |
| 378 content::RecordAction(UserMetricsAction("ViewAboutNaCl")); | 391 content::RecordAction(UserMetricsAction("ViewAboutNaCl")); |
| 379 | 392 |
| 380 web_ui->AddMessageHandler(new NaClDomHandler()); | 393 web_ui->AddMessageHandler(new NaClDomHandler()); |
| 381 | 394 |
| 382 // Set up the about:nacl source. | 395 // Set up the about:nacl source. |
| 383 Profile* profile = Profile::FromWebUI(web_ui); | 396 Profile* profile = Profile::FromWebUI(web_ui); |
| 384 content::WebUIDataSource::Add(profile, CreateNaClUIHTMLSource()); | 397 content::WebUIDataSource::Add(profile, CreateNaClUIHTMLSource()); |
| 385 } | 398 } |
| OLD | NEW |