| Index: ppapi/native_client/tests/ppapi_browser/ppb_scrollbar/ppapi_ppb_scrollbar.cc
|
| ===================================================================
|
| --- ppapi/native_client/tests/ppapi_browser/ppb_scrollbar/ppapi_ppb_scrollbar.cc (revision 0)
|
| +++ ppapi/native_client/tests/ppapi_browser/ppb_scrollbar/ppapi_ppb_scrollbar.cc (revision 0)
|
| @@ -0,0 +1,145 @@
|
| +// Copyright (c) 2011 The Native Client Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include <string.h>
|
| +
|
| +#include "native_client/src/include/nacl_macros.h"
|
| +#include "native_client/src/shared/platform/nacl_check.h"
|
| +#include "native_client/tests/ppapi_test_lib/get_browser_interface.h"
|
| +#include "native_client/tests/ppapi_test_lib/test_interface.h"
|
| +#include "ppapi/c/dev/ppb_scrollbar_dev.h"
|
| +#include "ppapi/c/pp_bool.h"
|
| +#include "ppapi/c/pp_errors.h"
|
| +#include "ppapi/c/pp_rect.h"
|
| +#include "ppapi/c/ppb_core.h"
|
| +#include "ppapi/c/ppb_image_data.h"
|
| +#include "ppapi/c/ppp_messaging.h"
|
| +
|
| +namespace {
|
| +
|
| +const PP_Bool kVertical = PP_TRUE;
|
| +
|
| +// Test PPB_Scrollbar_Dev::Create() and PPB_Scrollbar_Dev::IsScrollbar().
|
| +void TestCreate() {
|
| + // Create a vertical scrollbar.
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + EXPECT(scrollbar != kInvalidResource);
|
| + EXPECT(PPBScrollbarDev()->IsScrollbar(scrollbar));
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + // Create a horizontal scrollbar.
|
| + scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + PP_FALSE); // vertical
|
| + EXPECT(scrollbar != kInvalidResource);
|
| + EXPECT(PPBScrollbarDev()->IsScrollbar(scrollbar));
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + // Test that an invalid instance causes failure.
|
| + scrollbar = PPBScrollbarDev()->Create(kInvalidInstance,
|
| + PP_TRUE); // vertical
|
| + EXPECT(scrollbar == kInvalidResource);
|
| + EXPECT(!PPBScrollbarDev()->IsScrollbar(scrollbar));
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +// Test PPB_Scrollbar_Dev::GetThickness().
|
| +void TestGetThickness() {
|
| + // Thickness is a platform-defined constant; about all we can assume is
|
| + // that it is greater than 0.
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + uint32_t thickness = PPBScrollbarDev()->GetThickness(scrollbar);
|
| + EXPECT(thickness > 0);
|
| +
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +// Test PPB_Scrollbar_Dev::GetValue(), PPB_Scrollbar_Dev::SetValue().
|
| +void TestValue() {
|
| + // Test that initial value is 0.
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + uint32_t value = PPBScrollbarDev()->GetValue(scrollbar);
|
| + EXPECT(value == 0);
|
| +
|
| + // Set document size to expand value range.
|
| + // TODO(bbudge) Refine tests once issues with scrollbar size/value are
|
| + // worked out. http://code.google.com/p/chromium/issues/detail?id=89367
|
| + PPBScrollbarDev()->SetDocumentSize(scrollbar, 100);
|
| + PPBScrollbarDev()->SetValue(scrollbar, 10);
|
| + value = PPBScrollbarDev()->GetValue(scrollbar);
|
| + EXPECT(value == 10);
|
| +
|
| + PPBScrollbarDev()->SetValue(scrollbar, 0);
|
| + value = PPBScrollbarDev()->GetValue(scrollbar);
|
| + EXPECT(value == 0);
|
| +
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +// Test PPB_Scrollbar_Dev::SetDocumentSize(). This only effects scrollbar
|
| +// appearance, so it should be verified visually.
|
| +void TestSetDocumentSize() {
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + PPBScrollbarDev()->SetDocumentSize(scrollbar, 100);
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +// Test PPB_Scrollbar_Dev::ScrollBy().
|
| +void TestScrollBy() {
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + // Set document size to expand value range.
|
| + // TODO(bbudge) Refine tests once issues with scrollbar size/value are
|
| + // worked out. http://code.google.com/p/chromium/issues/detail?id=89367
|
| + PPBScrollbarDev()->SetDocumentSize(scrollbar, 100);
|
| + PPBScrollbarDev()->ScrollBy(scrollbar, PP_SCROLLBY_PIXEL, 10);
|
| + uint32_t value = PPBScrollbarDev()->GetValue(scrollbar);
|
| + EXPECT(value == 10);
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +// Test PPB_Scrollbar_Dev::SetTickMarks(). This only effects scrollbar
|
| +// appearance, so it should be verified visually.
|
| +void TestSetTickMarks() {
|
| + PP_Resource scrollbar = PPBScrollbarDev()->Create(pp_instance(),
|
| + kVertical);
|
| + uint32_t thickness = PPBScrollbarDev()->GetThickness(scrollbar);
|
| + const int32_t kCount = 2;
|
| + PP_Rect tick_marks[kCount] = {
|
| + { {0, 0}, {thickness, 1} },
|
| + { {10, 10}, {thickness, 1} } };
|
| + PPBScrollbarDev()->SetTickMarks(scrollbar, tick_marks, kCount);
|
| + // Make sure we can handle an empty array.
|
| + PPBScrollbarDev()->SetTickMarks(scrollbar, NULL, 0);
|
| + PPBCore()->ReleaseResource(scrollbar);
|
| +
|
| + TEST_PASSED;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +void SetupTests() {
|
| + RegisterTest("TestCreate", TestCreate);
|
| + RegisterTest("TestGetThickness", TestGetThickness);
|
| + RegisterTest("TestValue", TestValue);
|
| + RegisterTest("TestSetDocumentSize", TestSetDocumentSize);
|
| + RegisterTest("TestSetTickMarks", TestSetTickMarks);
|
| + RegisterTest("TestScrollBy", TestScrollBy);
|
| +}
|
| +
|
| +void SetupPluginInterfaces() {
|
| +}
|
| +
|
|
|