Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/tests/test_view.h" | 5 #include "ppapi/tests/test_view.h" |
| 6 | 6 |
| 7 #include <sstream> | 7 #include <sstream> |
| 8 | 8 |
| 9 #include "ppapi/c/pp_time.h" | 9 #include "ppapi/c/pp_time.h" |
| 10 #include "ppapi/c/private/ppb_testing_private.h" | 10 #include "ppapi/c/private/ppb_testing_private.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 49 RUN_TEST(ScrollOffsetChange, filter); | 49 RUN_TEST(ScrollOffsetChange, filter); |
| 50 } | 50 } |
| 51 | 51 |
| 52 bool TestView::WaitUntilViewChanged() { | 52 bool TestView::WaitUntilViewChanged() { |
| 53 // Schedule a callback so this step times out if we don't get a ViewChanged | 53 // Schedule a callback so this step times out if we don't get a ViewChanged |
| 54 // in a reasonable amount of time. | 54 // in a reasonable amount of time. |
| 55 pp::CompletionCallbackFactory<TestView> factory(this); | 55 pp::CompletionCallbackFactory<TestView> factory(this); |
| 56 pp::CompletionCallback timeout = | 56 pp::CompletionCallback timeout = |
| 57 factory.NewCallback(&TestView::QuitMessageLoop); | 57 factory.NewCallback(&TestView::QuitMessageLoop); |
| 58 pp::Module::Get()->core()->CallOnMainThread( | 58 pp::Module::Get()->core()->CallOnMainThread( |
| 59 kViewChangeTimeoutSec * 1000, timeout); | 59 kViewChangeTimeoutSec * 1000, timeout); |
|
benwells
2015/01/28 02:55:50
Can this be removed as well?
dmichael (off chromium)
2015/01/28 17:50:32
I'm not super familiar with this test, but the pat
| |
| 60 | 60 |
| 61 size_t old_page_visibility_change_count = page_visibility_log_.size(); | 61 size_t old_page_visibility_change_count = page_visibility_log_.size(); |
| 62 | 62 |
| 63 // Run a nested message loop. It will exit either on ViewChanged or if the | 63 // Run a nested message loop. It will exit either on ViewChanged or if the |
| 64 // timeout happens. | 64 // timeout happens. |
| 65 post_quit_on_view_changed_ = true; | 65 post_quit_on_view_changed_ = true; |
| 66 testing_interface_->RunMessageLoop(instance_->pp_instance()); | 66 testing_interface_->RunMessageLoop(instance_->pp_instance()); |
| 67 post_quit_on_view_changed_ = false; | 67 post_quit_on_view_changed_ = false; |
| 68 | 68 |
| 69 // We know we got a view changed event if something was appended to the log. | 69 // We know we got a view changed event if something was appended to the log. |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 97 std::string TestView::TestPageHideShow() { | 97 std::string TestView::TestPageHideShow() { |
| 98 // Initial state should be visible. | 98 // Initial state should be visible. |
| 99 ASSERT_FALSE(page_visibility_log_.empty()); | 99 ASSERT_FALSE(page_visibility_log_.empty()); |
| 100 ASSERT_TRUE(page_visibility_log_[0]); | 100 ASSERT_TRUE(page_visibility_log_[0]); |
| 101 | 101 |
| 102 // Now that we're alive, tell the test knows it can change our visibility. | 102 // Now that we're alive, tell the test knows it can change our visibility. |
| 103 instance_->ReportProgress("TestPageHideShow:Created"); | 103 instance_->ReportProgress("TestPageHideShow:Created"); |
| 104 | 104 |
| 105 // Wait until we get a hide event, being careful to handle spurious | 105 // Wait until we get a hide event, being careful to handle spurious |
| 106 // notifications of ViewChanged. | 106 // notifications of ViewChanged. |
| 107 PP_Time begin_time = pp::Module::Get()->core()->GetTime(); | |
| 108 while (WaitUntilViewChanged() && | 107 while (WaitUntilViewChanged() && |
| 109 page_visibility_log_[page_visibility_log_.size() - 1] && | 108 page_visibility_log_[page_visibility_log_.size() - 1]) { |
| 110 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 111 kViewChangeTimeoutSec) { | |
| 112 } | 109 } |
| 113 if (page_visibility_log_[page_visibility_log_.size() - 1]) { | 110 if (page_visibility_log_[page_visibility_log_.size() - 1]) { |
| 114 // Didn't get a view changed event that changed visibility (though there | 111 // Didn't get a view changed event that changed visibility (though there |
| 115 // may have been some that didn't change visibility). | 112 // may have been some that didn't change visibility). |
| 116 // Add more error message since this test has some extra requirements. | 113 // Add more error message since this test has some extra requirements. |
| 117 return "Didn't receive a hide event in timeout. NOTE: " | 114 return "Didn't receive a hide event in timeout. NOTE: " |
| 118 "This test requires tab visibility to change and won't pass if you " | 115 "This test requires tab visibility to change and won't pass if you " |
| 119 "just run it in a browser. Normally the UI test should handle " | 116 "just run it in a browser. Normally the UI test should handle " |
| 120 "this. You can also run manually by waiting 2 secs, creating a new " | 117 "this. You can also run manually by waiting 2 secs, creating a new " |
| 121 "tab, waiting 2 more secs, and closing the new tab."; | 118 "tab, waiting 2 more secs, and closing the new tab."; |
| 122 } | 119 } |
| 123 | 120 |
| 124 // Tell the test so it can show us again. | 121 // Tell the test so it can show us again. |
| 125 instance_->ReportProgress("TestPageHideShow:Hidden"); | 122 instance_->ReportProgress("TestPageHideShow:Hidden"); |
| 126 | 123 |
| 127 // Wait until we get a show event. | 124 // Wait until we get a show event. |
| 128 begin_time = pp::Module::Get()->core()->GetTime(); | |
| 129 while (WaitUntilViewChanged() && | 125 while (WaitUntilViewChanged() && |
| 130 !page_visibility_log_[page_visibility_log_.size() - 1] && | 126 !page_visibility_log_[page_visibility_log_.size() - 1]) { |
| 131 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 132 kViewChangeTimeoutSec) { | |
| 133 } | 127 } |
| 134 ASSERT_TRUE(page_visibility_log_[page_visibility_log_.size() - 1]); | 128 ASSERT_TRUE(page_visibility_log_[page_visibility_log_.size() - 1]); |
| 135 | 129 |
| 136 PASS(); | 130 PASS(); |
| 137 } | 131 } |
| 138 | 132 |
| 139 std::string TestView::TestSizeChange() { | 133 std::string TestView::TestSizeChange() { |
| 140 pp::Rect original_rect = last_view_.GetRect(); | 134 pp::Rect original_rect = last_view_.GetRect(); |
| 141 | 135 |
| 142 pp::Rect desired_rect = original_rect; | 136 pp::Rect desired_rect = original_rect; |
| 143 desired_rect.set_width(original_rect.width() + 10); | 137 desired_rect.set_width(original_rect.width() + 10); |
| 144 desired_rect.set_height(original_rect.height() + 12); | 138 desired_rect.set_height(original_rect.height() + 12); |
| 145 | 139 |
| 146 std::ostringstream script_stream; | 140 std::ostringstream script_stream; |
| 147 script_stream << "var plugin = document.getElementById('plugin');"; | 141 script_stream << "var plugin = document.getElementById('plugin');"; |
| 148 script_stream << "plugin.setAttribute('width', " | 142 script_stream << "plugin.setAttribute('width', " |
| 149 << desired_rect.width() << ");"; | 143 << desired_rect.width() << ");"; |
| 150 script_stream << "plugin.setAttribute('height', " | 144 script_stream << "plugin.setAttribute('height', " |
| 151 << desired_rect.height() << ");"; | 145 << desired_rect.height() << ");"; |
| 152 | 146 |
| 153 instance_->EvalScript(script_stream.str()); | 147 instance_->EvalScript(script_stream.str()); |
| 154 | 148 |
| 155 PP_Time begin_time = pp::Module::Get()->core()->GetTime(); | 149 while (WaitUntilViewChanged() && last_view_.GetRect() != desired_rect) { |
| 156 while (WaitUntilViewChanged() && last_view_.GetRect() != desired_rect && | |
| 157 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 158 kViewChangeTimeoutSec) { | |
| 159 } | 150 } |
| 160 ASSERT_TRUE(last_view_.GetRect() == desired_rect); | 151 ASSERT_TRUE(last_view_.GetRect() == desired_rect); |
| 161 | 152 |
| 162 PASS(); | 153 PASS(); |
| 163 } | 154 } |
| 164 | 155 |
| 165 std::string TestView::TestClipChange() { | 156 std::string TestView::TestClipChange() { |
| 166 pp::Rect original_rect = last_view_.GetRect(); | 157 pp::Rect original_rect = last_view_.GetRect(); |
| 167 | 158 |
| 168 // Original clip should be the full frame. | 159 // Original clip should be the full frame. |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 185 "top:0px; width:1px; height:5000px;');" | 176 "top:0px; width:1px; height:5000px;');" |
| 186 << "document.body.appendChild(big);" | 177 << "document.body.appendChild(big);" |
| 187 << "window.scrollBy(0, " << original_rect.y() + clip_amount << ");"; | 178 << "window.scrollBy(0, " << original_rect.y() + clip_amount << ");"; |
| 188 | 179 |
| 189 instance_->EvalScript(script_stream.str()); | 180 instance_->EvalScript(script_stream.str()); |
| 190 | 181 |
| 191 pp::Rect desired_clip = original_clip; | 182 pp::Rect desired_clip = original_clip; |
| 192 desired_clip.set_y(clip_amount); | 183 desired_clip.set_y(clip_amount); |
| 193 desired_clip.set_height(desired_clip.height() - desired_clip.y()); | 184 desired_clip.set_height(desired_clip.height() - desired_clip.y()); |
| 194 | 185 |
| 195 PP_Time begin_time = pp::Module::Get()->core()->GetTime(); | 186 while (WaitUntilViewChanged() && last_view_.GetClipRect() != desired_clip) { |
| 196 while (WaitUntilViewChanged() && last_view_.GetClipRect() != desired_clip && | |
| 197 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 198 kViewChangeTimeoutSec) { | |
| 199 } | 187 } |
| 200 ASSERT_TRUE(last_view_.GetClipRect() == desired_clip); | 188 ASSERT_TRUE(last_view_.GetClipRect() == desired_clip); |
| 201 PASS(); | 189 PASS(); |
| 202 } | 190 } |
| 203 | 191 |
| 204 std::string TestView::TestScrollOffsetChange() { | 192 std::string TestView::TestScrollOffsetChange() { |
| 205 instance_->EvalScript("document.body.style.width = '5000px';" | 193 instance_->EvalScript("document.body.style.width = '5000px';" |
| 206 "document.body.style.height = '5000px';"); | 194 "document.body.style.height = '5000px';"); |
| 207 instance_->EvalScript("window.scrollTo(5, 1);"); | 195 instance_->EvalScript("window.scrollTo(5, 1);"); |
| 208 | 196 |
| 209 PP_Time begin_time = pp::Module::Get()->core()->GetTime(); | |
| 210 while (WaitUntilViewChanged() && | 197 while (WaitUntilViewChanged() && |
| 211 last_view_.GetScrollOffset() != pp::Point(5, 1) && | 198 last_view_.GetScrollOffset() != pp::Point(5, 1)) { |
| 212 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 213 kViewChangeTimeoutSec) { | |
| 214 } | 199 } |
| 215 ASSERT_EQ(pp::Point(5, 1), last_view_.GetScrollOffset()); | 200 ASSERT_EQ(pp::Point(5, 1), last_view_.GetScrollOffset()); |
| 216 | 201 |
| 217 instance_->EvalScript("window.scrollTo(0, 0);"); | 202 instance_->EvalScript("window.scrollTo(0, 0);"); |
| 218 | 203 |
| 219 begin_time = pp::Module::Get()->core()->GetTime(); | |
| 220 while (WaitUntilViewChanged() && | 204 while (WaitUntilViewChanged() && |
| 221 last_view_.GetScrollOffset() != pp::Point(0, 0) && | 205 last_view_.GetScrollOffset() != pp::Point(0, 0)) { |
| 222 pp::Module::Get()->core()->GetTime() - begin_time < | |
| 223 kViewChangeTimeoutSec) { | |
| 224 } | 206 } |
| 225 ASSERT_EQ(pp::Point(0, 0), last_view_.GetScrollOffset()); | 207 ASSERT_EQ(pp::Point(0, 0), last_view_.GetScrollOffset()); |
| 226 | 208 |
| 227 PASS(); | 209 PASS(); |
| 228 } | 210 } |
| OLD | NEW |