gt:     protected void onDetachedFromWindow() {
context: /*
   * This is the source code of Telegram for Android v. 2.x.x.
   * It is licensed under GNU GPL v. 2 or later.
   * You should have received a copy of the license in this archive (see LICENSE).
   *
   * Copyright Nikolai Kudashov, 2013-2015.
   */
  
  package org.telegram.ui.Components;
  
  import android.annotation.SuppressLint;
  import android.content.Context;
  import android.content.Intent;
  import android.net.Uri;
  import android.os.Build;
  import android.provider.Browser;
  import android.text.TextUtils;
  import android.util.TypedValue;
  import android.view.Gravity;
  import android.view.MotionEvent;
  import android.view.View;
  import android.webkit.CookieManager;
  import android.webkit.WebChromeClient;
  import android.webkit.WebSettings;
  import android.webkit.WebView;
  import android.webkit.WebViewClient;
  import android.widget.FrameLayout;
  import android.widget.LinearLayout;
  import android.widget.ProgressBar;
  import android.widget.TextView;
  import android.widget.Toast;
  
  import org.telegram.android.AndroidUtilities;
  import org.telegram.android.LocaleController;
  import org.telegram.messenger.ApplicationLoader;
  import org.telegram.messenger.R;
  import org.telegram.ui.ActionBar.BottomSheet;
  
  import java.util.HashMap;
  
  public class WebFrameLayout extends FrameLayout {
  
      private WebView webView;
      private BottomSheet dialog;
      private View customView;
      private FrameLayout fullscreenVideoContainer;
      private WebChromeClient.CustomViewCallback customViewCallback;
      private ProgressBar progressBar;
  
      private int width;
      private int height;
      private String openUrl;
  
      @SuppressLint("SetJavaScriptEnabled")
      public WebFrameLayout(Context context, BottomSheet parentDialog, String title, String originalUrl, final String url, int w, int h) {
          super(context);
  
          openUrl = originalUrl;
          width = w;
          height = h;
          dialog = parentDialog;
  
          fullscreenVideoContainer = new FrameLayout(context);
          fullscreenVideoContainer.setBackgroundColor(0xff000000);
          dialog.getContainer().addView(fullscreenVideoContainer, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
          fullscreenVideoContainer.setVisibility(INVISIBLE);
  
          LinearLayout linearLayout = new LinearLayout(context);
          linearLayout.setOrientation(LinearLayout.HORIZONTAL);
          addView(linearLayout, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 32, Gravity.LEFT | Gravity.TOP));
  
          TextView textView = new TextView(context);
          textView.setTextColor(0xff666666);
          textView.setText(title);
          textView.setSingleLine(true);
          textView.setEllipsize(TextUtils.TruncateAt.END);
          textView.setGravity(Gravity.CENTER_VERTICAL);
          textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
          linearLayout.addView(textView, LayoutHelper.createLinear(0, LayoutHelper.MATCH_PARENT, 1.0f, 16, 0, 0, 0));
  
          textView = new TextView(context);
          textView.setTextColor(0xff999999);
          textView.setText(LocaleController.getString("OpenInBrowser", R.string.OpenInBrowser));
          textView.setGravity(Gravity.CENTER_VERTICAL);
          textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
          linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, 16, 0, 0, 0));
          textView.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  Uri uri = Uri.parse(openUrl);
                  Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                  intent.putExtra(Browser.EXTRA_APPLICATION_ID, getContext().getPackageName());
                  getContext().startActivity(intent);
                  if (dialog != null) {
                      dialog.dismiss();
                  }
              }
          });
  
          textView = new TextView(context);
          textView.setTextColor(0xff999999);
          textView.setText(LocaleController.getString("CopyUrl", R.string.CopyUrl));
          textView.setGravity(Gravity.CENTER_VERTICAL);
          textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 12);
          linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, 16, 0, 16, 0));
          textView.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  if (Build.VERSION.SDK_INT < 11) {
                      android.text.ClipboardManager clipboard = (android.text.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE);
                      clipboard.setText(openUrl);
                  } else {
                      android.content.ClipboardManager clipboard = (android.content.ClipboardManager) ApplicationLoader.applicationContext.getSystemService(Context.CLIPBOARD_SERVICE);
                      android.content.ClipData clip = android.content.ClipData.newPlainText("label", openUrl);
                      clipboard.setPrimaryClip(clip);
                  }
                  Toast.makeText(getContext(), LocaleController.getString("LinkCopied", R.string.LinkCopied), Toast.LENGTH_SHORT).show();
                  if (dialog != null) {
                      dialog.dismiss();
                  }
              }
          });
  
          View lineView = new View(context);
          lineView.setBackgroundColor(0xffcdcdcd);
          addView(lineView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 1, Gravity.TOP | Gravity.LEFT, 0, 40, 0, 0));
  
          webView = new WebView(context);
          webView.getSettings().setJavaScriptEnabled(true);
          String userAgent = webView.getSettings().getUserAgentString();
          if (userAgent != null) {
              userAgent = userAgent.replace("Android", "");
              webView.getSettings().setUserAgentString(userAgent);
          }
          if (Build.VERSION.SDK_INT >= 21) {
              webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
              CookieManager cookieManager = CookieManager.getInstance();
              cookieManager.setAcceptThirdPartyCookies(webView, true);
          }
  
          webView.setWebChromeClient(new WebChromeClient() {
  
              @Override
              public void onShowCustomView(View view, int requestedOrientation, CustomViewCallback callback) {
                  onShowCustomView(view, callback);
              }
  
              @Override
              public void onShowCustomView(View view, CustomViewCallback callback) {
                  if (customView != null) {
                      callback.onCustomViewHidden();
                      return;
                  }
                  customView = view;
                  if (dialog != null) {
                      dialog.getSheetContainer().setVisibility(INVISIBLE);
                      fullscreenVideoContainer.setVisibility(VISIBLE);
                      fullscreenVideoContainer.addView(view, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
                  }
                  customViewCallback = callback;
              }
  
              @Override
              public void onHideCustomView() {
                  super.onHideCustomView();
                  if (customView == null) {
                      return;
                  }
                  if (dialog != null) {
                      dialog.getSheetContainer().setVisibility(VISIBLE);
                      fullscreenVideoContainer.setVisibility(INVISIBLE);
                      fullscreenVideoContainer.removeView(customView);
                  }
                  if (customViewCallback != null && !customViewCallback.getClass().getName().contains(".chromium.")) {
                      customViewCallback.onCustomViewHidden();
                  }
                  customView = null;
              }
          });
  
          webView.setWebViewClient(new WebViewClient() {
              @Override
              public void onLoadResource(WebView view, String url) {
                  super.onLoadResource(view, url);
              }
  
  
              @Override
              public void onPageFinished(WebView view, String url) {
                  super.onPageFinished(view, url);
                  progressBar.setVisibility(INVISIBLE);
              }
          });
  
          addView(webView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 8, 49, 8, 0));
  
          progressBar = new ProgressBar(context);
          addView(progressBar, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER, 8, 24, 8, 0));
  
          setOnTouchListener(new OnTouchListener() {
              @Override
              public boolean onTouch(View v, MotionEvent event) {
                  return true;
              }
          });
  
          parentDialog.setDelegate(new BottomSheet.BottomSheetDelegate() {
              @Override
              public void onOpenAnimationEnd() {
                  HashMap<String, String> args = new HashMap<>();
                  args.put("Referer", "http://youtube.com");
                  webView.loadUrl(url, args);
              }
          });
      }
  
      @Override
  