| 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); | |
| 302 } | 295 } |
| 303 | 296 |
| 304 AddPair(list.get(), nacl_key, nacl_version); | 297 AddPair(list.get(), nacl_key, nacl_version); |
| 305 | 298 |
| 306 // Mark the rest as not used. | 299 // Mark the rest as not used. |
| 307 for (size_t i = 1; i < info_array.size(); ++i) { | 300 for (size_t i = 1; i < info_array.size(); ++i) { |
| 308 nacl_version = info_array[i].version + ASCIIToUTF16(" ") + | 301 nacl_version = info_array[i].version + ASCIIToUTF16(" ") + |
| 309 info_array[i].path.LossyDisplayName(); | 302 info_array[i].path.LossyDisplayName(); |
| 310 nacl_version += ASCIIToUTF16(" (not used)"); | 303 nacl_version += ASCIIToUTF16(" (not used)"); |
| 311 if (!plugin_prefs->IsPluginEnabled(info_array[i])) | 304 if (!plugin_prefs->IsPluginEnabled(info_array[i])) { |
| 312 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); | 305 nacl_version += ASCIIToUTF16(" (Disabled in profile prefs)"); |
| 306 } |
| 313 AddPair(list.get(), nacl_key, nacl_version); | 307 AddPair(list.get(), nacl_key, nacl_version); |
| 314 } | 308 } |
| 315 } | 309 } |
| 316 | 310 |
| 317 // Check that commandline flags are enabled. | 311 AddLineBreak(list.get()); |
| 318 ListFlagStatus(list.get(), "Flag '--enable-nacl'", switches::kEnableNaCl); | |
| 319 | 312 |
| 320 AddLineBreak(list.get()); | 313 // Display whether PNaCl is enabled. |
| 314 string16 pnacl_enabled_string = ASCIIToUTF16("Enabled"); |
| 315 if (!plugin_enabled) { |
| 316 pnacl_enabled_string = ASCIIToUTF16("Disabled in profile prefs"); |
| 317 } else if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 318 switches::kDisablePnacl)) { |
| 319 pnacl_enabled_string = ASCIIToUTF16("Disabled by flag '--disable-pnacl'"); |
| 320 } |
| 321 AddPair(list.get(), |
| 322 ASCIIToUTF16("Portable Native Client (PNaCl)"), |
| 323 pnacl_enabled_string); |
| 321 | 324 |
| 322 // Obtain the version of the PNaCl translator. | 325 // Obtain the version of the PNaCl translator. |
| 323 base::FilePath pnacl_path; | 326 base::FilePath pnacl_path; |
| 324 bool got_path = PathService::Get(chrome::DIR_PNACL_COMPONENT, &pnacl_path); | 327 bool got_path = PathService::Get(chrome::DIR_PNACL_COMPONENT, &pnacl_path); |
| 325 if (!got_path || pnacl_path.empty() || !pnacl_path_exists_) { | 328 if (!got_path || pnacl_path.empty() || !pnacl_path_exists_) { |
| 326 AddPair(list.get(), | 329 AddPair(list.get(), |
| 327 ASCIIToUTF16("PNaCl translator"), | 330 ASCIIToUTF16("PNaCl translator"), |
| 328 ASCIIToUTF16("Not installed")); | 331 ASCIIToUTF16("Not installed")); |
| 329 } else { | 332 } else { |
| 330 AddPair(list.get(), | 333 AddPair(list.get(), |
| 331 ASCIIToUTF16("PNaCl translator path"), | 334 ASCIIToUTF16("PNaCl translator path"), |
| 332 pnacl_path.LossyDisplayName()); | 335 pnacl_path.LossyDisplayName()); |
| 333 // Version string is part of the directory name: | 336 // Version string is part of the directory name: |
| 334 // pnacl/<version>/_platform_specific/<arch>/[files] | 337 // pnacl/<version>/_platform_specific/<arch>/[files] |
| 335 // Keep in sync with pnacl_component_installer.cc. | 338 // Keep in sync with pnacl_component_installer.cc. |
| 336 AddPair(list.get(), | 339 AddPair(list.get(), |
| 337 ASCIIToUTF16("PNaCl translator version"), | 340 ASCIIToUTF16("PNaCl translator version"), |
| 338 pnacl_path.DirName().DirName().BaseName().LossyDisplayName()); | 341 pnacl_path.DirName().DirName().BaseName().LossyDisplayName()); |
| 339 } | 342 } |
| 340 | 343 |
| 341 ListFlagStatus(list.get(), "Flag '--enable-pnacl'", switches::kEnablePnacl); | 344 AddLineBreak(list.get()); |
| 345 |
| 346 // Display whether NaCl is enabled. |
| 347 |
| 348 string16 nacl_enabled_string = ASCIIToUTF16("Disabled"); |
| 349 if (plugin_enabled && |
| 350 CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaCl)) { |
| 351 nacl_enabled_string = ASCIIToUTF16("Enabled by flag '--enable-nacl'"); |
| 352 } |
| 353 AddPair(list.get(), |
| 354 ASCIIToUTF16("Native Client (non-portable, outside web store)"), |
| 355 nacl_enabled_string); |
| 356 |
| 342 // naclInfo will take ownership of list, and clean it up on destruction. | 357 // naclInfo will take ownership of list, and clean it up on destruction. |
| 343 naclInfo->Set("naclInfo", list.release()); | 358 naclInfo->Set("naclInfo", list.release()); |
| 344 } | 359 } |
| 345 | 360 |
| 346 void NaClDomHandler::DidValidatePnaclPath(bool is_valid) { | 361 void NaClDomHandler::DidValidatePnaclPath(bool is_valid) { |
| 347 pnacl_path_validated_ = true; | 362 pnacl_path_validated_ = true; |
| 348 pnacl_path_exists_ = is_valid; | 363 pnacl_path_exists_ = is_valid; |
| 349 MaybeRespondToPage(); | 364 MaybeRespondToPage(); |
| 350 } | 365 } |
| 351 | 366 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 376 | 391 |
| 377 NaClUI::NaClUI(content::WebUI* web_ui) : WebUIController(web_ui) { | 392 NaClUI::NaClUI(content::WebUI* web_ui) : WebUIController(web_ui) { |
| 378 content::RecordAction(UserMetricsAction("ViewAboutNaCl")); | 393 content::RecordAction(UserMetricsAction("ViewAboutNaCl")); |
| 379 | 394 |
| 380 web_ui->AddMessageHandler(new NaClDomHandler()); | 395 web_ui->AddMessageHandler(new NaClDomHandler()); |
| 381 | 396 |
| 382 // Set up the about:nacl source. | 397 // Set up the about:nacl source. |
| 383 Profile* profile = Profile::FromWebUI(web_ui); | 398 Profile* profile = Profile::FromWebUI(web_ui); |
| 384 content::WebUIDataSource::Add(profile, CreateNaClUIHTMLSource()); | 399 content::WebUIDataSource::Add(profile, CreateNaClUIHTMLSource()); |
| 385 } | 400 } |
| OLD | NEW |