1816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/* 2816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Copyright (C) 2015 The Android Open Source Project 3816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 4816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 5816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * you may not use this file except in compliance with the License. 6816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * You may obtain a copy of the License at 7816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 8816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 9816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 10816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Unless required by applicable law or agreed to in writing, software 11816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 12816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * See the License for the specific language governing permissions and 14816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * limitations under the License. 15816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 16816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 17816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopackage com.android.tv.dialog; 18816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 19816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.app.DialogFragment; 20816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.os.Bundle; 21816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.support.annotation.Nullable; 22816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.text.TextUtils; 23816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.util.Log; 24816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.LayoutInflater; 25816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.View; 26816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup; 27816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.view.ViewGroup.LayoutParams; 28816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.webkit.WebView; 29816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkoimport android.webkit.WebViewClient; 30816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 31816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko/** 32816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * A DialogFragment that shows a web view. 33816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 34816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalkopublic class WebDialogFragment extends SafeDismissDialogFragment { 35816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private static final String TAG = "WebDialogFragment"; 36816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private static final String URL = "URL"; 37816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private static final String TITLE = "TITLE"; 38816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private static final String TRACKER_LABEL = "TRACKER_LABEL"; 39816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 406ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko private WebView mWebView; 41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private String mTrackerLabel; 42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko /** 44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Create a new WebDialogFragment to show a particular web page. 45816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 46816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * @param url The URL of the content to show. 47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * @param title Optional title for the dialog. 48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public static WebDialogFragment newInstance(String url, @Nullable String title, 50816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String trackerLabel) { 51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko WebDialogFragment f = new WebDialogFragment(); 52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Bundle args = new Bundle(); 53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(URL, url); 54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(TITLE, title); 55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(TRACKER_LABEL, trackerLabel); 56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko f.setArguments(args); 57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return f; 58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onCreate(Bundle savedInstanceState) { 62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onCreate(savedInstanceState); 63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String title = getArguments().getString(TITLE); 64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mTrackerLabel = getArguments().getString(TRACKER_LABEL); 65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko int style = TextUtils.isEmpty(title) ? DialogFragment.STYLE_NO_TITLE 66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko : DialogFragment.STYLE_NORMAL; 67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko setStyle(style, 0); 68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Nullable 71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public View onCreateView(LayoutInflater inflater, ViewGroup container, 73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Bundle savedInstanceState) { 74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String title = getArguments().getString(TITLE); 75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getDialog().setTitle(title); 76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 776ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mWebView = new WebView(getActivity()); 786ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mWebView.setWebViewClient(new WebViewClient()); 79816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String url = getArguments().getString(URL); 806ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mWebView.loadUrl(url); 81816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Log.d(TAG, "Loading web content from " + url); 82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 836ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko return mWebView; 846ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 856ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko 866ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko @Override 876ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko public void onDestroyView() { 886ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko super.onDestroyView(); 896ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko if (mWebView != null) { 906ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko mWebView.destroy(); 916ebde20b03db4c0d57f67acaac11832b610b966bNick Chalko } 92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onStart() { 96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onStart(); 97816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko // Ensure the dialog is fullscreen, even if the webview doesn't have its content yet. 98816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getDialog().getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 99816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 100816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 101816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 102816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public String getTrackerLabel() { 103816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return mTrackerLabel; 104816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 105816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko} 106