text: /*
   * Copyright (c) 2021 Huawei Device Co., Ltd.
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #include "amsstabilityg2.h"
  
  namespace OHOS {
  namespace AppExecFwk {
  void AmsStAbilityG2::OnStart(const Want &want)
  {
      GetWantInfo(want);
  
      APP_LOGI("AmsStAbilityG2::onStart");
      pageAbilityEvent.SubscribeEvent(STEventName::g_eventList, shared_from_this());
      Ability::OnStart(want);
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnStart;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnStartCount(), eventData);
  }
  
  void AmsStAbilityG2::OnNewWant(const Want &want)
  {
      GetWantInfo(want);
  
      APP_LOGI("AmsStAbilityG2::OnNewWant");
      Ability::OnNewWant(want);
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnNewWant;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnNewWantCount(), eventData);
  }
  
  void AmsStAbilityG2::OnForeground(const Want &want)
  {
      GetWantInfo(want);
  
      APP_LOGI("AmsStAbilityG2::OnForeground");
      Ability::OnForeground(want);
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnForeground;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnForegroundCount(), eventData);
  }
  
  void AmsStAbilityG2::OnStop()
  {
      APP_LOGI("AmsStAbilityG2::onStop");
      Ability::OnStop();
      pageAbilityEvent.UnsubscribeEvent();
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnStop;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnStopCount(), eventData);
  }
  
  void AmsStAbilityG2::OnActive()
  {
      APP_LOGI("AmsStAbilityG2::OnActive");
      Ability::OnActive();
      if (std::string::npos != shouldReturn.find(GetAbilityName())) {
          TerminateAbility();
      }
      Clear();
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnActive;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnActiveCount(), eventData);
  }
  
  void AmsStAbilityG2::OnInactive()
  {
      APP_LOGI("AmsStAbilityG2::OnInactive");
      Ability::OnInactive();
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnInactive;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnInactiveCount(), eventData);
  }
  
  void AmsStAbilityG2::OnBackground()
  {
      APP_LOGI("AmsStAbilityG2::OnBackground");
      Ability::OnBackground();
      std::string eventData = GetAbilityName() + STEventName::g_abilityStateOnBackground;
      pageAbilityEvent.PublishEvent(STEventName::g_eventName, pageAbilityEvent.GetOnBackgroundCount(), eventData);
  }
  
  void AmsStAbilityG2::Clear()
  {
      shouldReturn = "";
      targetBundle = "";
      targetAbility = "";
  }
  
  void AmsStAbilityG2::GetWantInfo(const Want &want)
  {
      Want mWant(want);
      shouldReturn = mWant.GetStringParam("shouldReturn");
      targetBundle = mWant.GetStringParam("targetBundle");
      targetAbility = mWant.GetStringParam("targetAbility");
  }
  
  REGISTER_AA(AmsStAbilityG2);
  }  // namespace AppExecFwk
  }  // namespace OHOS