Index: chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc |
diff --git a/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc b/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc |
index 2457c4f258e1dc291ac56052cd7e8bf312e8e67e..a83988e4bfc991a2918484f6c1b357c563c12b6a 100644 |
--- a/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc |
+++ b/chrome/browser/android/vr_shell/ui_scene_manager_unittest.cc |
@@ -5,6 +5,9 @@ |
#include "chrome/browser/android/vr_shell/ui_scene_manager.h" |
#include "base/macros.h" |
+#include "base/test/scoped_task_environment.h" |
+#include "chrome/browser/android/vr_shell/ui_elements/ui_element.h" |
+#include "chrome/browser/android/vr_shell/ui_elements/ui_element_identifiers.h" |
#include "chrome/browser/android/vr_shell/ui_scene.h" |
#include "chrome/browser/android/vr_shell/vr_browser_interface.h" |
#include "testing/gmock/include/gmock/gmock.h" |
@@ -52,23 +55,47 @@ class MockBrowserInterface : public VrBrowserInterface { |
class UiSceneManagerTest : public testing::Test { |
public: |
void SetUp() override { |
- browser_ = base::MakeUnique<MockBrowserInterface>(); |
- scene_ = base::MakeUnique<UiScene>(); |
// TODO(mthiesse): When we have UI to test for CCT, we'll need to modify |
mthiesse
2017/05/18 23:47:09
Seems like you can remove this TODO now?
cjgrant
2017/05/19 14:19:13
Done, and I also added a test for the button. PTAL
|
// setup to allow us to test CCT mode. |
- bool in_cct = false; |
- bool in_web_vr = true; |
+ browser_ = base::MakeUnique<MockBrowserInterface>(); |
+ scene_ = base::MakeUnique<UiScene>(); |
+ } |
+ |
+ protected: |
+ enum InCct { |
+ kNotInCct = false, |
+ kInCct = true, |
+ }; |
+ |
+ enum InWebVr { |
+ kNotInWebVr = false, |
+ kInWebVr = true, |
+ }; |
+ |
+ void MakeManager(InCct in_cct, InWebVr in_web_vr) { |
manager_ = base::MakeUnique<UiSceneManager>(browser_.get(), scene_.get(), |
in_cct, in_web_vr); |
} |
- protected: |
+ bool IsVisible(UiElementIdentifier identifier) { |
+ for (auto& element : scene_->GetUiElements()) { |
+ if (element->identifier() != identifier) |
+ continue; |
+ return element->visible(); |
+ } |
+ ADD_FAILURE(); |
+ return false; |
+ } |
+ |
+ base::test::ScopedTaskEnvironment scoped_task_environment_; |
std::unique_ptr<MockBrowserInterface> browser_; |
std::unique_ptr<UiScene> scene_; |
std::unique_ptr<UiSceneManager> manager_; |
}; |
TEST_F(UiSceneManagerTest, ExitPresentAndFullscreenOnAppButtonClick) { |
+ MakeManager(kNotInCct, kInWebVr); |
+ |
// Clicking app button should trigger to exit presentation. |
EXPECT_CALL(*browser_, ExitPresent()).Times(1); |
// And also trigger exit fullscreen. |
@@ -76,4 +103,34 @@ TEST_F(UiSceneManagerTest, ExitPresentAndFullscreenOnAppButtonClick) { |
manager_->OnAppButtonClicked(); |
} |
+TEST_F(UiSceneManagerTest, WebVrWarningsShowWhenInitiallyInWebVr) { |
+ MakeManager(kNotInCct, kInWebVr); |
+ |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), true); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), true); |
+ |
+ manager_->SetWebVrSecureOrigin(true); |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), false); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), false); |
+ |
+ manager_->SetWebVrSecureOrigin(false); |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), true); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), true); |
+ |
+ manager_->SetWebVrMode(false); |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), false); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), false); |
+} |
+ |
+TEST_F(UiSceneManagerTest, WebVrWarningsDoNotShowWhenInitiallyOutsideWebVr) { |
+ MakeManager(kNotInCct, kNotInWebVr); |
+ |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), false); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), false); |
+ |
+ manager_->SetWebVrMode(true); |
+ EXPECT_EQ(IsVisible(kWebVrPermanentHttpSecurityWarning), true); |
+ EXPECT_EQ(IsVisible(kWebVrTransientHttpSecurityWarning), true); |
+} |
+ |
} // namespace vr_shell |