< prev index next >

modules/javafx.web/src/main/native/Source/WebCore/platform/java/DragClientJava.cpp

Print this page




 116     //TODO: check input element and produce correct respond
 117     notImplemented();
 118     return DragDestinationActionAny;
 119 }
 120 
 121 //We work in window rather than view coordinates here
 122 DragSourceAction DragClientJava::dragSourceActionMaskForPoint(const IntPoint&)
 123 {
 124     //TODO: check input element and produce correct respond
 125     notImplemented();
 126     return DragSourceActionAny;
 127 }
 128 
 129 void DragClientJava::startDrag(
 130     DragImage dragImage,
 131     const IntPoint& dragImageOrigin,
 132     const IntPoint& eventPos,
 133     const FloatPoint&,
 134     DataTransfer& DataTransfer,
 135     Frame&,
 136     DragSourceAction)
 137 {
 138     JNIEnv* env = WebCore_GetJavaEnv();
 139     static jmethodID mid = env->GetMethodID(
 140         PG_GetWebPageClass(env),
 141         "fwkStartDrag", "("
 142         "Ljava/lang/Object;"
 143         "II"
 144         "II"
 145         "[Ljava/lang/String;"
 146         "[Ljava/lang/Object;"

 147         ")V");
 148     ASSERT(mid);
 149 
 150     static JGClass clsString(env->FindClass("java/lang/String"));
 151     static JGClass clsObject(env->FindClass("java/lang/Object"));
 152 
 153     Vector<String> mimeTypes(DataTransfer.typesPrivate());
 154     JLObjectArray jmimeTypes(env->NewObjectArray(mimeTypes.size(), clsString, NULL));
 155     JLObjectArray jvalues(env->NewObjectArray(mimeTypes.size(), clsObject, NULL));
 156     CheckAndClearException(env); // OOME
 157 
 158     {
 159         //we are temporary changing DataTransfer security context
 160         //for transfer-to-Java purposes.
 161 
 162         DataTransferAccessPolicy actualJSPolicy = DataTransfer.policy();
 163         DataTransfer.setAccessPolicy(DataTransferAccessPolicy::Readable); //XXX DataTransferReadable);
 164 
 165         int index = 0;
 166         Vector<String>::const_iterator end = mimeTypes.end();


 172 
 173             env->SetObjectArrayElement(
 174                 jmimeTypes,
 175                 index,
 176                 (jstring)i->toJavaString(env));
 177 
 178             env->SetObjectArrayElement(
 179                 jvalues,
 180                 index,
 181                 (jstring)value.toJavaString(env));
 182         }
 183 
 184         DataTransfer.setAccessPolicy(actualJSPolicy);
 185     }
 186 
 187     // Attention! [jimage] can be the instance of WCImage or WCImageFrame class.
 188     // The nature of raster is too different to make a conversion inside the native code.
 189     jobject jimage = dragImage.get() && dragImage.get()->javaImage()
 190                   ? jobject(*(dragImage.get()->javaImage())) : nullptr;
 191 


 192     env->CallVoidMethod(m_webPage, mid, jimage,
 193         eventPos.x() - dragImageOrigin.x(),
 194         eventPos.y() - dragImageOrigin.y(),
 195         eventPos.x(),
 196         eventPos.y(),
 197         jobjectArray(jmimeTypes),
 198         jobjectArray(jvalues) );

 199     CheckAndClearException(env);
 200 }
 201 
 202 } // namespace WebCore


 116     //TODO: check input element and produce correct respond
 117     notImplemented();
 118     return DragDestinationActionAny;
 119 }
 120 
 121 //We work in window rather than view coordinates here
 122 DragSourceAction DragClientJava::dragSourceActionMaskForPoint(const IntPoint&)
 123 {
 124     //TODO: check input element and produce correct respond
 125     notImplemented();
 126     return DragSourceActionAny;
 127 }
 128 
 129 void DragClientJava::startDrag(
 130     DragImage dragImage,
 131     const IntPoint& dragImageOrigin,
 132     const IntPoint& eventPos,
 133     const FloatPoint&,
 134     DataTransfer& DataTransfer,
 135     Frame&,
 136     DragSourceAction dragSourceAction)
 137 {
 138     JNIEnv* env = WebCore_GetJavaEnv();
 139     static jmethodID mid = env->GetMethodID(
 140         PG_GetWebPageClass(env),
 141         "fwkStartDrag", "("
 142         "Ljava/lang/Object;"
 143         "II"
 144         "II"
 145         "[Ljava/lang/String;"
 146         "[Ljava/lang/Object;"
 147         "Z"
 148         ")V");
 149     ASSERT(mid);
 150 
 151     static JGClass clsString(env->FindClass("java/lang/String"));
 152     static JGClass clsObject(env->FindClass("java/lang/Object"));
 153 
 154     Vector<String> mimeTypes(DataTransfer.typesPrivate());
 155     JLObjectArray jmimeTypes(env->NewObjectArray(mimeTypes.size(), clsString, NULL));
 156     JLObjectArray jvalues(env->NewObjectArray(mimeTypes.size(), clsObject, NULL));
 157     CheckAndClearException(env); // OOME
 158 
 159     {
 160         //we are temporary changing DataTransfer security context
 161         //for transfer-to-Java purposes.
 162 
 163         DataTransferAccessPolicy actualJSPolicy = DataTransfer.policy();
 164         DataTransfer.setAccessPolicy(DataTransferAccessPolicy::Readable); //XXX DataTransferReadable);
 165 
 166         int index = 0;
 167         Vector<String>::const_iterator end = mimeTypes.end();


 173 
 174             env->SetObjectArrayElement(
 175                 jmimeTypes,
 176                 index,
 177                 (jstring)i->toJavaString(env));
 178 
 179             env->SetObjectArrayElement(
 180                 jvalues,
 181                 index,
 182                 (jstring)value.toJavaString(env));
 183         }
 184 
 185         DataTransfer.setAccessPolicy(actualJSPolicy);
 186     }
 187 
 188     // Attention! [jimage] can be the instance of WCImage or WCImageFrame class.
 189     // The nature of raster is too different to make a conversion inside the native code.
 190     jobject jimage = dragImage.get() && dragImage.get()->javaImage()
 191                   ? jobject(*(dragImage.get()->javaImage())) : nullptr;
 192 
 193     bool isImageSource = dragSourceAction & DragSourceActionImage;
 194 
 195     env->CallVoidMethod(m_webPage, mid, jimage,
 196         eventPos.x() - dragImageOrigin.x(),
 197         eventPos.y() - dragImageOrigin.y(),
 198         eventPos.x(),
 199         eventPos.y(),
 200         jobjectArray(jmimeTypes),
 201         jobjectArray(jvalues),
 202         bool_to_jbool(isImageSource));
 203     CheckAndClearException(env);
 204 }
 205 
 206 } // namespace WebCore
< prev index next >