@Override
 public ServiceSubscription<WebAppPinStatusListener> subscribeIsWebAppPinned(
     String webAppId, WebAppPinStatusListener listener) {
   mWebAppPinnedSubscription =
       service.getWebAppLauncher().subscribeIsWebAppPinned(webAppId, listener);
   return mWebAppPinnedSubscription;
 }
  public String getFullAppId() {
    if (mFullAppId == null) {
      if (launchSession.getSessionType() != LaunchSessionType.WebApp)
        mFullAppId = launchSession.getAppId();
      else {
        Enumeration<String> enumeration = service.getWebAppIdMappings().keys();

        while (enumeration.hasMoreElements()) {
          String mappedFullAppId = enumeration.nextElement();
          String mappedAppId = service.getWebAppIdMappings().get(mappedFullAppId);

          if (mappedAppId.equalsIgnoreCase(launchSession.getAppId())) {
            mFullAppId = mappedAppId;
            break;
          }
        }
      }
    }

    if (mFullAppId == null) return launchSession.getAppId();
    else return mFullAppId;
  }
  @Override
  public void close(ResponseListener<Object> listener) {
    mActiveCommands.clear();

    if (mPlayStateSubscription != null) {
      mPlayStateSubscription.unsubscribe();
      mPlayStateSubscription = null;
    }

    if (mMessageSubscription != null) {
      mMessageSubscription.unsubscribe();
      mMessageSubscription = null;
    }

    if (mWebAppPinnedSubscription != null) {
      mWebAppPinnedSubscription.unsubscribe();
      mWebAppPinnedSubscription = null;
    }

    service.getWebAppLauncher().closeWebApp(launchSession, listener);
  }
 @Override
 public void isWebAppPinned(String webAppId, WebAppPinStatusListener listener) {
   service.getWebAppLauncher().isWebAppPinned(webAppId, listener);
 }
 @Override
 public void unPinWebApp(String webAppId, ResponseListener<Object> listener) {
   service.getWebAppLauncher().unPinWebApp(webAppId, listener);
 }