Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4357)

Unified Diff: chrome/browser/page_info_model.cc

Issue 3560004: Refactor the code for loading icons into the PageInfoModel. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: cleanup Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/page_info_model.h ('k') | chrome/browser/views/page_info_bubble_view.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/page_info_model.cc
diff --git a/chrome/browser/page_info_model.cc b/chrome/browser/page_info_model.cc
index 6fc74435a296c860c58ab2c310aa8e89e95ddd7c..2b2e8dacfa09983c06f40e6358fb6b979e2bb275 100644
--- a/chrome/browser/page_info_model.cc
+++ b/chrome/browser/page_info_model.cc
@@ -7,6 +7,7 @@
#include <string>
#include "app/l10n_util.h"
+#include "app/resource_bundle.h"
#include "base/command_line.h"
#include "base/i18n/time_formatting.h"
#include "base/string_number_conversions.h"
@@ -18,18 +19,25 @@
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
#include "net/base/cert_status_flags.h"
#include "net/base/ssl_connection_status_flags.h"
#include "net/base/ssl_cipher_suite_names.h"
#include "net/base/x509_certificate.h"
+#if defined(OS_MACOSX)
+#include "base/mac_util.h"
+#endif
+
PageInfoModel::PageInfoModel(Profile* profile,
const GURL& url,
const NavigationEntry::SSLStatus& ssl,
bool show_history,
PageInfoModelObserver* observer)
: observer_(observer) {
- SectionInfoState state = SECTION_STATE_OK;
+ Init();
+
+ SectionStateIcon icon_id = ICON_STATE_OK;
string16 headline;
string16 description;
scoped_refptr<net::X509Certificate> cert;
@@ -74,7 +82,7 @@ PageInfoModel::PageInfoModel(Profile* profile,
} else {
NOTREACHED() << "Need to specify string for this warning";
}
- state = SECTION_STATE_WARNING_MINOR;
+ icon_id = ICON_STATE_WARNING_MINOR;
} else if ((ssl.cert_status() & net::CERT_STATUS_IS_EV) != 0) {
// EV HTTPS page.
DCHECK(!cert->subject().organization_names.empty());
@@ -131,11 +139,11 @@ PageInfoModel::PageInfoModel(Profile* profile,
// HTTP or HTTPS with errors (not warnings).
description.assign(l10n_util::GetStringUTF16(
IDS_PAGE_INFO_SECURITY_TAB_INSECURE_IDENTITY));
- state = ssl.security_style() == SECURITY_STYLE_UNAUTHENTICATED ?
- SECTION_STATE_WARNING_MAJOR : SECTION_STATE_ERROR;
+ icon_id = ssl.security_style() == SECURITY_STYLE_UNAUTHENTICATED ?
+ ICON_STATE_WARNING_MAJOR : ICON_STATE_ERROR;
}
sections_.push_back(SectionInfo(
- state,
+ icon_id,
l10n_util::GetStringUTF16(IDS_PAGE_INFO_SECURITY_TAB_IDENTITY_TITLE),
headline,
description,
@@ -145,20 +153,20 @@ PageInfoModel::PageInfoModel(Profile* profile,
// We consider anything less than 80 bits encryption to be weak encryption.
// TODO(wtc): Bug 1198735: report mixed/unsafe content for unencrypted and
// weakly encrypted connections.
- state = SECTION_STATE_OK;
+ icon_id = ICON_STATE_OK;
headline.clear();
description.clear();
if (ssl.security_bits() < 0) {
// Security strength is unknown. Say nothing.
- state = SECTION_STATE_ERROR;
+ icon_id = ICON_STATE_ERROR;
} else if (ssl.security_bits() == 0) {
- state = ssl.security_style() == SECURITY_STYLE_UNAUTHENTICATED ?
- SECTION_STATE_WARNING_MAJOR : SECTION_STATE_ERROR;
+ icon_id = ssl.security_style() == SECURITY_STYLE_UNAUTHENTICATED ?
+ ICON_STATE_WARNING_MAJOR : ICON_STATE_ERROR;
description.assign(l10n_util::GetStringFUTF16(
IDS_PAGE_INFO_SECURITY_TAB_NOT_ENCRYPTED_CONNECTION_TEXT,
subject_name));
} else if (ssl.security_bits() < 80) {
- state = SECTION_STATE_ERROR;
+ icon_id = ICON_STATE_ERROR;
description.assign(l10n_util::GetStringFUTF16(
IDS_PAGE_INFO_SECURITY_TAB_WEAK_ENCRYPTION_CONNECTION_TEXT,
subject_name));
@@ -176,9 +184,9 @@ PageInfoModel::PageInfoModel(Profile* profile,
const CommandLine* command_line(CommandLine::ForCurrentProcess());
if (command_line->HasSwitch(switches::kEnableNewPageInfoBubble) &&
!ssl.ran_insecure_content()) {
- state = SECTION_STATE_WARNING_MINOR;
+ icon_id = ICON_STATE_WARNING_MINOR;
} else {
- state = SECTION_STATE_ERROR;
+ icon_id = ICON_STATE_ERROR;
}
description.assign(l10n_util::GetStringFUTF16(
IDS_PAGE_INFO_SECURITY_TAB_ENCRYPTED_SENTENCE_LINK,
@@ -221,7 +229,7 @@ PageInfoModel::PageInfoModel(Profile* profile,
if (did_fallback) {
// For now, only SSLv3 fallback will trigger a warning icon.
- state = SECTION_STATE_ERROR;
+ icon_id = ICON_STATE_ERROR;
description += ASCIIToUTF16("\n\n");
description += l10n_util::GetStringUTF16(
IDS_PAGE_INFO_SECURITY_TAB_FALLBACK_MESSAGE);
@@ -235,7 +243,7 @@ PageInfoModel::PageInfoModel(Profile* profile,
if (!description.empty()) {
sections_.push_back(SectionInfo(
- state,
+ icon_id,
l10n_util::GetStringUTF16(IDS_PAGE_INFO_SECURITY_TAB_CONNECTION_TITLE),
headline,
description,
@@ -254,6 +262,13 @@ PageInfoModel::PageInfoModel(Profile* profile,
}
PageInfoModel::~PageInfoModel() {
+#if defined(OS_MACOSX)
+ // Release the NSImages.
+ for (std::vector<ImageType>::iterator it = icons_.begin();
+ it != icons_.end(); ++it) {
+ mac_util::NSObjectRelease(*it);
+ }
+#endif
}
int PageInfoModel::GetSectionCount() {
@@ -265,6 +280,19 @@ PageInfoModel::SectionInfo PageInfoModel::GetSectionInfo(int index) {
return sections_[index];
}
+PageInfoModel::ImageType PageInfoModel::GetIconImage(SectionStateIcon icon_id) {
+ if (icon_id == ICON_NONE)
+ return NULL;
+ // TODO(rsesek): Remove once the window is replaced with the bubble.
+ const CommandLine* command_line(CommandLine::ForCurrentProcess());
+ if (!command_line->HasSwitch(switches::kEnableNewPageInfoBubble) &&
+ icon_id != ICON_STATE_OK) {
+ return icons_[ICON_STATE_WARNING_MAJOR];
+ }
+ // The buble uses new, various icons.
+ return icons_[icon_id];
+}
+
void PageInfoModel::OnGotVisitCountToHost(HistoryService::Handle handle,
bool found_visits,
int count,
@@ -284,12 +312,13 @@ void PageInfoModel::OnGotVisitCountToHost(HistoryService::Handle handle,
// We only show the Site Information heading for the new dialogs.
string16 title;
const CommandLine* command_line(CommandLine::ForCurrentProcess());
- if (command_line->HasSwitch(switches::kEnableNewPageInfoBubble))
+ bool as_bubble = command_line->HasSwitch(switches::kEnableNewPageInfoBubble);
+ if (as_bubble)
title = l10n_util::GetStringUTF16(IDS_PAGE_INFO_SITE_INFO_TITLE);
if (!visited_before_today) {
sections_.push_back(SectionInfo(
- SECTION_STATE_ERROR,
+ ICON_STATE_WARNING_MAJOR,
l10n_util::GetStringUTF16(
IDS_PAGE_INFO_SECURITY_TAB_PERSONAL_HISTORY_TITLE),
title,
@@ -298,7 +327,8 @@ void PageInfoModel::OnGotVisitCountToHost(HistoryService::Handle handle,
SECTION_INFO_FIRST_VISIT));
} else {
sections_.push_back(SectionInfo(
- SECTION_STATE_OK,
+ // TODO(rsesek): Remove once the window is replaced with the bubble.
+ as_bubble ? ICON_STATE_INFO : ICON_STATE_OK,
l10n_util::GetStringUTF16(
IDS_PAGE_INFO_SECURITY_TAB_PERSONAL_HISTORY_TITLE),
title,
@@ -316,4 +346,30 @@ void PageInfoModel::RegisterPrefs(PrefService* prefs) {
}
PageInfoModel::PageInfoModel() {
+ Init();
+}
+
+void PageInfoModel::Init() {
+ // Loads the icons into the vector. The order must match the SectionStateIcon
+ // enum.
+ icons_.push_back(GetBitmapNamed(IDR_PAGEINFO_GOOD));
+ icons_.push_back(GetBitmapNamed(IDR_PAGEINFO_WARNING_MINOR));
+ icons_.push_back(GetBitmapNamed(IDR_PAGEINFO_WARNING_MAJOR));
+ icons_.push_back(GetBitmapNamed(IDR_PAGEINFO_BAD));
+ icons_.push_back(GetBitmapNamed(IDR_PAGEINFO_INFO));
+}
+
+PageInfoModel::ImageType PageInfoModel::GetBitmapNamed(int resource_id) {
+ ResourceBundle& rb = ResourceBundle::GetSharedInstance();
+#if defined(OS_MACOSX)
+ // Unlike other platforms, the Mac ResourceBundle does not keep a shared image
+ // cache. These are released in the dtor.
+ ImageType image = rb.GetNSImageNamed(resource_id);
+ mac_util::NSObjectRetain(image);
+ return image;
+#elif defined(USE_X11) && !defined(TOOLKIT_VIEWS)
+ return rb.GetPixbufNamed(resource_id);
+#else
+ return rb.GetBitmapNamed(resource_id);
+#endif
}
« no previous file with comments | « chrome/browser/page_info_model.h ('k') | chrome/browser/views/page_info_bubble_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698