From f4f50efb4d3ee42470c8057345e902ac42e76801 Mon Sep 17 00:00:00 2001 From: "pkasting@chromium.org" Date: Fri, 21 Jan 2011 19:01:19 +0000 Subject: Cleanup: de-inline a bunch of classes, rename and move "PluginInstaller" to "PluginInstallerInfoBarDelegate" for clarity, lots of other misc. stuff BUG=none TEST=none Review URL: http://codereview.chromium.org/6249010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72166 0039d316-1c4b-4281-b951-d872f2087c98 --- .../browser/plugin_installer_infobar_delegate.cc | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 chrome/browser/plugin_installer_infobar_delegate.cc (limited to 'chrome/browser/plugin_installer_infobar_delegate.cc') diff --git a/chrome/browser/plugin_installer_infobar_delegate.cc b/chrome/browser/plugin_installer_infobar_delegate.cc new file mode 100644 index 0000000..867ae2d --- /dev/null +++ b/chrome/browser/plugin_installer_infobar_delegate.cc @@ -0,0 +1,82 @@ +// Copyright (c) 2011 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/plugin_installer_infobar_delegate.h" + +#include "app/l10n_util.h" +#include "app/resource_bundle.h" +#include "chrome/browser/renderer_host/render_view_host.h" +#include "chrome/browser/tab_contents/tab_contents.h" +#include "grit/generated_resources.h" +#include "grit/locale_settings.h" +#include "grit/theme_resources.h" +#include "webkit/plugins/npapi/default_plugin_shared.h" + +PluginInstallerInfoBarDelegate::PluginInstallerInfoBarDelegate( + TabContents* tab_contents) + : ConfirmInfoBarDelegate(tab_contents), + tab_contents_(tab_contents) { +} + +PluginInstallerInfoBarDelegate::~PluginInstallerInfoBarDelegate() { + // Remove any InfoBars we may be showing. + tab_contents_->RemoveInfoBar(this); +} + +void PluginInstallerInfoBarDelegate::OnMissingPluginStatus(int status) { + switch (status) { + case webkit::npapi::default_plugin::MISSING_PLUGIN_AVAILABLE: { + tab_contents_->AddInfoBar(this); + break; + } + case webkit::npapi::default_plugin::MISSING_PLUGIN_USER_STARTED_DOWNLOAD: { + // Hide the InfoBar if user already started download/install of the + // missing plugin. + tab_contents_->RemoveInfoBar(this); + break; + } + default: { + NOTREACHED(); + break; + } + } +} + +SkBitmap* PluginInstallerInfoBarDelegate::GetIcon() const { + return ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_INFOBAR_PLUGIN_INSTALL); +} + +string16 PluginInstallerInfoBarDelegate::GetMessageText() const { + return l10n_util::GetStringUTF16(IDS_PLUGININSTALLER_MISSINGPLUGIN_PROMPT); +} + +int PluginInstallerInfoBarDelegate::GetButtons() const { + return BUTTON_OK; +} + +string16 PluginInstallerInfoBarDelegate::GetButtonLabel( + InfoBarButton button) const { + DCHECK_EQ(BUTTON_OK, button); + return l10n_util::GetStringUTF16(IDS_PLUGININSTALLER_INSTALLPLUGIN_BUTTON); +} + +bool PluginInstallerInfoBarDelegate::Accept() { + tab_contents_->render_view_host()->InstallMissingPlugin(); + return true; +} + +string16 PluginInstallerInfoBarDelegate::GetLinkText() { + return l10n_util::GetStringUTF16(IDS_PLUGININSTALLER_PROBLEMSINSTALLING); +} + +bool PluginInstallerInfoBarDelegate::LinkClicked( + WindowOpenDisposition disposition) { + // Ignore the click dispostion and always open in a new top level tab. + static const char kLearnMorePluginInstallerUrl[] = "http://www.google.com/" + "support/chrome/bin/answer.py?answer=95697&topic=14687"; + tab_contents_->OpenURL(GURL(kLearnMorePluginInstallerUrl), GURL(), + NEW_FOREGROUND_TAB, PageTransition::LINK); + return false; +} -- cgit v1.1