diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-26 03:54:27 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-26 03:54:27 +0000 |
commit | 765b4b9f6ae50f98592cbb382c3cdbc0cf7ea899 (patch) | |
tree | 926362fa44163093f6f5e08e73f56ff0713dcab7 /chrome/browser/extensions | |
parent | 74c933eed60f29d0ddfc47fd1dbdbfdea4c9f6ca (diff) | |
download | chromium_src-765b4b9f6ae50f98592cbb382c3cdbc0cf7ea899.zip chromium_src-765b4b9f6ae50f98592cbb382c3cdbc0cf7ea899.tar.gz chromium_src-765b4b9f6ae50f98592cbb382c3cdbc0cf7ea899.tar.bz2 |
Fix broken tree on mac/linux.
Review URL: http://codereview.chromium.org/159389
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21623 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
3 files changed, 109 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc index a409244..38947aa 100644 --- a/chrome/browser/extensions/extensions_service.cc +++ b/chrome/browser/extensions/extensions_service.cc @@ -28,7 +28,7 @@ #include "chrome/browser/extensions/extension_updater.h" #include "chrome/browser/extensions/external_extension_provider.h" #include "chrome/browser/extensions/external_pref_extension_provider.h" -#include "chrome/browser/views/extensions/theme_preview_infobar_delegate.h" +#include "chrome/browser/extensions/theme_preview_infobar_delegate.h" #include "chrome/browser/profile.h" #include "chrome/browser/tab_contents/tab_contents.h" #include "chrome/browser/utility_process_host.h" diff --git a/chrome/browser/extensions/theme_preview_infobar_delegate.cc b/chrome/browser/extensions/theme_preview_infobar_delegate.cc new file mode 100644 index 0000000..7e6f63a --- /dev/null +++ b/chrome/browser/extensions/theme_preview_infobar_delegate.cc @@ -0,0 +1,72 @@ +// Copyright (c) 2009 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/views/extensions/theme_preview_infobar_delegate.h" + +#include "app/l10n_util.h" +#include "base/string_util.h" +#include "chrome/browser/profile.h" +#include "chrome/browser/tab_contents/tab_contents.h" +#include "grit/generated_resources.h" + +ThemePreviewInfobarDelegate::ThemePreviewInfobarDelegate( + TabContents* tab_contents, const std::string& name) + : ConfirmInfoBarDelegate(tab_contents), + profile_(tab_contents->profile()), name_(name), + selection_made_(false) { +} + +void ThemePreviewInfobarDelegate::InfoBarClosed() { + if (!selection_made_) + profile_->ClearTheme(); + + delete this; +} + +std::wstring ThemePreviewInfobarDelegate::GetMessageText() const { + return l10n_util::GetStringF(IDS_THEME_PREVIEW_INFOBAR_LABEL, + UTF8ToWide(name_)); +} + +SkBitmap* ThemePreviewInfobarDelegate::GetIcon() const { + // TODO(aa): Reply with the theme's icon, but this requires reading it + // asynchronously from disk. + return NULL; +} + +int ThemePreviewInfobarDelegate::GetButtons() const { + return BUTTON_OK | BUTTON_CANCEL; +} + +std::wstring ThemePreviewInfobarDelegate::GetButtonLabel( + ConfirmInfoBarDelegate::InfoBarButton button) const { + switch (button) { + case BUTTON_OK: + return l10n_util::GetString(IDS_THEME_PREVIEW_INFOBAR_OK_BUTTON); + case BUTTON_CANCEL: + return l10n_util::GetString(IDS_THEME_PREVIEW_INFOBAR_CANCEL_BUTTON); + default: + NOTREACHED(); + return L""; + } +} + +bool ThemePreviewInfobarDelegate::Accept() { + selection_made_ = true; + return true; +} + +bool ThemePreviewInfobarDelegate::Cancel() { + selection_made_ = true; + + // Blech, this is a total hack. + // + // a) We should be uninstalling via ExtensionsService, not + // Profile::ClearTheme(). + // b) We should be able to view the theme without installing it. This would + // help in edge cases like the user closing the window or tab before making + // a decision. + profile_->ClearTheme(); + return true; +} diff --git a/chrome/browser/extensions/theme_preview_infobar_delegate.h b/chrome/browser/extensions/theme_preview_infobar_delegate.h new file mode 100644 index 0000000..4fa4dd2 --- /dev/null +++ b/chrome/browser/extensions/theme_preview_infobar_delegate.h @@ -0,0 +1,36 @@ +// Copyright (c) 2009 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. + +#ifndef CHROME_BROWSER_VIEWS_EXTENSIONS_THEME_PREVIEW_INFOBAR_DELEGATE_H_ +#define CHROME_BROWSER_VIEWS_EXTENSIONS_THEME_PREVIEW_INFOBAR_DELEGATE_H_ + +#include "chrome/browser/tab_contents/infobar_delegate.h" + +class Extension; +class ExtensionsService; +class SkBitmap; +class TabContents; + +// When a user installs a theme, we display it immediately, but provide an +// infobar allowing them to cancel. +class ThemePreviewInfobarDelegate : public ConfirmInfoBarDelegate { + public: + ThemePreviewInfobarDelegate(TabContents* tab_contents, + const std::string& name); + virtual void InfoBarClosed(); + virtual std::wstring GetMessageText() const; + virtual SkBitmap* GetIcon() const; + virtual int GetButtons() const; + virtual std::wstring GetButtonLabel( + ConfirmInfoBarDelegate::InfoBarButton button) const; + virtual bool Accept(); + virtual bool Cancel(); + + private: + Profile* profile_; + std::string name_; // name of theme to install + bool selection_made_; // whether the user has made a selection yet +}; + +#endif // CHROME_BROWSER_VIEWS_EXTENSIONS_THEME_PREVIEW_INFOBAR_DELEGATE_H_ |