| // Copyright 2015 The Cobalt Authors. All Rights Reserved. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #include "base/memory/ref_counted.h" |
| #include "cobalt/dom/element.h" |
| #include "cobalt/dom/html_body_element.h" |
| #include "cobalt/dom/html_collection.h" |
| #include "cobalt/test/document_loader.h" |
| #include "cobalt/webdriver/algorithms.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace cobalt { |
| namespace webdriver { |
| namespace { |
| |
| class IsDisplayedTest : public ::testing::Test { |
| protected: |
| void SetUp() override { |
| GURL url("file:///cobalt/webdriver_test/displayed_test.html"); |
| document_loader_.Load(url); |
| } |
| dom::Document* document() { return document_loader_.document(); } |
| |
| test::DocumentLoader document_loader_; |
| }; |
| |
| } // namespace |
| |
| TEST_F(IsDisplayedTest, BodyIsDisplayed) { |
| EXPECT_TRUE(algorithms::IsDisplayed(document()->body().get())); |
| document()->body()->style()->set_display("none", NULL); |
| EXPECT_TRUE(algorithms::IsDisplayed(document()->body().get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ElementIsShown) { |
| // No style set. |
| EXPECT_TRUE( |
| algorithms::IsDisplayed(document()->GetElementById("displayed").get())); |
| // display: none |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("none").get())); |
| // visibility: hidden |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("hidden").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, HiddenByParentDisplayStyle) { |
| // display: none |
| EXPECT_FALSE(algorithms::IsDisplayed( |
| document()->GetElementById("hiddenparent").get())); |
| // No style set, but is a child of hiddenparent. |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("hiddenchild").get())); |
| // No style set, but is a child of hiddenchild. |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("hiddenlink").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ZeroHeightOrWidthIsNotDisplayed) { |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("zeroheight").get())); |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("zerowidth").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ElementWithNestedBlockLevelElementIsDisplayed) { |
| EXPECT_TRUE(algorithms::IsDisplayed( |
| document()->GetElementById("containsNestedBlock").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ZeroOpacityIsNotDisplayed) { |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("transparent").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ZeroSizeDivHasDescendantWithSize) { |
| EXPECT_TRUE(algorithms::IsDisplayed( |
| document()->GetElementById("zerosizeddiv").get())); |
| } |
| |
| TEST_F(IsDisplayedTest, ElementHiddenByOverflow) { |
| // Div with zero size width and height and overflow: hidden. |
| EXPECT_FALSE( |
| algorithms::IsDisplayed(document()->GetElementById("bug5022").get())); |
| } |
| |
| } // namespace webdriver |
| } // namespace cobalt |