| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/extensions/device_permissions_dialog_controller.h" |
| |
| #include "chrome/grit/generated_resources.h" |
| #include "extensions/strings/grit/extensions_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| DevicePermissionsDialogController::DevicePermissionsDialogController( |
| content::RenderFrameHost* owner, |
| scoped_refptr<extensions::DevicePermissionsPrompt::Prompt> prompt) |
| : ChooserController( |
| owner, |
| prompt->multiple() ? IDS_DEVICE_PERMISSIONS_PROMPT_MULTIPLE_SELECTION |
| : IDS_DEVICE_PERMISSIONS_PROMPT_SINGLE_SELECTION, |
| prompt->multiple() ? IDS_DEVICE_PERMISSIONS_PROMPT_MULTIPLE_SELECTION |
| : IDS_DEVICE_PERMISSIONS_PROMPT_SINGLE_SELECTION), |
| prompt_(prompt) { |
| prompt_->SetObserver(this); |
| } |
| |
| DevicePermissionsDialogController::~DevicePermissionsDialogController() { |
| prompt_->SetObserver(nullptr); |
| } |
| |
| bool DevicePermissionsDialogController::ShouldShowHelpButton() const { |
| return false; |
| } |
| |
| bool DevicePermissionsDialogController::AllowMultipleSelection() const { |
| return prompt_->multiple(); |
| } |
| |
| base::string16 DevicePermissionsDialogController::GetNoOptionsText() const { |
| return l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_NO_DEVICES_FOUND_PROMPT); |
| } |
| |
| base::string16 DevicePermissionsDialogController::GetOkButtonLabel() const { |
| return l10n_util::GetStringUTF16(IDS_DEVICE_PERMISSIONS_DIALOG_SELECT); |
| } |
| |
| size_t DevicePermissionsDialogController::NumOptions() const { |
| return prompt_->GetDeviceCount(); |
| } |
| |
| base::string16 DevicePermissionsDialogController::GetOption( |
| size_t index) const { |
| base::string16 device_name = prompt_->GetDeviceName(index); |
| const auto& it = device_name_map_.find(device_name); |
| DCHECK(it != device_name_map_.end()); |
| return it->second == 1 |
| ? device_name |
| : l10n_util::GetStringFUTF16( |
| IDS_DEVICE_CHOOSER_DEVICE_NAME_WITH_ID, device_name, |
| prompt_->GetDeviceSerialNumber(index)); |
| } |
| |
| void DevicePermissionsDialogController::Select( |
| const std::vector<size_t>& indices) { |
| for (size_t index : indices) |
| prompt_->GrantDevicePermission(index); |
| prompt_->Dismissed(); |
| } |
| |
| void DevicePermissionsDialogController::Cancel() { |
| prompt_->Dismissed(); |
| } |
| |
| void DevicePermissionsDialogController::Close() { |
| prompt_->Dismissed(); |
| } |
| |
| void DevicePermissionsDialogController::OpenHelpCenterUrl() const {} |
| |
| void DevicePermissionsDialogController::OnDeviceAdded( |
| size_t index, |
| const base::string16& device_name) { |
| if (view()) { |
| ++device_name_map_[device_name]; |
| view()->OnOptionAdded(index); |
| } |
| } |
| |
| void DevicePermissionsDialogController::OnDeviceRemoved( |
| size_t index, |
| const base::string16& device_name) { |
| if (view()) { |
| DCHECK_GT(device_name_map_[device_name], 0); |
| if (--device_name_map_[device_name] == 0) |
| device_name_map_.erase(device_name); |
| view()->OnOptionRemoved(index); |
| } |
| } |