// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser;
import org.chromium.base.CalledByNative;
import org.chromium.base.JNINamespace;
import org.chromium.base.ThreadUtils;
/**
* Manages settings state for a ContentView. A ContentSettings instance is obtained
* from ContentViewCore.getContentSettings().
*/
@JNINamespace("content")
public class ContentSettings {
private static final String TAG = "ContentSettings";
// The native side of this object. Ownership is retained native-side by the WebContents
// instance that backs the associated ContentViewCore.
private long mNativeContentSettings = 0;
private ContentViewCore mContentViewCore;
/**
* Package constructor to prevent clients from creating a new settings
* instance. Must be called on the UI thread.
*/
ContentSettings(ContentViewCore contentViewCore, long nativeContentView) {
ThreadUtils.assertOnUiThread();
mContentViewCore = contentViewCore;
mNativeContentSettings = nativeInit(nativeContentView);
assert mNativeContentSettings != 0;
}
/**
* Notification from the native side that it is being destroyed.
* @param nativeContentSettings the native instance that is going away.
*/
@CalledByNative
private void onNativeContentSettingsDestroyed(int nativeContentSettings) {
assert mNativeContentSettings == nativeContentSettings;
mNativeContentSettings = 0;
}
/**
* Return true if JavaScript is enabled. Must be called on the UI thread.
*
* @return True if JavaScript is enabled.
*/
public boolean getJavaScriptEnabled() {
ThreadUtils.assertOnUiThread();
return mNativeContentSettings != 0 ?
nativeGetJavaScriptEnabled(mNativeContentSettings) : false;
}
// Initialize the ContentSettings native side.
private native long nativeInit(long contentViewPtr);
private native boolean nativeGetJavaScriptEnabled(long nativeContentSettings);
}