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