| Index: apps/moterm/gl_helper_unittest.cc
|
| diff --git a/apps/moterm/gl_helper_unittest.cc b/apps/moterm/gl_helper_unittest.cc
|
| deleted file mode 100644
|
| index 409aab604ef494dea70fa4d58d87af6c27b8b615..0000000000000000000000000000000000000000
|
| --- a/apps/moterm/gl_helper_unittest.cc
|
| +++ /dev/null
|
| @@ -1,169 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Note: This test depends on |GlHelper|, which depends on an implementation of
|
| -// mojo:native_viewport_service and mojo:surfaces_service.
|
| -
|
| -#include "apps/moterm/gl_helper.h"
|
| -
|
| -#include <GLES2/gl2.h>
|
| -
|
| -#include "base/logging.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "mojo/public/cpp/application/application_impl.h"
|
| -#include "mojo/public/cpp/application/application_test_base.h"
|
| -#include "mojo/services/surfaces/interfaces/surface_id.mojom.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -namespace {
|
| -
|
| -class GlHelperTest : public mojo::test::ApplicationTestBase,
|
| - public GlHelper::Client {
|
| - public:
|
| - GlHelperTest()
|
| - : surface_id_changed_call_count_(0),
|
| - on_frame_displayed_call_count_(0),
|
| - last_frame_id_(0) {}
|
| - ~GlHelperTest() override {}
|
| -
|
| - void SetUp() override {
|
| - mojo::test::ApplicationTestBase::SetUp();
|
| -
|
| - initial_size_.width = 100;
|
| - initial_size_.height = 100;
|
| - gl_helper_.reset(new GlHelper(this, application_impl()->shell(), GL_RGBA,
|
| - false, initial_size_));
|
| - }
|
| -
|
| - protected:
|
| - const mojo::Size& initial_size() const { return initial_size_; }
|
| - GlHelper* gl_helper() { return gl_helper_.get(); }
|
| -
|
| - unsigned surface_id_changed_call_count() const {
|
| - return surface_id_changed_call_count_;
|
| - }
|
| - const mojo::SurfaceId* last_surface_id() const {
|
| - return last_surface_id_.get();
|
| - }
|
| - unsigned on_frame_displayed_call_count() const {
|
| - return on_frame_displayed_call_count_;
|
| - }
|
| - uint32_t last_frame_id() const { return last_frame_id_; }
|
| -
|
| - private:
|
| - // |GlHelper::Client|:
|
| - void OnSurfaceIdChanged(mojo::SurfaceIdPtr surface_id) override {
|
| - surface_id_changed_call_count_++;
|
| - last_surface_id_ = surface_id.Pass();
|
| - base::MessageLoop::current()->Quit();
|
| - }
|
| -
|
| - void OnContextLost() override {
|
| - // We don't currently test this, but we'll get it on teardown.
|
| - // TODO(vtl): We probably should figure out how to test this explicitly.
|
| - }
|
| -
|
| - void OnFrameDisplayed(uint32_t frame_id) override {
|
| - on_frame_displayed_call_count_++;
|
| - last_frame_id_ = frame_id;
|
| - base::MessageLoop::current()->Quit();
|
| - }
|
| -
|
| - mojo::Size initial_size_;
|
| - scoped_ptr<GlHelper> gl_helper_;
|
| -
|
| - unsigned surface_id_changed_call_count_;
|
| - mojo::SurfaceIdPtr last_surface_id_;
|
| - unsigned on_frame_displayed_call_count_;
|
| - uint32_t last_frame_id_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GlHelperTest);
|
| -};
|
| -
|
| -TEST_F(GlHelperTest, Basic) {
|
| - gl_helper()->StartFrame();
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -
|
| - scoped_ptr<unsigned char[]> bitmap(
|
| - new unsigned char[initial_size().width * initial_size().height * 4]);
|
| - memset(bitmap.get(), 123, initial_size().width * initial_size().height * 4);
|
| - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, initial_size().width,
|
| - initial_size().height, GL_RGBA, GL_UNSIGNED_BYTE,
|
| - bitmap.get());
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -
|
| - uint32_t frame_id = gl_helper()->EndFrame();
|
| -
|
| - // We should get |OnSurfaceIdChanged()| and then |OnFrameDisplayed()|.
|
| - while (surface_id_changed_call_count() < 1u ||
|
| - on_frame_displayed_call_count() < 1u)
|
| - base::MessageLoop::current()->Run();
|
| -
|
| - EXPECT_EQ(1u, surface_id_changed_call_count());
|
| - EXPECT_TRUE(last_surface_id());
|
| - EXPECT_NE(last_surface_id()->local, 0u);
|
| - EXPECT_NE(last_surface_id()->id_namespace, 0u);
|
| - EXPECT_EQ(1u, on_frame_displayed_call_count());
|
| - EXPECT_EQ(frame_id, last_frame_id());
|
| -}
|
| -
|
| -TEST_F(GlHelperTest, SetSurfaceSizeAndMakeCurrent) {
|
| - // It only creates surfaces lazily, so we have to start/end a frame.
|
| - gl_helper()->StartFrame();
|
| - GLuint frame_id = gl_helper()->EndFrame();
|
| - while (surface_id_changed_call_count() < 1u ||
|
| - on_frame_displayed_call_count() < 1u)
|
| - base::MessageLoop::current()->Run();
|
| - EXPECT_EQ(1u, surface_id_changed_call_count());
|
| - mojo::SurfaceId surface_id = *last_surface_id();
|
| - EXPECT_EQ(1u, on_frame_displayed_call_count());
|
| - EXPECT_EQ(frame_id, last_frame_id());
|
| -
|
| - // Set a new surface size.
|
| - mojo::Size new_size;
|
| - new_size.width = initial_size().width * 2;
|
| - new_size.height = initial_size().height + 50;
|
| - gl_helper()->SetSurfaceSize(new_size);
|
| -
|
| - gl_helper()->StartFrame();
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -
|
| - GLuint frame_texture = gl_helper()->GetFrameTexture();
|
| - EXPECT_NE(frame_texture, 0u);
|
| -
|
| - // Binding it should be OK.
|
| - glBindTexture(GL_TEXTURE_2D, frame_texture);
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -
|
| - scoped_ptr<unsigned char[]> bitmap(
|
| - new unsigned char[new_size.width * new_size.height * 4]);
|
| - memset(bitmap.get(), 123, new_size.width * new_size.height * 4);
|
| - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, new_size.width, new_size.height,
|
| - GL_RGBA, GL_UNSIGNED_BYTE, bitmap.get());
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -
|
| - frame_id = gl_helper()->EndFrame();
|
| - EXPECT_NE(frame_id, last_frame_id());
|
| -
|
| - // We should get another |OnSurfaceIdChanged()| and another
|
| - // |OnFrameDisplayed()|.
|
| - while (surface_id_changed_call_count() < 2u ||
|
| - on_frame_displayed_call_count() < 2u)
|
| - base::MessageLoop::current()->Run();
|
| - EXPECT_EQ(2u, surface_id_changed_call_count());
|
| - EXPECT_TRUE(last_surface_id());
|
| - // Only the local part of the surface ID should have changed.
|
| - EXPECT_NE(last_surface_id()->local, surface_id.local);
|
| - EXPECT_EQ(surface_id.id_namespace, last_surface_id()->id_namespace);
|
| - EXPECT_EQ(2u, on_frame_displayed_call_count());
|
| - EXPECT_EQ(frame_id, last_frame_id());
|
| -
|
| - // An out-of-the-blue |MakeCurrent()| should work.
|
| - gl_helper()->MakeCurrent();
|
| - EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), glGetError());
|
| -}
|
| -
|
| -} // namespace
|
|
|