// Copyright (c) 2011 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.sdk.internal.wip;
import org.chromium.sdk.JsEvaluateContext;
import org.chromium.sdk.RelayOk;
import org.chromium.sdk.SyncCallback;
import org.chromium.sdk.internal.wip.protocol.input.WipCommandResponse;
import org.chromium.sdk.internal.wip.protocol.output.runtime.ReleaseObjectGroupParams;
import org.chromium.sdk.util.GenericCallback;
import org.chromium.sdk.wip.PermanentRemoteValueMapping;
class PermanentRemoteValueMappingImpl extends WipValueLoader
implements PermanentRemoteValueMapping {
private final String id;
PermanentRemoteValueMappingImpl(WipTabImpl tabImpl, String id) {
super(tabImpl);
this.id = id;
}
@Override
public String getId() {
return id;
}
@Override
public RelayOk delete(final GenericCallback<Void> callback, SyncCallback syncCallback) {
ReleaseObjectGroupParams params = new ReleaseObjectGroupParams(id);
WipCommandCallback callbackWrapper;
if (callback == null) {
callbackWrapper = null;
} else {
callbackWrapper = new WipCommandCallback() {
@Override
public void messageReceived(WipCommandResponse response) {
callback.success(null);
}
@Override
public void failure(String message) {
callback.failure(new Exception(message));
}
};
}
return getTabImpl().getCommandProcessor().send(params, callbackWrapper, syncCallback);
}
@Override
String getObjectGroupId() {
return id;
}
@Override
public JsEvaluateContext getEvaluateContext() {
return new WipContextBuilder.GlobalEvaluateContext(this);
}
}