Index: chrome/browser/permissions/permission_manager_unittest.cc |
diff --git a/chrome/browser/permissions/permission_manager_unittest.cc b/chrome/browser/permissions/permission_manager_unittest.cc |
index ae115f8eb3263488030346ec37bacd1a2cc08b31..93743fb48fd3042f82edfec7252383444eafdeec 100644 |
--- a/chrome/browser/permissions/permission_manager_unittest.cc |
+++ b/chrome/browser/permissions/permission_manager_unittest.cc |
@@ -5,11 +5,14 @@ |
#include "chrome/browser/permissions/permission_manager.h" |
#include "base/macros.h" |
+#include "base/message_loop/message_loop.h" |
+#include "base/run_loop.h" |
#include "build/build_config.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
#include "chrome/browser/permissions/permission_manager_factory.h" |
#include "chrome/test/base/testing_profile.h" |
#include "components/content_settings/core/browser/host_content_settings_map.h" |
+#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/permission_type.h" |
#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -40,30 +43,42 @@ class PermissionManagerTest : public testing::Test { |
callback_result_ = permission; |
} |
+ void TestGetPermissionStatus(); |
+ |
protected: |
PermissionManagerTest() |
- : url_("https://example.com"), |
+ : thread_bundle_(content::TestBrowserThreadBundle::REAL_IO_THREAD), |
+ url_("https://example.com"), |
other_url_("https://foo.com"), |
callback_called_(false), |
- callback_result_(PermissionStatus::ASK) {} |
+ callback_result_(PermissionStatus::ASK) { |
+ host_content_settings_map_ = |
+ HostContentSettingsMapFactory::GetForProfile(&profile_); |
+ } |
PermissionManager* GetPermissionManager() { |
return profile_.GetPermissionManager(); |
} |
HostContentSettingsMap* GetHostContentSettingsMap() { |
- return HostContentSettingsMapFactory::GetForProfile(&profile_); |
+ return host_content_settings_map_; |
} |
void CheckPermissionStatus(PermissionType type, |
PermissionStatus expected) { |
- EXPECT_EQ(expected, GetPermissionManager()->GetPermissionStatus( |
- type, url_.GetOrigin(), url_.GetOrigin())); |
+ if (content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)) { |
+ EXPECT_EQ(expected, GetPermissionManager()->GetPermissionStatus( |
+ type, url_.GetOrigin(), url_.GetOrigin())); |
+ } else { |
+ EXPECT_EQ(expected, GetPermissionManager()->GetPermissionStatus( |
+ host_content_settings_map_, type, |
+ url_.GetOrigin(), url_.GetOrigin())); |
+ } |
} |
void SetPermission(ContentSettingsType type, ContentSetting value) { |
- HostContentSettingsMapFactory::GetForProfile(&profile_) |
- ->SetContentSettingDefaultScope(url_, url_, type, std::string(), value); |
+ GetHostContentSettingsMap()->SetContentSettingDefaultScope( |
+ url_, url_, type, std::string(), value); |
} |
const GURL& url() const { |
@@ -86,15 +101,16 @@ class PermissionManagerTest : public testing::Test { |
} |
private: |
+ content::TestBrowserThreadBundle thread_bundle_; |
const GURL url_; |
const GURL other_url_; |
bool callback_called_; |
PermissionStatus callback_result_; |
- content::TestBrowserThreadBundle thread_bundle_; |
PermissionManagerTestingProfile profile_; |
+ HostContentSettingsMap* host_content_settings_map_; |
}; |
-TEST_F(PermissionManagerTest, GetPermissionStatusDefault) { |
+void PermissionManagerTest::TestGetPermissionStatus() { |
CheckPermissionStatus(PermissionType::MIDI_SYSEX, PermissionStatus::ASK); |
CheckPermissionStatus(PermissionType::PUSH_MESSAGING, PermissionStatus::ASK); |
CheckPermissionStatus(PermissionType::NOTIFICATIONS, PermissionStatus::ASK); |
@@ -105,6 +121,20 @@ TEST_F(PermissionManagerTest, GetPermissionStatusDefault) { |
#endif |
} |
+TEST_F(PermissionManagerTest, GetPermissionStatusDefault) { |
+ TestGetPermissionStatus(); |
+} |
+ |
+TEST_F(PermissionManagerTest, GetPermissionStatusNonMainThread) { |
+ base::RunLoop run_loop; |
+ content::BrowserThread::PostTaskAndReply( |
+ content::BrowserThread::IO, FROM_HERE, |
+ base::Bind(&PermissionManagerTest::TestGetPermissionStatus, |
+ base::Unretained(this)), |
+ run_loop.QuitClosure()); |
+ run_loop.Run(); |
mlamouri (slow - plz ping)
2016/10/24 10:40:51
Looks fine but I would have done this a bit differ
|
+} |
+ |
TEST_F(PermissionManagerTest, GetPermissionStatusAfterSet) { |
SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW); |
CheckPermissionStatus(PermissionType::GEOLOCATION, PermissionStatus::GRANTED); |