void JavaBridge::AddPackageNames(JNIEnv* env, jobject obj, jobject packageNames) { if (!packageNames) return; // dalvikvm will raise exception if any of these fail jclass setClass = env->FindClass("java/util/Set"); jmethodID iterator = env->GetMethodID(setClass, "iterator", "()Ljava/util/Iterator;"); jobject iter = env->CallObjectMethod(packageNames, iterator); jclass iteratorClass = env->FindClass("java/util/Iterator"); jmethodID hasNext = env->GetMethodID(iteratorClass, "hasNext", "()Z"); jmethodID next = env->GetMethodID(iteratorClass, "next", "()Ljava/lang/Object;"); HashSet<WTF::String> namesSet; while (env->CallBooleanMethod(iter, hasNext)) { jstring name = static_cast<jstring>(env->CallObjectMethod(iter, next)); namesSet.add(jstringToWtfString(env, name)); env->DeleteLocalRef(name); } packageNotifier().addPackageNames(namesSet); env->DeleteLocalRef(iteratorClass); env->DeleteLocalRef(iter); env->DeleteLocalRef(setClass); }
void Navigator::onPackageResult() { if (m_applicationInstalledCallback) { m_applicationInstalledCallback->handleEvent(packageNotifier().isPackageInstalled(m_applicationNameQuery)); m_applicationInstalledCallback = 0; } }
bool Navigator::isApplicationInstalled(const String& name, PassRefPtr<ApplicationInstalledCallback> callback) { if (m_applicationInstalledCallback) return false; m_applicationInstalledCallback = callback; m_applicationNameQuery = name; packageNotifier().requestPackageResult(); return true; }
Page::Page(const PageClients& pageClients) : m_chrome(adoptPtr(new Chrome(this, pageClients.chromeClient))) , m_dragCaretController(adoptPtr(new SelectionController(0, true))) #if ENABLE(DRAG_SUPPORT) , m_dragController(adoptPtr(new DragController(this, pageClients.dragClient))) #endif , m_focusController(adoptPtr(new FocusController(this))) #if ENABLE(CONTEXT_MENUS) , m_contextMenuController(adoptPtr(new ContextMenuController(this, pageClients.contextMenuClient))) #endif #if ENABLE(INSPECTOR) , m_inspectorController(adoptPtr(new InspectorController(this, pageClients.inspectorClient))) #endif #if ENABLE(CLIENT_BASED_GEOLOCATION) , m_geolocationController(adoptPtr(new GeolocationController(this, pageClients.geolocationClient))) #endif #if ENABLE(DEVICE_ORIENTATION) , m_deviceMotionController(RuntimeEnabledFeatures::deviceMotionEnabled() ? new DeviceMotionController(pageClients.deviceMotionClient) : 0) , m_deviceOrientationController(RuntimeEnabledFeatures::deviceOrientationEnabled() ? new DeviceOrientationController(this, pageClients.deviceOrientationClient) : 0) #endif #if ENABLE(INPUT_SPEECH) , m_speechInputClient(pageClients.speechInputClient) #endif , m_settings(adoptPtr(new Settings(this))) , m_progress(adoptPtr(new ProgressTracker)) , m_backForwardController(adoptPtr(new BackForwardController(this, pageClients.backForwardClient))) , m_theme(RenderTheme::themeForPage(this)) , m_editorClient(pageClients.editorClient) , m_frameCount(0) , m_openedByDOM(false) , m_tabKeyCyclesThroughElements(true) , m_defersLoading(false) , m_inLowQualityInterpolationMode(false) , m_cookieEnabled(true) , m_areMemoryCacheClientCallsEnabled(true) , m_mediaVolume(1) , m_javaScriptURLsAreAllowed(true) , m_didLoadUserStyleSheet(false) , m_userStyleSheetModificationTime(0) , m_group(0) , m_debugger(0) , m_customHTMLTokenizerTimeDelay(-1) , m_customHTMLTokenizerChunkSize(-1) , m_canStartMedia(true) , m_viewMode(ViewModeWindowed) , m_minimumTimerInterval(Settings::defaultMinDOMTimerInterval()) , m_isEditable(false) #if ENABLE(PAGE_VISIBILITY_API) , m_visibilityState(PageVisibilityStateVisible) #endif { if (!allPages) { allPages = new HashSet<Page*>; networkStateNotifier().setNetworkStateChangedFunction(networkStateChanged); #if PLATFORM(ANDROID) && ENABLE(APPLICATION_INSTALLED) packageNotifier().setOnResultAvailable(onPackageResultAvailable); #endif } ASSERT(!allPages->contains(this)); allPages->add(this); if (pageClients.pluginHalterClient) { m_pluginHalter.set(new PluginHalter(pageClients.pluginHalterClient)); m_pluginHalter->setPluginAllowedRunTime(m_settings->pluginAllowedRunTime()); } #ifndef NDEBUG pageCounter.increment(); #endif }
void JavaBridge::RemovePackageName(JNIEnv* env, jobject obj, jstring packageName) { packageNotifier().removePackageName(jstringToWtfString(env, packageName)); }
void JavaBridge::AddPackageName(JNIEnv* env, jobject obj, jstring packageName) { packageNotifier().addPackageName(to_string(env, packageName)); }