diff options
Diffstat (limited to 'chrome/browser/views/extensions/extension_install_prompt2.cc')
-rw-r--r-- | chrome/browser/views/extensions/extension_install_prompt2.cc | 320 |
1 files changed, 0 insertions, 320 deletions
diff --git a/chrome/browser/views/extensions/extension_install_prompt2.cc b/chrome/browser/views/extensions/extension_install_prompt2.cc deleted file mode 100644 index ba9631e..0000000 --- a/chrome/browser/views/extensions/extension_install_prompt2.cc +++ /dev/null @@ -1,320 +0,0 @@ -// Copyright (c) 2010 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 "app/l10n_util.h" -#include "base/string_util.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_list.h" -#include "chrome/browser/browser_window.h" -#include "chrome/browser/extensions/extension_install_ui.h" -#include "chrome/common/extensions/extension.h" -#include "chrome/browser/views/window.h" -#include "grit/generated_resources.h" -#include "views/controls/image_view.h" -#include "views/controls/label.h" -#include "views/standard_layout.h" -#include "views/view.h" -#include "views/window/dialog_delegate.h" -#include "views/window/window.h" - -class Profile; - -namespace { - -// Size of extension icon in top left of dialog. -const int kIconSize = 69; - -// Width of the white permission box. This also is the max width of all -// elements in the right column of the dialog in the case where the extension -// requests permissions. -const int kPermissionBoxWidth = 270; - -// Width of the right column of the dialog when the extension requests no -// permissions. -const int kNoPermissionsRightColumnWidth = 210; - -// Width of the gray border around the permission box. -const int kPermissionBoxBorderWidth = 1; - -// Width of the horizontal padding inside the permission box border. -const int kPermissionBoxHorizontalPadding = 10; - -// Width of the vertical padding inside the permission box border. -const int kPermissionBoxVerticalPadding = 11; - -// The max width of the individual permission strings inside the permission -// box. -const int kPermissionLabelWidth = - kPermissionBoxWidth - - kPermissionBoxBorderWidth * 2 - - kPermissionBoxHorizontalPadding * 2; - -} // namespace - - -// Implements the extension installation prompt for TOOLKIT_VIEWS. -class InstallDialogContent2 - : public views::View, public views::DialogDelegate { - public: - InstallDialogContent2(ExtensionInstallUI::Delegate* delegate, - const Extension* extension, - SkBitmap* icon, - const std::vector<string16>& permissions); - - private: - // DialogDelegate overrides. - virtual std::wstring GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const; - virtual int GetDefaultDialogButton() const; - virtual bool Accept(); - virtual bool Cancel(); - - // WindowDelegate overrides. - virtual bool IsModal() const; - virtual std::wstring GetWindowTitle() const; - virtual views::View* GetContentsView(); - - // View overrides. - virtual gfx::Size GetPreferredSize(); - virtual void Layout(); - - // The delegate that we will call back to when the user accepts or rejects - // the installation. - ExtensionInstallUI::Delegate* delegate_; - - // Displays the extension's icon. - views::ImageView* icon_; - - // Displays the main heading "Install FooBar?". - views::Label* heading_; - - // Displays the permission box header "The extension will have access to:". - views::Label* will_have_access_to_; - - // The white box containing the list of permissions the extension requires. - // This can be NULL if the extension requires no permissions. - views::View* permission_box_; - - // The labels describing each of the permissions the extension requires. - std::vector<views::Label*> permissions_; - - // The width of the right column of the dialog. Will be either - // kPermissionBoxWidth or kNoPermissionsRightColumnWidth, depending on - // whether the extension requires any permissions. - int right_column_width_; - - DISALLOW_COPY_AND_ASSIGN(InstallDialogContent2); -}; - - -InstallDialogContent2::InstallDialogContent2( - ExtensionInstallUI::Delegate* delegate, const Extension* extension, - SkBitmap* icon, const std::vector<string16>& permissions) - : delegate_(delegate), - icon_(NULL), - heading_(NULL), - will_have_access_to_(NULL), - permission_box_(NULL), - right_column_width_(0) { - // Scale down to icon size, but allow smaller icons (don't scale up). - gfx::Size size(icon->width(), icon->height()); - if (size.width() > kIconSize || size.height() > kIconSize) - size = gfx::Size(kIconSize, kIconSize); - icon_ = new views::ImageView(); - icon_->SetImageSize(size); - icon_->SetImage(*icon); - icon_->SetHorizontalAlignment(views::ImageView::CENTER); - icon_->SetVerticalAlignment(views::ImageView::CENTER); - AddChildView(icon_); - - heading_ = new views::Label( - l10n_util::GetStringF(IDS_EXTENSION_INSTALL_PROMPT_HEADING, - UTF8ToWide(extension->name()))); - heading_->SetFont(heading_->font().DeriveFont(1, gfx::Font::BOLD)); - heading_->SetMultiLine(true); - heading_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); - AddChildView(heading_); - - if (permissions.size() == 0) { - right_column_width_ = kNoPermissionsRightColumnWidth; - } else { - right_column_width_ = kPermissionBoxWidth; - int label = extension->is_app() ? - IDS_EXTENSION_PROMPT2_APP_WILL_HAVE_ACCESS_TO : - IDS_EXTENSION_PROMPT2_WILL_HAVE_ACCESS_TO; - will_have_access_to_ = new views::Label(l10n_util::GetString(label)); - will_have_access_to_->SetMultiLine(true); - will_have_access_to_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); - AddChildView(will_have_access_to_); - - permission_box_ = new views::View(); - permission_box_->set_background( - views::Background::CreateSolidBackground(SK_ColorWHITE)); - permission_box_->set_border( - views::Border::CreateSolidBorder(kPermissionBoxBorderWidth, - SK_ColorLTGRAY)); - AddChildView(permission_box_); - } - - for (size_t i = 0; i < permissions.size(); ++i) { - views::Label* label = new views::Label(UTF16ToWide(permissions[i])); - label->SetMultiLine(true); - label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); - permission_box_->AddChildView(label); - permissions_.push_back(label); - } -} - -std::wstring InstallDialogContent2::GetDialogButtonLabel( - MessageBoxFlags::DialogButton button) const { - switch (button) { - case MessageBoxFlags::DIALOGBUTTON_OK: - return l10n_util::GetString(IDS_EXTENSION_PROMPT_INSTALL_BUTTON); - case MessageBoxFlags::DIALOGBUTTON_CANCEL: - return l10n_util::GetString(IDS_CANCEL); - default: - NOTREACHED(); - return L""; - } -} - -int InstallDialogContent2::GetDefaultDialogButton() const { - return MessageBoxFlags::DIALOGBUTTON_CANCEL; -} - -bool InstallDialogContent2::Accept() { - delegate_->InstallUIProceed(); - return true; -} - -bool InstallDialogContent2::Cancel() { - delegate_->InstallUIAbort(); - return true; -} - -bool InstallDialogContent2::IsModal() const { - return true; -} - -std::wstring InstallDialogContent2::GetWindowTitle() const { - return l10n_util::GetString(IDS_EXTENSION_INSTALL_PROMPT_TITLE); -} - -views::View* InstallDialogContent2::GetContentsView() { - return this; -} - -gfx::Size InstallDialogContent2::GetPreferredSize() { - int width = kPanelHorizMargin * 2; - width += kIconSize; - width += kPanelHorizMargin; // Gutter. - width += right_column_width_; - - int height = kPanelVertMargin * 2; - height += heading_->GetHeightForWidth(right_column_width_); - - if (permission_box_) { - height += kRelatedControlVerticalSpacing; - height += will_have_access_to_->GetHeightForWidth(right_column_width_); - - height += kRelatedControlVerticalSpacing; - height += kPermissionBoxBorderWidth * 2; - height += kPermissionBoxVerticalPadding * 2; - - for (size_t i = 0; i < permissions_.size(); ++i) { - if (i > 0) - height += kRelatedControlVerticalSpacing; - height += permissions_[0]->GetHeightForWidth(kPermissionLabelWidth); - } - } - - return gfx::Size(width, std::max(height, kIconSize + kPanelVertMargin * 2)); -} - -void InstallDialogContent2::Layout() { - int x = kPanelHorizMargin; - int y = kPanelVertMargin; - - icon_->SetBounds(x, y, kIconSize, kIconSize); - x += kIconSize; - x += kPanelHorizMargin; - - heading_->SizeToFit(right_column_width_); - heading_->SetX(x); - - // If there's no special permissions, we do a slightly different layout with - // the heading centered vertically wrt the icon. - if (!permission_box_) { - heading_->SetY((GetPreferredSize().height() - heading_->height()) / 2); - return; - } - - // Otherwise, do the layout with the permission box. - heading_->SetY(y); - y += heading_->height(); - - y += kRelatedControlVerticalSpacing; - will_have_access_to_->SizeToFit(right_column_width_); - will_have_access_to_->SetX(x); - will_have_access_to_->SetY(y); - y += will_have_access_to_->height(); - - y += kRelatedControlVerticalSpacing; - permission_box_->SetX(x); - permission_box_->SetY(y); - - // First we layout the labels inside the permission box, so that we know how - // big the box will have to be. - int label_x = kPermissionBoxBorderWidth + kPermissionBoxHorizontalPadding; - int label_y = kPermissionBoxBorderWidth + kPermissionBoxVerticalPadding; - int permission_box_height = kPermissionBoxBorderWidth * 2; - permission_box_height += kPermissionBoxVerticalPadding * 2; - - for (size_t i = 0; i < permissions_.size(); ++i) { - if (i > 0) { - label_y += kRelatedControlVerticalSpacing; - permission_box_height += kPanelVertMargin; - } - - permissions_[i]->SizeToFit(kPermissionLabelWidth); - permissions_[i]->SetX(label_x); - permissions_[i]->SetY(label_y); - - label_y += permissions_[i]->height(); - permission_box_height += permissions_[i]->height(); - } - - // Now finally we can size the permission box itself. - permission_box_->SetBounds(permission_box_->x(), permission_box_->y(), - right_column_width_, permission_box_height); -} - -// static -void ExtensionInstallUI::ShowExtensionInstallUIPrompt2Impl( - Profile* profile, Delegate* delegate, const Extension* extension, - SkBitmap* icon, - const std::vector<string16>& permissions) { -#if defined(OS_CHROMEOS) - // Use a normal browser window as parent on ChromeOS. - Browser* browser = BrowserList::FindBrowserWithType(profile, - Browser::TYPE_NORMAL, - true); -#else - Browser* browser = BrowserList::GetLastActiveWithProfile(profile); -#endif - if (!browser) { - delegate->InstallUIAbort(); - return; - } - - BrowserWindow* window = browser->window(); - if (!window) { - delegate->InstallUIAbort(); - return; - } - - browser::CreateViewsWindow(window->GetNativeHandle(), gfx::Rect(), - new InstallDialogContent2(delegate, extension, icon, permissions)) - ->Show(); -} |