1109
1122
usc_icon->Remove();
1125
TEST_F(TestApplicationLauncherIcon, ClosesOverlayOnActivation)
1127
bool closes_overlay = false;
1128
UBusManager manager;
1129
manager.RegisterInterest(UBUS_OVERLAY_CLOSE_REQUEST, [&closes_overlay] (GVariant* v) {
1130
ASSERT_THAT(v, IsNull());
1131
closes_overlay = true;
1134
// XXX: we should abstract the application activation into application::Manager
1135
ON_CALL(*mock_icon, ActivateLauncherIcon(_)).WillByDefault(Invoke([this] (ActionArg a) { mock_icon->LocalActivate(a); }));
1136
mock_icon->Activate(ActionArg());
1137
Utils::WaitUntil(closes_overlay);
1139
EXPECT_TRUE(closes_overlay);
1142
TEST_F(TestApplicationLauncherIcon, RemovedPropertyOnRemove)
1144
ASSERT_FALSE(mock_icon->removed);
1145
mock_icon->Remove();
1146
EXPECT_TRUE(mock_icon->removed);
1149
TEST_F(TestApplicationLauncherIcon, RemoveDisconnectsSignals)
1151
ASSERT_FALSE(mock_app->closed.empty());
1152
mock_icon->Remove();
1153
VerifySignalsDisconnection(mock_app);
1156
TEST_F(TestApplicationLauncherIcon, RemoveUnsetsAppParameters)
1159
ASSERT_TRUE(usc_app->seen);
1160
ASSERT_TRUE(usc_app->sticky);
1163
EXPECT_FALSE(usc_app->seen);
1164
EXPECT_FALSE(usc_app->sticky);
1167
TEST_F(TestApplicationLauncherIcon, DestructionUnsetsAppParameters)
1170
ASSERT_TRUE(usc_app->seen);
1171
ASSERT_TRUE(usc_app->sticky);
1174
EXPECT_FALSE(usc_app->seen);
1175
EXPECT_FALSE(usc_app->sticky);
1178
TEST_F(TestApplicationLauncherIcon, DestructionDontUnsetsAppSeenIfRemoved)
1180
ASSERT_TRUE(mock_app->seen);
1182
mock_icon->Remove();
1183
ASSERT_FALSE(mock_app->seen);
1185
mock_app->seen = true;
1186
mock_icon = nullptr;
1188
EXPECT_TRUE(mock_app->seen);
1191
TEST_F(TestApplicationLauncherIcon, DestructionDontUnsetsAppSeenIfReplaced)
1193
ASSERT_TRUE(mock_app->seen);
1195
mock_icon->Remove();
1196
ASSERT_FALSE(mock_app->seen);
1198
MockApplicationLauncherIcon::Ptr new_icon(new NiceMock<MockApplicationLauncherIcon>(mock_app));
1199
mock_icon = nullptr;
1201
EXPECT_TRUE(mock_app->seen);
1204
TEST_F(TestApplicationLauncherIcon, SetApplicationEqual)
1206
ASSERT_TRUE(usc_app->seen);
1207
usc_icon->SetApplication(usc_app);
1208
EXPECT_EQ(usc_app, usc_icon->GetApplication());
1209
EXPECT_TRUE(usc_app->seen);
1210
EXPECT_FALSE(usc_icon->removed);
1213
TEST_F(TestApplicationLauncherIcon, SetApplicationNull)
1216
ASSERT_TRUE(usc_app->seen);
1217
ASSERT_TRUE(usc_app->sticky);
1219
usc_icon->SetApplication(nullptr);
1221
EXPECT_EQ(usc_app, usc_icon->GetApplication());
1222
EXPECT_FALSE(usc_app->seen);
1223
EXPECT_FALSE(usc_app->sticky);
1224
EXPECT_TRUE(usc_icon->removed);
1225
VerifySignalsDisconnection(usc_app);
1228
TEST_F(TestApplicationLauncherIcon, SetApplicationNewUpdatesApp)
1231
ASSERT_TRUE(usc_app->seen);
1232
ASSERT_TRUE(usc_app->sticky);
1233
ASSERT_TRUE(usc_icon->IsSticky());
1235
auto new_app = std::make_shared<MockApplication::Nice>(UM_DESKTOP);
1236
ASSERT_FALSE(new_app->seen);
1237
ASSERT_FALSE(new_app->sticky);
1239
usc_icon->SetApplication(new_app);
1241
EXPECT_EQ(new_app, usc_icon->GetApplication());
1242
EXPECT_FALSE(usc_app->seen);
1243
EXPECT_FALSE(usc_app->sticky);
1244
EXPECT_FALSE(usc_icon->removed);
1245
VerifySignalsDisconnection(usc_app);
1247
EXPECT_TRUE(new_app->seen);
1248
EXPECT_TRUE(new_app->sticky);
1249
EXPECT_TRUE(usc_icon->IsSticky());
1252
TEST_F(TestApplicationLauncherIcon, SetApplicationNewUpdatesFlags)
1254
auto new_app = std::make_shared<MockApplication::Nice>(UM_DESKTOP, "um_icon", "um_title");
1255
new_app->active_ = true;
1256
new_app->visible_ = true;
1257
new_app->running_ = true;
1259
// This is needed to really make the new_app active
1260
auto win = std::make_shared<MockApplicationWindow::Nice>(g_random_int());
1261
new_app->windows_ = { win };
1262
WM->AddStandaloneWindow(std::make_shared<StandaloneWindow>(win->window_id()));
1264
ASSERT_NE(usc_app->title(), new_app->title());
1265
ASSERT_NE(usc_app->icon(), new_app->icon());
1266
ASSERT_NE(usc_app->visible(), new_app->visible());
1267
ASSERT_NE(usc_app->active(), new_app->active());
1268
ASSERT_NE(usc_app->running(), new_app->running());
1269
ASSERT_NE(usc_app->desktop_file(), new_app->desktop_file());
1271
usc_icon->SetApplication(new_app);
1273
EXPECT_EQ(new_app->title(), usc_icon->tooltip_text());
1274
EXPECT_EQ(new_app->icon(), usc_icon->icon_name());
1275
EXPECT_EQ(new_app->visible(), usc_icon->IsVisible());
1276
EXPECT_EQ(new_app->active(), usc_icon->IsActive());
1277
EXPECT_EQ(new_app->running(), usc_icon->IsRunning());
1278
EXPECT_EQ(new_app->desktop_file(), usc_icon->DesktopFile());
1281
TEST_F(TestApplicationLauncherIcon, SetApplicationEmitsChangedSignalsInOrder)
1283
auto new_app = std::make_shared<MockApplication::Nice>(UM_DESKTOP, "um_icon", "um_title");
1284
new_app->active_ = true;
1285
new_app->visible_ = true;
1286
new_app->running_ = true;
1288
struct SignalsHandler
1290
MOCK_METHOD1(TitleUpdated, void(std::string const&));
1291
MOCK_METHOD1(IconUpdated, void(std::string const&));
1292
MOCK_METHOD1(DesktopUpdated, void(std::string const&));
1293
MOCK_METHOD1(ActiveUpdated, void(bool));
1294
MOCK_METHOD1(VisibleUpdated, void(bool));
1295
MOCK_METHOD1(RunningUpdated, void(bool));
1298
SignalsHandler handler;
1299
new_app->title.changed.connect(sigc::mem_fun(handler, &SignalsHandler::TitleUpdated));
1300
new_app->icon.changed.connect(sigc::mem_fun(handler, &SignalsHandler::IconUpdated));
1301
new_app->visible.changed.connect(sigc::mem_fun(handler, &SignalsHandler::VisibleUpdated));
1302
new_app->active.changed.connect(sigc::mem_fun(handler, &SignalsHandler::ActiveUpdated));
1303
new_app->running.changed.connect(sigc::mem_fun(handler, &SignalsHandler::RunningUpdated));
1304
new_app->desktop_file.changed.connect(sigc::mem_fun(handler, &SignalsHandler::DesktopUpdated));
1306
// The desktop file must be updated as last item!
1307
ExpectationSet unordered_calls;
1308
unordered_calls += EXPECT_CALL(handler, TitleUpdated(new_app->title()));
1309
unordered_calls += EXPECT_CALL(handler, IconUpdated(new_app->icon()));
1310
unordered_calls += EXPECT_CALL(handler, VisibleUpdated(new_app->visible()));
1311
unordered_calls += EXPECT_CALL(handler, ActiveUpdated(new_app->active()));
1312
unordered_calls += EXPECT_CALL(handler, RunningUpdated(new_app->running()));
1313
EXPECT_CALL(handler, DesktopUpdated(new_app->desktop_file())).After(unordered_calls);
1315
usc_icon->SetApplication(new_app);
1318
} // anonymous namespace