1 /*
   2  * Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #undef IMPL
  27 
  28 #include "config.h"
  29 
  30 #include "DOMException.h"
  31 #include <WebCore/HTMLCollection.h>
  32 #include <WebCore/HTMLElement.h>
  33 #include <WebCore/HTMLNames.h>
  34 #include <WebCore/HTMLTableCaptionElement.h>
  35 #include <WebCore/HTMLTableElement.h>
  36 #include <WebCore/HTMLTableSectionElement.h>
  37 #include <WebCore/JSMainThreadExecState.h>
  38 
  39 #include <wtf/RefPtr.h>
  40 #include <wtf/GetPtr.h>
  41 
  42 #include "JavaDOMUtils.h"
  43 #include <wtf/java/JavaEnv.h>
  44 
  45 using namespace WebCore;
  46 
  47 extern "C" {
  48 
  49 #define IMPL (static_cast<HTMLTableElement*>(jlong_to_ptr(peer)))
  50 
  51 
  52 // Attributes
  53 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getCaptionImpl(JNIEnv* env, jclass, jlong peer)
  54 {
  55     WebCore::JSMainThreadNullState state;
  56     return JavaReturn<HTMLTableCaptionElement>(env, WTF::getPtr(IMPL->caption()));
  57 }
  58 
  59 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setCaptionImpl(JNIEnv*, jclass, jlong peer, jlong value)
  60 {
  61     WebCore::JSMainThreadNullState state;
  62     IMPL->setCaption(static_cast<HTMLTableCaptionElement*>(jlong_to_ptr(value)));
  63 }
  64 
  65 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getTHeadImpl(JNIEnv* env, jclass, jlong peer)
  66 {
  67     WebCore::JSMainThreadNullState state;
  68     return JavaReturn<HTMLTableSectionElement>(env, WTF::getPtr(IMPL->tHead()));
  69 }
  70 
  71 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setTHeadImpl(JNIEnv*, jclass, jlong peer, jlong value)
  72 {
  73     WebCore::JSMainThreadNullState state;
  74     IMPL->setTHead(static_cast<HTMLTableSectionElement*>(jlong_to_ptr(value)));
  75 }
  76 
  77 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getTFootImpl(JNIEnv* env, jclass, jlong peer)
  78 {
  79     WebCore::JSMainThreadNullState state;
  80     return JavaReturn<HTMLTableSectionElement>(env, WTF::getPtr(IMPL->tFoot()));
  81 }
  82 
  83 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setTFootImpl(JNIEnv*, jclass, jlong peer, jlong value)
  84 {
  85     WebCore::JSMainThreadNullState state;
  86     IMPL->setTFoot(static_cast<HTMLTableSectionElement*>(jlong_to_ptr(value)));
  87 }
  88 
  89 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getRowsImpl(JNIEnv* env, jclass, jlong peer)
  90 {
  91     WebCore::JSMainThreadNullState state;
  92     return JavaReturn<HTMLCollection>(env, WTF::getPtr(IMPL->rows()));
  93 }
  94 
  95 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getTBodiesImpl(JNIEnv* env, jclass, jlong peer)
  96 {
  97     WebCore::JSMainThreadNullState state;
  98     return JavaReturn<HTMLCollection>(env, WTF::getPtr(IMPL->tBodies()));
  99 }
 100 
 101 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getAlignImpl(JNIEnv* env, jclass, jlong peer)
 102 {
 103     WebCore::JSMainThreadNullState state;
 104     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::alignAttr));
 105 }
 106 
 107 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setAlignImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 108 {
 109     WebCore::JSMainThreadNullState state;
 110     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::alignAttr, String(env, value));
 111 }
 112 
 113 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getBgColorImpl(JNIEnv* env, jclass, jlong peer)
 114 {
 115     WebCore::JSMainThreadNullState state;
 116     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::bgcolorAttr));
 117 }
 118 
 119 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setBgColorImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 120 {
 121     WebCore::JSMainThreadNullState state;
 122     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::bgcolorAttr, String(env, value));
 123 }
 124 
 125 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getBorderImpl(JNIEnv* env, jclass, jlong peer)
 126 {
 127     WebCore::JSMainThreadNullState state;
 128     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::borderAttr));
 129 }
 130 
 131 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setBorderImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 132 {
 133     WebCore::JSMainThreadNullState state;
 134     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::borderAttr, String(env, value));
 135 }
 136 
 137 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getCellPaddingImpl(JNIEnv* env, jclass, jlong peer)
 138 {
 139     WebCore::JSMainThreadNullState state;
 140     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::cellpaddingAttr));
 141 }
 142 
 143 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setCellPaddingImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 144 {
 145     WebCore::JSMainThreadNullState state;
 146     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::cellpaddingAttr, String(env, value));
 147 }
 148 
 149 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getCellSpacingImpl(JNIEnv* env, jclass, jlong peer)
 150 {
 151     WebCore::JSMainThreadNullState state;
 152     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::cellspacingAttr));
 153 }
 154 
 155 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setCellSpacingImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 156 {
 157     WebCore::JSMainThreadNullState state;
 158     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::cellspacingAttr, String(env, value));
 159 }
 160 
 161 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getFrameImpl(JNIEnv* env, jclass, jlong peer)
 162 {
 163     WebCore::JSMainThreadNullState state;
 164     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::frameAttr));
 165 }
 166 
 167 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setFrameImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 168 {
 169     WebCore::JSMainThreadNullState state;
 170     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::frameAttr, String(env, value));
 171 }
 172 
 173 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getRulesImpl(JNIEnv* env, jclass, jlong peer)
 174 {
 175     WebCore::JSMainThreadNullState state;
 176     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::rulesAttr));
 177 }
 178 
 179 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setRulesImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 180 {
 181     WebCore::JSMainThreadNullState state;
 182     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::rulesAttr, String(env, value));
 183 }
 184 
 185 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getSummaryImpl(JNIEnv* env, jclass, jlong peer)
 186 {
 187     WebCore::JSMainThreadNullState state;
 188     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::summaryAttr));
 189 }
 190 
 191 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setSummaryImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 192 {
 193     WebCore::JSMainThreadNullState state;
 194     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::summaryAttr, String(env, value));
 195 }
 196 
 197 JNIEXPORT jstring JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_getWidthImpl(JNIEnv* env, jclass, jlong peer)
 198 {
 199     WebCore::JSMainThreadNullState state;
 200     return JavaReturn<String>(env, IMPL->getAttribute(WebCore::HTMLNames::widthAttr));
 201 }
 202 
 203 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_setWidthImpl(JNIEnv* env, jclass, jlong peer, jstring value)
 204 {
 205     WebCore::JSMainThreadNullState state;
 206     IMPL->setAttributeWithoutSynchronization(WebCore::HTMLNames::widthAttr, String(env, value));
 207 }
 208 
 209 
 210 // Functions
 211 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_createTHeadImpl(JNIEnv* env, jclass, jlong peer)
 212 {
 213     WebCore::JSMainThreadNullState state;
 214     return JavaReturn<HTMLElement>(env, WTF::getPtr(IMPL->createTHead()));
 215 }
 216 
 217 
 218 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_deleteTHeadImpl(JNIEnv*, jclass, jlong peer)
 219 {
 220     WebCore::JSMainThreadNullState state;
 221     IMPL->deleteTHead();
 222 }
 223 
 224 
 225 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_createTFootImpl(JNIEnv* env, jclass, jlong peer)
 226 {
 227     WebCore::JSMainThreadNullState state;
 228     return JavaReturn<HTMLElement>(env, WTF::getPtr(IMPL->createTFoot()));
 229 }
 230 
 231 
 232 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_deleteTFootImpl(JNIEnv*, jclass, jlong peer)
 233 {
 234     WebCore::JSMainThreadNullState state;
 235     IMPL->deleteTFoot();
 236 }
 237 
 238 
 239 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_createTBodyImpl(JNIEnv* env, jclass, jlong peer)
 240 {
 241     WebCore::JSMainThreadNullState state;
 242     return JavaReturn<HTMLElement>(env, WTF::getPtr(IMPL->createTBody()));
 243 }
 244 
 245 
 246 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_createCaptionImpl(JNIEnv* env, jclass, jlong peer)
 247 {
 248     WebCore::JSMainThreadNullState state;
 249     return JavaReturn<HTMLElement>(env, WTF::getPtr(IMPL->createCaption()));
 250 }
 251 
 252 
 253 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_deleteCaptionImpl(JNIEnv*, jclass, jlong peer)
 254 {
 255     WebCore::JSMainThreadNullState state;
 256     IMPL->deleteCaption();
 257 }
 258 
 259 
 260 JNIEXPORT jlong JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_insertRowImpl(JNIEnv* env, jclass, jlong peer
 261     , jint index)
 262 {
 263     WebCore::JSMainThreadNullState state;
 264     return JavaReturn<HTMLElement>(env, WTF::getPtr(raiseOnDOMError(env, IMPL->insertRow(index))));
 265 }
 266 
 267 
 268 JNIEXPORT void JNICALL Java_com_sun_webkit_dom_HTMLTableElementImpl_deleteRowImpl(JNIEnv* env, jclass, jlong peer
 269     , jint index)
 270 {
 271     WebCore::JSMainThreadNullState state;
 272     raiseOnDOMError(env, IMPL->deleteRow(index));
 273 }
 274 
 275 
 276 }