diff options
author | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-10 00:23:37 +0000 |
---|---|---|
committer | arv@chromium.org <arv@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-10 00:23:37 +0000 |
commit | 584b8e3f26b6d751c807907ce3c480a698a961a4 (patch) | |
tree | 5faf8d719fa1c43b1033862ed5d7bc30bf25b9e8 /chrome/browser/extensions | |
parent | e8f6cb0adc4bf051081f6bf4cc2b2054facf38ec (diff) | |
download | chromium_src-584b8e3f26b6d751c807907ce3c480a698a961a4.zip chromium_src-584b8e3f26b6d751c807907ce3c480a698a961a4.tar.gz chromium_src-584b8e3f26b6d751c807907ce3c480a698a961a4.tar.bz2 |
Allow extensions to access chrome://favicon/.
An extension needs to add chrome://favicon/ to its permission to able to load
favicon images.
WebKit changes: https://bugs.webkit.org/show_bug.cgi?id=37228
BUG=37802
TEST=browser_tests.exe --gtest_filter=ExtensionApiTest.*
Review URL: http://codereview.chromium.org/1610011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44167 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_function_dispatcher.cc | 15 | ||||
-rw-r--r-- | chrome/browser/extensions/permissions_apitest.cc | 4 |
2 files changed, 19 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index 7476cb0..8791bb0 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -6,10 +6,13 @@ #include "base/process_util.h" #include "base/singleton.h" +#include "base/ref_counted.h" #include "base/values.h" #include "chrome/browser/browser.h" #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_window.h" +#include "chrome/browser/dom_ui/chrome_url_data_manager.h" +#include "chrome/browser/dom_ui/dom_ui_favicon_source.h" #include "chrome/browser/extensions/execute_code_in_tab_function.h" #include "chrome/browser/extensions/extension_accessibility_api.h" #include "chrome/browser/extensions/extension_bookmark_manager_api.h" @@ -304,6 +307,18 @@ ExtensionFunctionDispatcher::ExtensionFunctionDispatcher( bool incognito_enabled = profile()->GetExtensionsService()->IsIncognitoEnabled(extension); + // If the extension has permission to load chrome://favicon/ resources we need + // to make sure that the DOMUIFavIconSource is registered with the + // ChromeURLDataManager. + if (extension->HasHostPermission(GURL(chrome::kChromeUIFavIconURL))) { + DOMUIFavIconSource* favicon_source = new DOMUIFavIconSource(profile_); + ChromeThread::PostTask( + ChromeThread::IO, FROM_HERE, + NewRunnableMethod(Singleton<ChromeURLDataManager>::get(), + &ChromeURLDataManager::AddDataSource, + make_scoped_refptr(favicon_source))); + } + // Update the extension permissions. Doing this each time we create an EFD // ensures that new processes are informed of permissions for newly installed // extensions. diff --git a/chrome/browser/extensions/permissions_apitest.cc b/chrome/browser/extensions/permissions_apitest.cc index 55be326..82c4068 100644 --- a/chrome/browser/extensions/permissions_apitest.cc +++ b/chrome/browser/extensions/permissions_apitest.cc @@ -37,3 +37,7 @@ IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ExperimentalPermissionsFail) { ASSERT_TRUE(RunExtensionTest("permissions/experimental_disabled")) << message_; } + +IN_PROC_BROWSER_TEST_F(ExtensionApiTest, FavIconPermission) { + ASSERT_TRUE(RunExtensionTest("permissions/favicon")) << message_; +} |