~alan-griffiths/miral/remove-legacy-support

« back to all changes in this revision

Viewing changes to test/workspaces.cpp

  • Committer: Tarmac
  • Author(s): Alan Griffiths
  • Date: 2017-04-03 10:27:20 UTC
  • mfrom: (544.2.2 miral3)
  • Revision ID: tarmac-20170403102720-2r6ome7rwv627s6l
Fix racy Workspaces test setup.

Approved by mir-ci-bot.

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
    ~WorkspacesWindowManagerPolicy();
51
51
 
52
52
    void advise_new_window(miral::WindowInfo const& window_info);
 
53
    void handle_window_ready(miral::WindowInfo& window_info);
53
54
 
54
55
    MOCK_METHOD2(advise_adding_to_workspace,
55
56
                 void(std::shared_ptr<miral::Workspace> const&, std::vector<miral::Window> const&));
59
60
 
60
61
    MOCK_METHOD1(advise_focus_gained, void(miral::WindowInfo const&));
61
62
 
 
63
    MOCK_METHOD1(advise_window_ready, void(miral::WindowInfo const&));
 
64
 
62
65
    Workspaces& test_fixture;
63
66
};
64
67
 
72
75
            .create_window();
73
76
 
74
77
        client_windows[name] = window;
 
78
        init_window(window);
 
79
 
 
80
        return window;
 
81
    }
 
82
 
 
83
    void init_window(Window const& window)
 
84
    {
 
85
        mir::test::Signal window_ready;
 
86
        EXPECT_CALL(policy(), advise_window_ready(_)).WillOnce(InvokeWithoutArgs([&]{ window_ready.raise(); }));
 
87
 
75
88
        mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
76
89
 
77
 
        return window;
 
90
        EXPECT_TRUE(window_ready.wait_for(1s));
78
91
    }
79
92
 
80
93
    auto create_tip(std::string const& name, Window const& parent) -> Window
87
100
            .create_window();
88
101
 
89
102
        client_windows[name] = window;
90
 
        mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
103
        init_window(window);
91
104
 
92
105
        return window;
93
106
    }
100
113
            .create_window();
101
114
 
102
115
        client_windows[name] = window;
103
 
        mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
116
        init_window(window);
104
117
 
105
118
        return window;
106
119
    }
221
234
    std::lock_guard<decltype(test_fixture.mutex)> lock{test_fixture.mutex};
222
235
    test_fixture.server_windows[window_info.name()] = window_info.window();
223
236
}
 
237
 
 
238
void WorkspacesWindowManagerPolicy::handle_window_ready(miral::WindowInfo& window_info)
 
239
{
 
240
    miral::CanonicalWindowManagerPolicy::handle_window_ready(window_info);
 
241
    advise_window_ready(window_info);
 
242
}
224
243
}
225
244
 
226
245
TEST_F(Workspaces, before_a_tree_is_added_to_workspace_it_is_empty)
452
471
            .set_name(a_window.c_str())
453
472
            .create_window();
454
473
 
455
 
        mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
474
        init_window(window);
456
475
 
457
476
        invoke_tools([&, this](WindowManagerTools& tools)
458
477
            {
513
532
        .set_name(a_window.c_str())
514
533
        .create_window();
515
534
 
516
 
    mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
535
    init_window(window);
517
536
 
518
537
    invoke_tools([&, this](WindowManagerTools& tools)
519
538
        {
576
595
        .set_name(a_window.c_str())
577
596
        .create_window();
578
597
 
579
 
    mir_buffer_stream_swap_buffers_sync(mir_window_get_buffer_stream(window));
 
598
    init_window(window);
580
599
 
581
600
    invoke_tools([&, this](WindowManagerTools& tools)
582
601
        {