TEST(ActivityTest, TestAdopt) { MockActivityService mockActivityService; MockBusClient serviceClient; MojInt32 activityId = 1; ActivityPtr activity = Activity::PrepareAdoptedActivity(activityId); ASSERT_TRUE( activity->CanAdopt() ); activity->Adopt(serviceClient); ASSERT_TRUE( !activity->CanAdopt() ); // Check adopt response MockRequestPtr req = serviceClient.GetLastRequest(); CheckRequest(req, "com.palm.activitymanager", "adopt"); ASSERT_EQ( activityId, GetActivityId(req->GetPayload()) ); // Reply to adopt mockActivityService.HandleRequest(req); ASSERT_TRUE( activity->IsActive() ); activity->Complete(serviceClient); }
void ImapSessionCommand::AddActivity(const ActivityPtr& activity) { if(activity.get()) { m_commandActivitySet->AddActivity(activity); // Attempt to adopt immediately (async) to avoid blocking ActivityManager queue activity->Adopt(m_session.GetBusClient()); } }
UpdateAccountCommand::UpdateAccountCommand(ImapClient& client, ActivityPtr activity, bool credentialsChanged) : ImapClientCommand(client), m_activitySet(new ActivitySet(client)), m_credentialsChanged(credentialsChanged), m_getAccountTransportSlot(this, &UpdateAccountCommand::GetAccountTransportResponse), m_updateFolderActivitiesSlot(this, &UpdateAccountCommand::UpdateFolderActivitiesDone), m_endActivitiesSlot(this, &UpdateAccountCommand::ActivitiesEnded), m_notifySmtpSlot(this, &UpdateAccountCommand::NotifySmtpResponse) { // FIXME wait for adoption to complete // EndActivities will wait for us, but it's not as polite if(activity.get() && activity->CanAdopt()) { m_activitySet->AddActivity(activity); activity->Adopt(client); activity->SetEndOrder(Activity::EndOrder_Last); } }
TEST(ActivityTest, TestAdoptFailure) { MockActivityService mockActivityService; MockBusClient serviceClient; MojInt32 activityId = 1; ActivityPtr activity = Activity::PrepareAdoptedActivity(activityId); MojRefCountedPtr<MockActivitySlots> slots(new MockActivitySlots(activity)); activity->Adopt(serviceClient); MockRequestPtr req = serviceClient.GetLastRequest(); // Should handle the error and pass it along to the error slot slots->ExpectError(); MojObject response; req->ReplyNow(response, MojErrInternal); slots->Check(); }
TEST(ActivityTest, TestActivityManagerOffline) { MockActivityService mockActivityService; MockBusClient serviceClient; mockActivityService.SetOffline(true); MojInt32 activityId = 1; ActivityPtr activity = Activity::PrepareAdoptedActivity(activityId); MojRefCountedPtr<MockActivitySlots> slots(new MockActivitySlots(activity)); activity->Adopt(serviceClient); MockRequestPtr req = serviceClient.GetLastRequest(); // Should handle the error and pass it along to the error slot slots->ExpectError(); mockActivityService.HandleRequest(req); slots->Check(); }