package com.fnord.services.forbidframing;
import org.apache.tapestry5.MarkupWriter;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.MarkupRenderer;
import org.apache.tapestry5.services.MarkupRendererFilter;
import org.apache.tapestry5.services.MetaDataLocator;
import org.apache.tapestry5.services.RequestGlobals;
import org.apache.tapestry5.services.Response;
import org.apache.tapestry5.services._javascript_.InitializationPriority;
import org.apache.tapestry5.services._javascript_._javascript_Support;
import com.fnord.FnordSymbols;
public class ForbidFramingFilter implements MarkupRendererFilter {
@Inject
private RequestGlobals requestGlobals;
@Inject
private MetaDataLocator metaDataLocator;
@Inject
private Response response;
@Inject
private _javascript_Support jsSupport;
public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer) {
String pageName = requestGlobals.getActivePageName();
boolean forbidFraming = metaDataLocator.findMeta(
FnordSymbols.FORBID_FRAMING, pageName, boolean.class);
if (forbidFraming) {
response.setHeader("X-Frame-Options", "DENY");
jsSupport.addScript(InitializationPriority.IMMEDIATE,
"Fnord.popOutOfFrame();");
}
renderer.renderMarkup(writer);
}
}
|