private void setElementParent()

in stetho/src/main/java/com/facebook/stetho/inspector/elements/ShadowDocument.java [196:237]


    private void setElementParent(Object element, Object parentElement) {
      ElementInfo changesElementInfo = mElementToInfoChangesMap.get(element);
      if (changesElementInfo != null &&
          parentElement == changesElementInfo.parentElement) {
        return;
      }

      ElementInfo oldElementInfo = mElementToInfoMap.get(element);
      if (changesElementInfo == null &&
          oldElementInfo != null &&
          parentElement == oldElementInfo.parentElement) {
        return;
      }

      if (changesElementInfo != null &&
          oldElementInfo != null &&
          parentElement == oldElementInfo.parentElement &&
          ListUtil.identityEquals(oldElementInfo.children, changesElementInfo.children)) {
        mElementToInfoChangesMap.remove(element);

        if (parentElement == null) {
          mRootElementChanges.remove(element);
        }

        return;
      }

      List<Object> children = (changesElementInfo != null)
          ? changesElementInfo.children
          : (oldElementInfo != null)
          ? oldElementInfo.children
          : Collections.emptyList();

      ElementInfo newElementInfo = new ElementInfo(element, parentElement, children);
      mElementToInfoChangesMap.put(element, newElementInfo);

      if (parentElement == null) {
        mRootElementChanges.add(element);
      } else {
        mRootElementChanges.remove(element);
      }
    }