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

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

Issue 8312005: Ignore paths when matching patterns for extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/chrome_content_browser_client.h" 5 #include "chrome/browser/chrome_content_browser_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "chrome/app/breakpad_mac.h" 8 #include "chrome/app/breakpad_mac.h"
9 #include "chrome/browser/browser_about_handler.h" 9 #include "chrome/browser/browser_about_handler.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 Profile* profile = Profile::FromBrowserContext(process->browser_context()); 757 Profile* profile = Profile::FromBrowserContext(process->browser_context());
758 DesktopNotificationService* service = 758 DesktopNotificationService* service =
759 DesktopNotificationServiceFactory::GetForProfile(profile); 759 DesktopNotificationServiceFactory::GetForProfile(profile);
760 service->RequestPermission( 760 service->RequestPermission(
761 source_origin, render_process_id, render_view_id, callback_context, 761 source_origin, render_process_id, render_view_id, callback_context,
762 tab_util::GetTabContentsByID(render_process_id, render_view_id)); 762 tab_util::GetTabContentsByID(render_process_id, render_view_id));
763 } 763 }
764 764
765 WebKit::WebNotificationPresenter::Permission 765 WebKit::WebNotificationPresenter::Permission
766 ChromeContentBrowserClient::CheckDesktopNotificationPermission( 766 ChromeContentBrowserClient::CheckDesktopNotificationPermission(
767 const GURL& source_url, 767 const GURL& source_origin,
768 const content::ResourceContext& context) { 768 const content::ResourceContext& context,
769 int render_process_id) {
769 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 770 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
770 ProfileIOData* io_data = 771 ProfileIOData* io_data =
771 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); 772 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL));
772 773
773 const Extension* extension = 774 if (io_data->GetExtensionInfoMap()->SecurityOriginHasAPIPermission(
774 io_data->GetExtensionInfoMap()->extensions().GetByURL(source_url); 775 source_origin, render_process_id,
775 if (extension && 776 ExtensionAPIPermission::kNotification))
776 extension->HasAPIPermission(ExtensionAPIPermission::kNotification)) {
777 return WebKit::WebNotificationPresenter::PermissionAllowed; 777 return WebKit::WebNotificationPresenter::PermissionAllowed;
778 }
779 778
780 // Fall back to the regular notification preferences, which works on an 779 // Fall back to the regular notification preferences, which works on an
781 // origin basis. 780 // origin basis.
781 // TODO(dcheng): Change to just source_origin once WebKit side is cleaned up.
782 return io_data->GetNotificationService() ? 782 return io_data->GetNotificationService() ?
783 io_data->GetNotificationService()->HasPermission(source_url.GetOrigin()) : 783 io_data->GetNotificationService()->HasPermission(
784 source_origin.GetOrigin()) :
784 WebKit::WebNotificationPresenter::PermissionNotAllowed; 785 WebKit::WebNotificationPresenter::PermissionNotAllowed;
785 } 786 }
786 787
787 void ChromeContentBrowserClient::ShowDesktopNotification( 788 void ChromeContentBrowserClient::ShowDesktopNotification(
788 const DesktopNotificationHostMsg_Show_Params& params, 789 const DesktopNotificationHostMsg_Show_Params& params,
789 int render_process_id, 790 int render_process_id,
790 int render_view_id, 791 int render_view_id,
791 bool worker) { 792 bool worker) {
792 RenderViewHost* rvh = RenderViewHost::FromID( 793 RenderViewHost* rvh = RenderViewHost::FromID(
793 render_process_id, render_view_id); 794 render_process_id, render_view_id);
(...skipping 25 matching lines...) Expand all
819 820
820 RenderProcessHost* process = rvh->process(); 821 RenderProcessHost* process = rvh->process();
821 Profile* profile = Profile::FromBrowserContext(process->browser_context()); 822 Profile* profile = Profile::FromBrowserContext(process->browser_context());
822 DesktopNotificationService* service = 823 DesktopNotificationService* service =
823 DesktopNotificationServiceFactory::GetForProfile(profile); 824 DesktopNotificationServiceFactory::GetForProfile(profile);
824 service->CancelDesktopNotification( 825 service->CancelDesktopNotification(
825 render_process_id, render_view_id, notification_id); 826 render_process_id, render_view_id, notification_id);
826 } 827 }
827 828
828 bool ChromeContentBrowserClient::CanCreateWindow( 829 bool ChromeContentBrowserClient::CanCreateWindow(
829 const GURL& source_url, 830 const GURL& source_origin,
830 WindowContainerType container_type, 831 WindowContainerType container_type,
831 const content::ResourceContext& context) { 832 const content::ResourceContext& context,
833 int render_process_id) {
832 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 834 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
833 // If the opener is trying to create a background window but doesn't have 835 // If the opener is trying to create a background window but doesn't have
834 // the appropriate permission, fail the attempt. 836 // the appropriate permission, fail the attempt.
835 if (container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) { 837 if (container_type == WINDOW_CONTAINER_TYPE_BACKGROUND) {
836 ProfileIOData* io_data = 838 ProfileIOData* io_data =
837 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL)); 839 reinterpret_cast<ProfileIOData*>(context.GetUserData(NULL));
838 const Extension* extension = 840 return io_data->GetExtensionInfoMap()->SecurityOriginHasAPIPermission(
839 io_data->GetExtensionInfoMap()->extensions().GetByURL(source_url); 841 source_origin, render_process_id, ExtensionAPIPermission::kBackground);
840 return (extension &&
841 extension->HasAPIPermission(ExtensionAPIPermission::kBackground));
842 } 842 }
843 return true; 843 return true;
844 } 844 }
845 845
846 std::string ChromeContentBrowserClient::GetWorkerProcessTitle( 846 std::string ChromeContentBrowserClient::GetWorkerProcessTitle(
847 const GURL& url, const content::ResourceContext& context) { 847 const GURL& url, const content::ResourceContext& context) {
848 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 848 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
849 // Check if it's an extension-created worker, in which case we want to use 849 // Check if it's an extension-created worker, in which case we want to use
850 // the name of the extension. 850 // the name of the extension.
851 ProfileIOData* io_data = 851 ProfileIOData* io_data =
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 #if defined(USE_NSS) 988 #if defined(USE_NSS)
989 crypto::CryptoModuleBlockingPasswordDelegate* 989 crypto::CryptoModuleBlockingPasswordDelegate*
990 ChromeContentBrowserClient::GetCryptoPasswordDelegate( 990 ChromeContentBrowserClient::GetCryptoPasswordDelegate(
991 const GURL& url) { 991 const GURL& url) {
992 return browser::NewCryptoModuleBlockingDialogDelegate( 992 return browser::NewCryptoModuleBlockingDialogDelegate(
993 browser::kCryptoModulePasswordKeygen, url.host()); 993 browser::kCryptoModulePasswordKeygen, url.host());
994 } 994 }
995 #endif 995 #endif
996 996
997 } // namespace chrome 997 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/browser/chrome_content_browser_client.h ('k') | chrome/browser/extensions/extension_info_map.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698