Add PERMISSION_PROTECTED_MEDIA support in GetPermissionStatus() and relevant tests.

Add PERMISSION_PROTECTED_MEDIA support in ChromeContentBrowserClient::GetPermissionStatus()
on android and chromeOS platforms. Also added some unit tests.

BUG=

Review URL: https://codereview.chromium.org/869633002

Cr-Commit-Position: refs/heads/master@{#312835}
diff --git a/chrome/browser/chrome_content_browser_client_unittest.cc b/chrome/browser/chrome_content_browser_client_unittest.cc
index 32ed674..9ea8f8c 100644
--- a/chrome/browser/chrome_content_browser_client_unittest.cc
+++ b/chrome/browser/chrome_content_browser_client_unittest.cc
@@ -11,6 +11,7 @@
 #include "chrome/browser/ui/tabs/tab_strip_model.h"
 #include "chrome/test/base/browser_with_test_window_test.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/content_settings/core/browser/host_content_settings_map.h"
 #include "components/search_engines/template_url_service.h"
 #include "components/variations/entropy_provider.h"
 #include "content/public/browser/navigation_controller.h"
@@ -137,3 +138,65 @@
 
 }  // namespace content
 #endif  // !defined(OS_IOS) && !defined(OS_ANDROID)
+
+namespace chrome {
+
+// For testing permissions related functionality.
+class PermissionBrowserClientTest : public testing::Test {
+ public:
+  PermissionBrowserClientTest() : url_("https://www.google.com") {}
+
+  void CheckPermissionStatus(content::PermissionType type,
+                             content::PermissionStatus expected) {
+    EXPECT_EQ(expected, client_.GetPermissionStatus(type, &profile_,
+                                                    url_.GetOrigin(),
+                                                    url_.GetOrigin()));
+  }
+
+  void SetPermission(ContentSettingsType type, ContentSetting value) {
+    profile_.GetHostContentSettingsMap()->SetContentSetting(
+        ContentSettingsPattern::FromURLNoWildcard(url_),
+        ContentSettingsPattern::FromURLNoWildcard(url_),
+        type, std::string(), value);
+  }
+
+ private:
+  content::TestBrowserThreadBundle thread_bundle_;
+  ChromeContentBrowserClient client_;
+  TestingProfile profile_;
+  GURL url_;
+};
+
+TEST_F(PermissionBrowserClientTest, GetPermissionStatusDefault) {
+  using namespace content;
+  CheckPermissionStatus(PERMISSION_MIDI_SYSEX, PERMISSION_STATUS_ASK);
+  CheckPermissionStatus(PERMISSION_PUSH_MESSAGING, PERMISSION_STATUS_ASK);
+  CheckPermissionStatus(PERMISSION_NOTIFICATIONS, PERMISSION_STATUS_ASK);
+  CheckPermissionStatus(PERMISSION_GEOLOCATION, PERMISSION_STATUS_ASK);
+#if defined(OS_ANDROID)
+  CheckPermissionStatus(PERMISSION_PROTECTED_MEDIA, PERMISSION_STATUS_ASK);
+#endif
+}
+
+TEST_F(PermissionBrowserClientTest, GetPermissionStatusAfterSet) {
+  using namespace content;
+  SetPermission(CONTENT_SETTINGS_TYPE_GEOLOCATION, CONTENT_SETTING_ALLOW);
+  CheckPermissionStatus(PERMISSION_GEOLOCATION, PERMISSION_STATUS_GRANTED);
+
+  SetPermission(CONTENT_SETTINGS_TYPE_NOTIFICATIONS, CONTENT_SETTING_ALLOW);
+  CheckPermissionStatus(PERMISSION_NOTIFICATIONS, PERMISSION_STATUS_GRANTED);
+
+  SetPermission(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, CONTENT_SETTING_ALLOW);
+  CheckPermissionStatus(PERMISSION_MIDI_SYSEX, PERMISSION_STATUS_GRANTED);
+
+  SetPermission(CONTENT_SETTINGS_TYPE_PUSH_MESSAGING, CONTENT_SETTING_ALLOW);
+  CheckPermissionStatus(PERMISSION_PUSH_MESSAGING, PERMISSION_STATUS_GRANTED);
+
+#if defined(OS_ANDROID)
+  SetPermission(CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER,
+                CONTENT_SETTING_ALLOW);
+  CheckPermissionStatus(PERMISSION_PROTECTED_MEDIA, PERMISSION_STATUS_GRANTED);
+#endif
+}
+
+}  // namespace chrome