~mir-team/miral/release

« back to all changes in this revision

Viewing changes to test/workspaces.cpp

  • Committer: Bileto Bot
  • Date: 2017-06-21 08:34:34 UTC
  • mfrom: (360.1.1 miral-release)
  • Revision ID: ci-train-bot@canonical.com-20170621083434-e7ftkyg5qr2fzsao
* New upstream release 1.4.0 (https://launchpad.net/miral/+milestone/1.4.0)
  - ABI summary:
    . miral ABI unchanged at 2
  - Enhancements:
    . Support for passing messages to enable Drag & Drop
    . Support for client requested move
    . Port to the undeprecated Mir APIs
    . Added "--cursor-theme" option when configuring a cursor theme
    . Drop support for Mir versions before 0.26
  - Bugs fixed:

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#include <miral/workspace_policy.h>
20
20
#include <miral/window_manager_tools.h>
21
21
 
 
22
#include <mir/client/surface.h>
22
23
#include <mir/client/window.h>
23
24
#include <mir/client/window_spec.h>
24
25
#include <mir_toolkit/mir_buffer_stream.h>
65
66
    Workspaces& test_fixture;
66
67
};
67
68
 
 
69
struct TestWindow : Surface, Window
 
70
{
 
71
    using Surface::operator=;
 
72
    using Window::operator=;
 
73
};
 
74
 
68
75
struct Workspaces : public miral::TestServer
69
76
{
70
 
    auto create_window(std::string const& name) -> Window
 
77
    auto create_window(std::string const& name) -> TestWindow
71
78
    {
72
 
        auto const window = WindowSpec::for_normal_window(client_connection, 50, 50, mir_pixel_format_argb_8888)
73
 
            .set_buffer_usage(mir_buffer_usage_software)
 
79
        TestWindow result;
 
80
 
 
81
        result = Surface{mir_connection_create_render_surface_sync(client_connection, 50, 50)};
 
82
        result = WindowSpec::for_normal_window(client_connection, 50, 50)
74
83
            .set_name(name.c_str())
 
84
            .add_surface(result, 50, 50, 0, 0)
75
85
            .create_window();
76
86
 
77
 
        client_windows[name] = window;
78
 
        init_window(window);
 
87
        client_windows[name] = result;
 
88
        init_window(result);
79
89
 
80
 
        return window;
 
90
        return result;
81
91
    }
82
92
 
83
 
    void init_window(Window const& window)
 
93
    void init_window(TestWindow const& window)
84
94
    {
85
95
        mir::test::Signal window_ready;
86
96
        EXPECT_CALL(policy(), advise_window_ready(_)).WillOnce(InvokeWithoutArgs([&]{ window_ready.raise(); }));
87
97
 
88
 
        mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
98
        mir_buffer_stream_swap_buffers_sync(
 
99
            mir_render_surface_get_buffer_stream(window, 50, 50, mir_pixel_format_argb_8888));
89
100
 
90
101
        EXPECT_TRUE(window_ready.wait_for(1s));
91
102
    }
92
103
 
93
 
    auto create_tip(std::string const& name, Window const& parent) -> Window
 
104
    auto create_tip(std::string const& name, Window const& parent) -> TestWindow
94
105
    {
 
106
        TestWindow result;
 
107
 
 
108
        result = Surface{mir_connection_create_render_surface_sync(client_connection, 50, 50)};
 
109
 
95
110
        MirRectangle aux_rect{10, 10, 10, 10};
96
 
        auto const window = WindowSpec::for_tip(client_connection, 50, 50, mir_pixel_format_argb_8888, parent,
97
 
                                                &aux_rect, mir_edge_attachment_any)
98
 
            .set_buffer_usage(mir_buffer_usage_software)
 
111
        result = WindowSpec::for_tip(client_connection, 50, 50, parent, &aux_rect, mir_edge_attachment_any)
99
112
            .set_name(name.c_str())
 
113
            .add_surface(result, 50, 50, 0, 0)
100
114
            .create_window();
101
115
 
102
 
        client_windows[name] = window;
103
 
        init_window(window);
 
116
        client_windows[name] = result;
 
117
        init_window(result);
104
118
 
105
 
        return window;
 
119
        return result;
106
120
    }
107
121
 
108
 
    auto create_dialog(std::string const& name, Window const& parent) -> Window
 
122
    auto create_dialog(std::string const& name, Window const& parent) -> TestWindow
109
123
    {
110
 
        auto const window = WindowSpec::for_dialog(client_connection, 50, 50, mir_pixel_format_argb_8888, parent)
111
 
            .set_buffer_usage(mir_buffer_usage_software)
 
124
        TestWindow result;
 
125
 
 
126
        result = Surface{mir_connection_create_render_surface_sync(client_connection, 50, 50)};
 
127
 
 
128
        result = WindowSpec::for_dialog(client_connection, 50, 50, parent)
112
129
            .set_name(name.c_str())
 
130
            .add_surface(result, 50, 50, 0, 0)
113
131
            .create_window();
114
132
 
115
 
        client_windows[name] = window;
116
 
        init_window(window);
 
133
        client_windows[name] = result;
 
134
        init_window(result);
117
135
 
118
 
        return window;
 
136
        return result;
119
137
    }
120
138
 
121
139
    auto create_workspace() -> std::shared_ptr<miral::Workspace>
202
220
 
203
221
private:
204
222
    std::mutex mutable mutex;
205
 
    std::map<std::string, Window> client_windows;
 
223
    std::map<std::string, TestWindow> client_windows;
206
224
    std::map<std::string, miral::Window> server_windows;
207
225
    WorkspacesWindowManagerPolicy* the_policy{nullptr};
208
226
 
466
484
 
467
485
    {
468
486
        auto const another_app = connect_client("another app");
469
 
        auto const window = WindowSpec::for_normal_window(another_app, 50, 50, mir_pixel_format_argb_8888)
470
 
            .set_buffer_usage(mir_buffer_usage_software)
 
487
        TestWindow window;
 
488
        window = Surface{mir_connection_create_render_surface_sync(another_app, 50, 50)};
 
489
        window = WindowSpec::for_normal_window(another_app, 50, 50)
471
490
            .set_name(a_window.c_str())
 
491
            .add_surface(window, 50, 50, 0, 0)
472
492
            .create_window();
473
493
 
474
494
        init_window(window);
527
547
    create_window(another_window);
528
548
 
529
549
    auto const another_app = connect_client("another app");
530
 
    auto const window = WindowSpec::for_normal_window(another_app, 50, 50, mir_pixel_format_argb_8888)
531
 
        .set_buffer_usage(mir_buffer_usage_software)
 
550
    TestWindow window;
 
551
    window = Surface{mir_connection_create_render_surface_sync(another_app, 50, 50)};
 
552
    window = WindowSpec::for_normal_window(another_app, 50, 50)
532
553
        .set_name(a_window.c_str())
 
554
        .add_surface(window, 50, 50, 0, 0)
533
555
        .create_window();
534
556
 
535
557
    init_window(window);
590
612
    create_window(another_window);
591
613
 
592
614
    auto const another_app = connect_client("another app");
593
 
    auto const window = WindowSpec::for_normal_window(another_app, 50, 50, mir_pixel_format_argb_8888)
594
 
        .set_buffer_usage(mir_buffer_usage_software)
 
615
    TestWindow window;
 
616
    window = Surface{mir_connection_create_render_surface_sync(another_app, 50, 50)};
 
617
    window = WindowSpec::for_normal_window(another_app, 50, 50)
595
618
        .set_name(a_window.c_str())
 
619
        .add_surface(window, 50, 50, 0, 0)
596
620
        .create_window();
597
621
 
598
622
    init_window(window);