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 40816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko private String mTrackerLabel; 41816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 42816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko /** 43816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * Create a new WebDialogFragment to show a particular web page. 44816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * 45816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * @param url The URL of the content to show. 46816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko * @param title Optional title for the dialog. 47816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko */ 48816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public static WebDialogFragment newInstance(String url, @Nullable String title, 49816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String trackerLabel) { 50816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko WebDialogFragment f = new WebDialogFragment(); 51816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Bundle args = new Bundle(); 52816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(URL, url); 53816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(TITLE, title); 54816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko args.putString(TRACKER_LABEL, trackerLabel); 55816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko f.setArguments(args); 56816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return f; 57816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 58816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 59816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 60816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onCreate(Bundle savedInstanceState) { 61816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onCreate(savedInstanceState); 62816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String title = getArguments().getString(TITLE); 63816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko mTrackerLabel = getArguments().getString(TRACKER_LABEL); 64816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko int style = TextUtils.isEmpty(title) ? DialogFragment.STYLE_NO_TITLE 65816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko : DialogFragment.STYLE_NORMAL; 66816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko setStyle(style, 0); 67816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 68816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 69816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Nullable 70816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 71816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public View onCreateView(LayoutInflater inflater, ViewGroup container, 72816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Bundle savedInstanceState) { 73816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String title = getArguments().getString(TITLE); 74816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getDialog().setTitle(title); 75816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 76816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko WebView webView = new WebView(getActivity()); 77816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko webView.setWebViewClient(new WebViewClient()); 78816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko String url = getArguments().getString(URL); 79816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko webView.loadUrl(url); 80816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko Log.d(TAG, "Loading web content from " + url); 81816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 82816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return webView; 83816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 84816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 85816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 86816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public void onStart() { 87816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko super.onStart(); 88816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko // Ensure the dialog is fullscreen, even if the webview doesn't have its content yet. 89816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko getDialog().getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 90816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 91816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko 92816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko @Override 93816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko public String getTrackerLabel() { 94816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko return mTrackerLabel; 95816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko } 96816a4be1a0f34f6a48877c8afd3dbbca19eac435Nick Chalko} 97