obsolete_system_infobar_delegate.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/ui/startup/obsolete_system_infobar_delegate.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "chrome/browser/infobars/infobar.h"
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/infobars/infobar_service.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/common/url_constants.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/chromium_strings.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/generated_resources.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX)
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "chrome/browser/mac/obsolete_system.h"
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(TOOLKIT_GTK)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <gtk/gtk.h>
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void ObsoleteSystemInfoBarDelegate::Create(InfoBarService* infobar_service) {
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX)
265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  if (!ObsoleteSystemMac::Is32BitObsoleteNowOrSoon() ||
275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      !ObsoleteSystemMac::Has32BitOnlyCPU()) {
285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    return;
295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  }
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#elif defined(TOOLKIT_GTK)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // We've deprecated support for Ubuntu Lucid.  Rather than attempting to
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // determine whether you're using that, we instead key off the GTK version;
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // this will also deprecate other distributions (including variants of Ubuntu)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // that are of a similar age.
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Version key:
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   RHEL 6:             GTK 2.18
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   Debian 6 (Squeeze): GTK 2.20
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   Ubuntu Lucid:       GTK 2.20
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   openSUSE 12.2       GTK 2.24
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  //   Ubuntu Precise:     GTK 2.24
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!gtk_check_version(2, 24, 0))
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return;
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#else
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // No other platforms currently show this infobar.
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
48a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  infobar_service->AddInfoBar(ConfirmInfoBarDelegate::CreateInfoBar(
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      scoped_ptr<ConfirmInfoBarDelegate>(new ObsoleteSystemInfoBarDelegate())));
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ObsoleteSystemInfoBarDelegate::ObsoleteSystemInfoBarDelegate()
53a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    : ConfirmInfoBarDelegate() {
54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
565d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)ObsoleteSystemInfoBarDelegate::~ObsoleteSystemInfoBarDelegate() {
57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
595d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ObsoleteSystemInfoBarDelegate::GetMessageText() const {
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX)
615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return ObsoleteSystemMac::LocalizedObsoleteSystemString();
625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else
637dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return l10n_util::GetStringUTF16(IDS_SYSTEM_OBSOLETE_MESSAGE);
645d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)int ObsoleteSystemInfoBarDelegate::GetButtons() const {
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return BUTTON_NONE;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)base::string16 ObsoleteSystemInfoBarDelegate::GetLinkText() const {
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return l10n_util::GetStringUTF16(IDS_LEARN_MORE);
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool ObsoleteSystemInfoBarDelegate::LinkClicked(
765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    WindowOpenDisposition disposition) {
777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  web_contents()->OpenURL(content::OpenURLParams(
785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#if defined(OS_MACOSX)
795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      GURL(chrome::kMac32BitDeprecationURL),
805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#else
817dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      GURL("http://www.google.com/support/chrome/bin/answer.py?answer=95411"),
825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif
837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      content::Referrer(),
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      (disposition == CURRENT_TAB) ? NEW_FOREGROUND_TAB : disposition,
857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      content::PAGE_TRANSITION_LINK, false));
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
88