Index: chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc |
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc |
deleted file mode 100644 |
index d6bf0efe3f1bfb42371037854a33585aaafb34b2..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_panel.cc |
+++ /dev/null |
@@ -1,202 +0,0 @@ |
-// Copyright 2014 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/ui/views/apps/app_info_dialog/app_info_permissions_panel.h" |
- |
-#include <string> |
-#include <vector> |
- |
-#include "apps/app_load_service.h" |
-#include "apps/app_restore_service.h" |
-#include "apps/saved_files_service.h" |
-#include "base/files/file_path.h" |
-#include "extensions/common/extension.h" |
-#include "extensions/common/permissions/api_permission.h" |
-#include "extensions/common/permissions/permissions_data.h" |
-#include "grit/generated_resources.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/views/controls/button/label_button.h" |
-#include "ui/views/controls/label.h" |
-#include "ui/views/layout/box_layout.h" |
-#include "ui/views/layout/layout_constants.h" |
-#include "ui/views/view.h" |
-#include "ui/views/widget/widget.h" |
- |
-AppInfoPermissionsPanel::AppInfoPermissionsPanel( |
- gfx::NativeWindow parent_window, |
- Profile* profile, |
- const extensions::Extension* app, |
- const base::Closure& close_callback) |
- : AppInfoPanel(parent_window, profile, app, close_callback), |
- active_permissions_heading_(NULL), |
- active_permissions_list_(NULL), |
- retained_files_heading_(NULL), |
- retained_files_list_(NULL), |
- revoke_file_permissions_button_(NULL) { |
- // Create UI elements. |
- CreateActivePermissionsControl(); |
- CreateRetainedFilesControl(); |
- |
- // Layout elements. |
- SetLayoutManager( |
- new views::BoxLayout(views::BoxLayout::kVertical, |
- 0, |
- 0, |
- views::kUnrelatedControlVerticalSpacing)); |
- |
- LayoutActivePermissionsControl(); |
- LayoutRetainedFilesControl(); |
-} |
- |
-AppInfoPermissionsPanel::~AppInfoPermissionsPanel() { |
- // Destroy view children before their models. |
- RemoveAllChildViews(true); |
-} |
- |
-// Given a list of strings, returns a view containing a list of these strings |
-// as bulleted items. |
-views::View* AppInfoPermissionsPanel::CreateBulletedListView( |
- const std::vector<base::string16>& messages) { |
- const int kSpacingBetweenBulletAndStartOfText = 5; |
- views::View* list_view = CreateVerticalStack(); |
- |
- for (std::vector<base::string16>::const_iterator it = messages.begin(); |
- it != messages.end(); |
- ++it) { |
- views::Label* permission_label = new views::Label(*it); |
- permission_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
- permission_label->SetMultiLine(true); |
- |
- // Extract only the bullet from the IDS_EXTENSION_PERMISSION_LINE text, and |
- // place it in it's own view so it doesn't align vertically with the |
- // multilined permissions text. |
- views::Label* bullet_label = new views::Label(l10n_util::GetStringFUTF16( |
- IDS_EXTENSION_PERMISSION_LINE, base::string16())); |
- views::View* bullet_label_top_aligned = CreateVerticalStack(); |
- bullet_label_top_aligned->AddChildView(bullet_label); |
- |
- // Place the bullet and the text so all permissions line up at the bullet. |
- views::View* bulleted_list_item = new views::View(); |
- bulleted_list_item->SetLayoutManager( |
- new views::BoxLayout(views::BoxLayout::kHorizontal, |
- 0, |
- 0, |
- kSpacingBetweenBulletAndStartOfText)); |
- bulleted_list_item->AddChildView(bullet_label_top_aligned); |
- bulleted_list_item->AddChildView(permission_label); |
- |
- list_view->AddChildView(bulleted_list_item); |
- } |
- |
- return list_view; |
-} |
- |
-void AppInfoPermissionsPanel::CreateActivePermissionsControl() { |
- std::vector<base::string16> permission_strings = |
- GetActivePermissionMessages(); |
- if (permission_strings.empty()) { |
- views::Label* no_permissions_text = new views::Label( |
- l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_NO_PERMISSIONS_TEXT)); |
- no_permissions_text->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
- active_permissions_list_ = no_permissions_text; |
- } else { |
- active_permissions_heading_ = CreateHeading(l10n_util::GetStringUTF16( |
- IDS_APPLICATION_INFO_ACTIVE_PERMISSIONS_TEXT)); |
- active_permissions_list_ = CreateBulletedListView(permission_strings); |
- } |
-} |
- |
-void AppInfoPermissionsPanel::CreateRetainedFilesControl() { |
- const std::vector<base::string16> retained_file_permission_messages = |
- GetRetainedFilePaths(); |
- |
- if (!retained_file_permission_messages.empty()) { |
- revoke_file_permissions_button_ = new views::LabelButton( |
- this, |
- l10n_util::GetStringUTF16( |
- IDS_APPLICATION_INFO_REVOKE_RETAINED_FILE_PERMISSIONS_BUTTON_TEXT)); |
- revoke_file_permissions_button_->SetStyle(views::Button::STYLE_BUTTON); |
- |
- retained_files_heading_ = CreateHeading(l10n_util::GetStringUTF16( |
- IDS_APPLICATION_INFO_RETAINED_FILE_PERMISSIONS_TEXT)); |
- retained_files_list_ = |
- CreateBulletedListView(retained_file_permission_messages); |
- } |
-} |
- |
-void AppInfoPermissionsPanel::LayoutActivePermissionsControl() { |
- if (active_permissions_list_) { |
- views::View* vertical_stack = CreateVerticalStack(); |
- if (active_permissions_heading_) |
- vertical_stack->AddChildView(active_permissions_heading_); |
- vertical_stack->AddChildView(active_permissions_list_); |
- |
- AddChildView(vertical_stack); |
- } |
-} |
- |
-void AppInfoPermissionsPanel::LayoutRetainedFilesControl() { |
- if (retained_files_list_) { |
- DCHECK(retained_files_heading_); |
- DCHECK(revoke_file_permissions_button_); |
- |
- // Add a sub-view so the revoke button is right-aligned. |
- views::View* right_aligned_button = new views::View(); |
- views::BoxLayout* right_aligned_horizontal_layout = |
- new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); |
- right_aligned_horizontal_layout->set_main_axis_alignment( |
- views::BoxLayout::MAIN_AXIS_ALIGNMENT_END); |
- right_aligned_button->SetLayoutManager(right_aligned_horizontal_layout); |
- right_aligned_button->AddChildView(revoke_file_permissions_button_); |
- |
- views::View* vertical_stack = CreateVerticalStack(); |
- vertical_stack->AddChildView(retained_files_heading_); |
- vertical_stack->AddChildView(retained_files_list_); |
- vertical_stack->AddChildView(right_aligned_button); |
- |
- AddChildView(vertical_stack); |
- } |
-} |
- |
-void AppInfoPermissionsPanel::ButtonPressed(views::Button* sender, |
- const ui::Event& event) { |
- if (sender == revoke_file_permissions_button_) { |
- RevokeFilePermissions(); |
- } else { |
- NOTREACHED(); |
- } |
-} |
- |
-const std::vector<base::string16> |
-AppInfoPermissionsPanel::GetActivePermissionMessages() const { |
- return app_->permissions_data()->GetPermissionMessageStrings(); |
-} |
- |
-const std::vector<base::string16> |
-AppInfoPermissionsPanel::GetRetainedFilePaths() const { |
- std::vector<base::string16> retained_file_paths; |
- if (app_->permissions_data()->HasAPIPermission( |
- extensions::APIPermission::kFileSystem)) { |
- std::vector<apps::SavedFileEntry> retained_file_entries = |
- apps::SavedFilesService::Get(profile_)->GetAllFileEntries(app_->id()); |
- for (std::vector<apps::SavedFileEntry>::const_iterator it = |
- retained_file_entries.begin(); |
- it != retained_file_entries.end(); |
- ++it) { |
- retained_file_paths.push_back(it->path.LossyDisplayName()); |
- } |
- } |
- return retained_file_paths; |
-} |
- |
-void AppInfoPermissionsPanel::RevokeFilePermissions() { |
- apps::SavedFilesService::Get(profile_)->ClearQueue(app_); |
- |
- // TODO(benwells): Fix this to call something like |
- // AppLoadService::RestartApplicationIfRunning. |
- if (apps::AppRestoreService::Get(profile_)->IsAppRestorable(app_->id())) |
- apps::AppLoadService::Get(profile_)->RestartApplication(app_->id()); |
- |
- GetWidget()->Close(); |
-} |