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

Side by Side Diff: chrome/browser/tab_contents/tab_contents.cc

Issue 2823042: Implement IsSearchProviderInstalled and a test for it. (Closed)
Patch Set: Addressed feedback. Created 10 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/tab_contents/tab_contents.h" 5 #include "chrome/browser/tab_contents/tab_contents.h"
6 6
7 #if defined(OS_CHROMEOS) 7 #if defined(OS_CHROMEOS)
8 // For GdkScreen 8 // For GdkScreen
9 #include <gdk/gdk.h> 9 #include <gdk/gdk.h>
10 #endif // defined(OS_CHROMEOS) 10 #endif // defined(OS_CHROMEOS)
(...skipping 2693 matching lines...) Expand 10 before | Expand all | Expand 10 after
2704 // Download the OpenSearch description document. If this is successful a 2704 // Download the OpenSearch description document. If this is successful a
2705 // new keyword will be created when done. 2705 // new keyword will be created when done.
2706 profile()->GetTemplateURLFetcher()->ScheduleDownload( 2706 profile()->GetTemplateURLFetcher()->ScheduleDownload(
2707 keyword, 2707 keyword,
2708 url, 2708 url,
2709 base_entry->favicon().url(), 2709 base_entry->favicon().url(),
2710 this, 2710 this,
2711 autodetected); 2711 autodetected);
2712 } 2712 }
2713 2713
2714 // Indicates if the two inputs have the same security origin.
2715 // |requested_origin| should only be a security origin (no path, etc.).
2716 // It is ok if |template_url| is NULL.
2717 static bool IsSameOrigin(const GURL& requested_origin,
2718 const TemplateURL* template_url) {
2719 DCHECK(requested_origin == requested_origin.GetOrigin());
2720 return template_url && requested_origin ==
2721 TemplateURLModel::GenerateSearchURL(template_url).GetOrigin();
2722 }
2723
2724 ViewHostMsg_GetSearchProviderInstallState_Params
2725 TabContents::GetSearchProviderInstallState(const GURL& requested_host) {
2726 // Get the last committed entry since that is the page executing the
2727 // javascript as opposed to a page being navigated to. We don't want
2728 // to trust the page to tell us the url to avoid using potentially
2729 // compromised information.
2730 NavigationEntry* entry = controller_.GetLastCommittedEntry();
2731 GURL page_origin = entry ? entry->virtual_url().GetOrigin() : GURL::EmptyGURL( );
sky 2010/07/15 23:24:49 > 80, also, use GURL() here instead of EmptyGURL()
2732 GURL requested_origin = requested_host.GetOrigin();
2733 // Do the security check before any others to avoid information leaks.
2734 if (page_origin != requested_origin)
2735 return ViewHostMsg_GetSearchProviderInstallState_Params::Denied();
2736
2737 // In incognito mode, no search information is exposed. (This check must be
2738 // done after the security check or else a web site can detect that the
2739 // user is in incognito mode just by doing a cross origin request.)
2740 if (profile()->IsOffTheRecord())
2741 return ViewHostMsg_GetSearchProviderInstallState_Params::NotInstalled();
2742
2743
sky 2010/07/15 23:24:49 nit: nuke this line.
2744 TemplateURLModel* url_model = profile()->GetTemplateURLModel();
2745 if (!url_model)
2746 return ViewHostMsg_GetSearchProviderInstallState_Params::NotInstalled();
2747 if (!url_model->loaded())
2748 url_model->Load();
2749
2750 // First check to see if the url is the default search provider.
2751 if (IsSameOrigin(requested_origin, url_model->GetDefaultSearchProvider()))
2752 return ViewHostMsg_GetSearchProviderInstallState_Params::InstalledAsDefault( );
sky 2010/07/15 23:24:49 > 80
2753
2754 // Is the url any search provider?
2755 std::vector<const TemplateURL*> urls = url_model->GetTemplateURLs();
2756 for (std::vector<const TemplateURL*>::iterator i = urls.begin();
2757 i != urls.end(); ++i) {
2758 const TemplateURL* template_url = (*i);
2759 if (IsSameOrigin(requested_origin, template_url)) {
2760 return ViewHostMsg_GetSearchProviderInstallState_Params::
2761 InstallButNotDefault();
2762 }
2763 }
2764 return ViewHostMsg_GetSearchProviderInstallState_Params::NotInstalled();
2765 }
2766
2714 GURL TabContents::GetAlternateErrorPageURL() const { 2767 GURL TabContents::GetAlternateErrorPageURL() const {
2715 GURL url; 2768 GURL url;
2716 // Disable alternate error pages when in OffTheRecord/Incognito mode. 2769 // Disable alternate error pages when in OffTheRecord/Incognito mode.
2717 if (profile()->IsOffTheRecord()) 2770 if (profile()->IsOffTheRecord())
2718 return url; 2771 return url;
2719 2772
2720 PrefService* prefs = profile()->GetPrefs(); 2773 PrefService* prefs = profile()->GetPrefs();
2721 DCHECK(prefs); 2774 DCHECK(prefs);
2722 if (prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)) { 2775 if (prefs->GetBoolean(prefs::kAlternateErrorPagesEnabled)) {
2723 url = google_util::AppendGoogleLocaleParam( 2776 url = google_util::AppendGoogleLocaleParam(
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
3157 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save)); 3210 AddInfoBar(new SavePasswordInfoBarDelegate(this, form_to_save));
3158 } 3211 }
3159 3212
3160 Profile* TabContents::GetProfileForPasswordManager() { 3213 Profile* TabContents::GetProfileForPasswordManager() {
3161 return profile(); 3214 return profile();
3162 } 3215 }
3163 3216
3164 bool TabContents::DidLastPageLoadEncounterSSLErrors() { 3217 bool TabContents::DidLastPageLoadEncounterSSLErrors() {
3165 return controller().ssl_manager()->ProcessedSSLErrorFromRequest(); 3218 return controller().ssl_manager()->ProcessedSSLErrorFromRequest();
3166 } 3219 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698