jdk/src/solaris/native/sun/xawt/awt_Desktop.c
author azvegint
Wed, 18 Dec 2013 11:01:33 +0000
changeset 23243 43e5bc27297f
parent 21261 47f0a3e7ef46
child 24165 fb4f67872b27
permissions -rw-r--r--
8029263: user's default browser can not launch after we click the button, and there is an IOException shown in the log text (java.io.IOException) Reviewed-by: anthony, serb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
     2
 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 2
diff changeset
    23
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    26
#include "gtk2_interface.h"
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    27
#include "gnome_interface.h"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    29
static gboolean gtk_has_been_loaded = FALSE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    30
static gboolean gnome_has_been_loaded = FALSE;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
 * Class:     sun_awt_X11_XDesktopPeer
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
 * Method:    init
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
 * Signature: ()Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XDesktopPeer_init
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
  (JNIEnv *env, jclass cls)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
{
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    40
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    41
    if (gtk_has_been_loaded || gnome_has_been_loaded) {
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    42
        return JNI_TRUE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    43
    }
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    44
23243
43e5bc27297f 8029263: user's default browser can not launch after we click the button, and there is an IOException shown in the log text (java.io.IOException)
azvegint
parents: 21261
diff changeset
    45
    if (gtk2_load(env) && gtk2_show_uri_load(env)) {
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    46
        gtk_has_been_loaded = TRUE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    47
        return JNI_TRUE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    48
    } else if (gnome_load()) {
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    49
        gnome_has_been_loaded = TRUE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    50
        return JNI_TRUE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    51
    }
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    52
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    53
    return JNI_FALSE;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
/*
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
 * Class:     sun_awt_X11_XDesktopPeer
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
 * Method:    gnome_url_show
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
 * Signature: (Ljava/lang/[B;)Z
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
JNIEXPORT jboolean JNICALL Java_sun_awt_X11_XDesktopPeer_gnome_1url_1show
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
  (JNIEnv *env, jobject obj, jbyteArray url_j)
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
{
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    64
    gboolean success = FALSE;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    65
    const gchar* url_c;
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    66
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    67
    url_c = (char*)(*env)->GetByteArrayElements(env, url_j, NULL);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
16471
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    69
    if (gtk_has_been_loaded) {
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    70
        fp_gdk_threads_enter();
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    71
        success = fp_gtk_show_uri(NULL, url_c, GDK_CURRENT_TIME, NULL);
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    72
        fp_gdk_threads_leave();
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    73
    } else if (gnome_has_been_loaded) {
33bca48c948b 7123476: DesktopOpenTests:When enter the file path and click the open button,it crash
denis
parents: 12047
diff changeset
    74
        success = (*gnome_url_show)(url_c, NULL);
6825
795e9fe949d3 6989721: awt native code compiler warnings
art
parents: 5506
diff changeset
    75
    }
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
    (*env)->ReleaseByteArrayElements(env, url_j, (signed char*)url_c, 0);
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
    return success ? JNI_TRUE : JNI_FALSE;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
}