本文整理汇总了C++中LocalFrame::document方法的典型用法代码示例。如果您正苦于以下问题:C++ LocalFrame::document方法的具体用法?C++ LocalFrame::document怎么用?C++ LocalFrame::document使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LocalFrame
的用法示例。
在下文中一共展示了LocalFrame::document方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: createWriterFor
DocumentWriter* DocumentLoader::createWriterFor(const DocumentInit& init, const AtomicString& mimeType, const AtomicString& encoding, bool dispatchWindowObjectAvailable, ParserSynchronizationPolicy parsingPolicy, const KURL& overridingURL)
{
LocalFrame* frame = init.frame();
ASSERT(!frame->document() || !frame->document()->isActive());
ASSERT(frame->tree().childCount() == 0);
if (!init.shouldReuseDefaultView())
frame->setDOMWindow(LocalDOMWindow::create(*frame));
Document* document = frame->localDOMWindow()->installNewDocument(mimeType, init);
// This should be set before receivedFirstData().
if (!overridingURL.isEmpty())
frame->document()->setBaseURLOverride(overridingURL);
frame->loader().didInstallNewDocument(dispatchWindowObjectAvailable);
// This must be called before DocumentWriter is created, otherwise HTML parser
// will use stale values from HTMLParserOption.
if (!dispatchWindowObjectAvailable)
frame->loader().receivedFirstData();
frame->loader().didBeginDocument();
return DocumentWriter::create(document, parsingPolicy, mimeType, encoding);
}
示例2: navigate
void InspectorPageAgent::navigate(ErrorString*, const String& url)
{
UserGestureIndicator indicator(DefinitelyProcessingNewUserGesture);
LocalFrame* frame = m_page->mainFrame();
FrameLoadRequest request(frame->document(), ResourceRequest(frame->document()->completeURL(url)));
frame->loader().load(request);
}
示例3: createWindowForRequest
void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerFrame, NavigationPolicy policy, ShouldSendReferrer shouldSendReferrer)
{
if (openerFrame.document()->pageDismissalEventBeingDispatched() != Document::NoDismissal)
return;
if (openerFrame.document() && openerFrame.document()->isSandboxed(SandboxPopups))
return;
if (!DOMWindow::allowPopUp(openerFrame))
return;
if (policy == NavigationPolicyCurrentTab)
policy = NavigationPolicyNewForegroundTab;
WindowFeatures features;
bool created;
LocalFrame* newFrame = createWindow(openerFrame, openerFrame, request, features, policy, shouldSendReferrer, created);
if (!newFrame)
return;
if (shouldSendReferrer == MaybeSendReferrer) {
newFrame->loader().setOpener(&openerFrame);
newFrame->document()->setReferrerPolicy(openerFrame.document()->referrerPolicy());
}
FrameLoadRequest newRequest(0, request.resourceRequest());
newRequest.setFormState(request.formState());
newFrame->loader().load(newRequest);
}
示例4: updateDocumentProperty
void WindowProxy::updateDocumentProperty()
{
if (!m_world->isMainWorld())
return;
if (m_frame->isRemoteFrame()) {
return;
}
ScriptState::Scope scope(m_scriptState.get());
v8::Local<v8::Context> context = m_scriptState->context();
LocalFrame* frame = toLocalFrame(m_frame);
v8::Local<v8::Value> documentWrapper = toV8(frame->document(), context->Global(), context->GetIsolate());
if (documentWrapper.IsEmpty())
return;
ASSERT(documentWrapper == m_document.newLocal(m_isolate) || m_document.isEmpty());
if (m_document.isEmpty())
updateDocumentWrapper(v8::Local<v8::Object>::Cast(documentWrapper));
checkDocumentWrapper(m_document.newLocal(m_isolate), frame->document());
ASSERT(documentWrapper->IsObject());
// TODO(jochen): Don't replace the accessor with a data value. We need a way to tell v8 that the accessor's return value won't change after this point.
if (!v8CallBoolean(context->Global()->ForceSet(context, v8AtomicString(m_isolate, "document"), documentWrapper, static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete))))
return;
// We also stash a reference to the document on the inner global object so that
// LocalDOMWindow objects we obtain from JavaScript references are guaranteed to have
// live Document objects.
V8HiddenValue::setHiddenValue(m_scriptState.get(), v8::Local<v8::Object>::Cast(context->Global()->GetPrototype()), V8HiddenValue::document(m_isolate), documentWrapper);
}
示例5: updateDocumentProperty
void WindowProxy::updateDocumentProperty()
{
if (!m_world->isMainWorld())
return;
if (m_frame->isRemoteFrame()) {
return;
}
ScriptState::Scope scope(m_scriptState.get());
v8::Local<v8::Context> context = m_scriptState->context();
LocalFrame* frame = toLocalFrame(m_frame);
v8::Local<v8::Value> documentWrapper = toV8(frame->document(), context->Global(), context->GetIsolate());
if (documentWrapper.IsEmpty())
return;
ASSERT(documentWrapper == m_document.newLocal(m_isolate) || m_document.isEmpty());
if (m_document.isEmpty())
updateDocumentWrapper(v8::Local<v8::Object>::Cast(documentWrapper));
checkDocumentWrapper(m_document.newLocal(m_isolate), frame->document());
ASSERT(documentWrapper->IsObject());
// TODO(bashi): Avoid using ForceSet(). When we use accessors to implement
// attributes, we may be able to remove updateDocumentProperty().
if (!v8CallBoolean(context->Global()->ForceSet(context, v8AtomicString(m_isolate, "document"), documentWrapper, static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete))))
return;
// We also stash a reference to the document on the inner global object so that
// LocalDOMWindow objects we obtain from JavaScript references are guaranteed to have
// live Document objects.
V8HiddenValue::setHiddenValue(m_isolate, toInnerGlobalObject(context), V8HiddenValue::document(m_isolate), documentWrapper);
}
示例6: willSendRequest
void BeaconLoader::willSendRequest(WebURLLoader*, WebURLRequest& passedNewRequest, const WebURLResponse& passedRedirectResponse)
{
passedNewRequest.setAllowStoredCredentials(true);
ResourceRequest& newRequest(passedNewRequest.toMutableResourceRequest());
const ResourceResponse& redirectResponse(passedRedirectResponse.toResourceResponse());
ASSERT(!newRequest.isNull());
ASSERT(!redirectResponse.isNull());
String errorDescription;
StoredCredentials withCredentials = AllowStoredCredentials;
ResourceLoaderOptions options;
if (!CrossOriginAccessControl::handleRedirect(m_beaconOrigin.get(), newRequest, redirectResponse, withCredentials, options, errorDescription)) {
if (page() && page()->mainFrame()) {
if (page()->mainFrame()->isLocalFrame()) {
LocalFrame* localFrame = toLocalFrame(page()->mainFrame());
if (localFrame->document())
localFrame->document()->addConsoleMessage(ConsoleMessage::create(JSMessageSource, ErrorMessageLevel, errorDescription));
}
}
// Cancel the load and self destruct.
dispose();
return;
}
// FIXME: http://crbug.com/427429 is needed to correctly propagate
// updates of Origin: following this successful redirect.
}
示例7: ASSERT
MediaValuesCached::MediaValuesCachedData::MediaValuesCachedData(
Document& document)
: MediaValuesCached::MediaValuesCachedData() {
ASSERT(isMainThread());
LocalFrame* frame = MediaValues::frameFrom(document);
// TODO(hiroshige): Clean up |frame->view()| conditions.
ASSERT(!frame || frame->view());
if (frame && frame->view()) {
ASSERT(frame->document() && !frame->document()->layoutViewItem().isNull());
// In case that frame is missing (e.g. for images that their document does
// not have a frame)
// We simply leave the MediaValues object with the default
// MediaValuesCachedData values.
viewportWidth = MediaValues::calculateViewportWidth(frame);
viewportHeight = MediaValues::calculateViewportHeight(frame);
deviceWidth = MediaValues::calculateDeviceWidth(frame);
deviceHeight = MediaValues::calculateDeviceHeight(frame);
devicePixelRatio = MediaValues::calculateDevicePixelRatio(frame);
colorBitsPerComponent = MediaValues::calculateColorBitsPerComponent(frame);
monochromeBitsPerComponent =
MediaValues::calculateMonochromeBitsPerComponent(frame);
primaryPointerType = MediaValues::calculatePrimaryPointerType(frame);
availablePointerTypes = MediaValues::calculateAvailablePointerTypes(frame);
primaryHoverType = MediaValues::calculatePrimaryHoverType(frame);
availableHoverTypes = MediaValues::calculateAvailableHoverTypes(frame);
defaultFontSize = MediaValues::calculateDefaultFontSize(frame);
threeDEnabled = MediaValues::calculateThreeDEnabled(frame);
strictMode = MediaValues::calculateStrictMode(frame);
displayMode = MediaValues::calculateDisplayMode(frame);
mediaType = MediaValues::calculateMediaType(frame);
displayShape = MediaValues::calculateDisplayShape(frame);
}
}
示例8: findStorageArea
StorageArea* InspectorDOMStorageAgent::findStorageArea(ErrorString* errorString, const RefPtr<JSONObject>& storageId, LocalFrame*& targetFrame)
{
String securityOrigin;
bool isLocalStorage = false;
bool success = storageId->getString("securityOrigin", &securityOrigin);
if (success)
success = storageId->getBoolean("isLocalStorage", &isLocalStorage);
if (!success) {
if (errorString)
*errorString = "Invalid storageId format";
return nullptr;
}
if (!m_page->mainFrame()->isLocalFrame())
return nullptr;
LocalFrame* frame = InspectedFrames(m_page->deprecatedLocalMainFrame()).frameWithSecurityOrigin(securityOrigin);
if (!frame) {
if (errorString)
*errorString = "LocalFrame not found for the given security origin";
return nullptr;
}
targetFrame = frame;
if (isLocalStorage)
return StorageNamespace::localStorageArea(frame->document()->securityOrigin());
return StorageNamespaceController::from(m_page)->sessionStorage()->storageArea(frame->document()->securityOrigin());
}
示例9: currentFrameHasSingleSecurityOrigin
bool SVGImage::currentFrameHasSingleSecurityOrigin() const
{
if (!m_page)
return true;
LocalFrame* frame = toLocalFrame(m_page->mainFrame());
RELEASE_ASSERT(frame->document()->loadEventFinished());
SVGSVGElement* rootElement = frame->document()->accessSVGExtensions().rootElement();
if (!rootElement)
return true;
// Don't allow foreignObject elements or images that are not known to be
// single-origin since these can leak cross-origin information.
for (Node* node = rootElement; node; node = ComposedTreeTraversal::next(*node)) {
if (isSVGForeignObjectElement(*node))
return false;
if (isSVGImageElement(*node)) {
if (!toSVGImageElement(*node).currentFrameHasSingleSecurityOrigin())
return false;
} else if (isSVGFEImageElement(*node)) {
if (!toSVGFEImageElement(*node).currentFrameHasSingleSecurityOrigin())
return false;
}
}
// Because SVG image rendering disallows external resources and links, these
// images effectively are restricted to a single security origin.
return true;
}
示例10: setupEncoding
inline void TextResourceDecoderBuilder::setupEncoding(TextResourceDecoder* decoder, Document* document)
{
LocalFrame* frame = document->frame();
LocalFrame* parentFrame = frame ? frame->tree().parent() : 0;
if (!m_encoding.isEmpty())
decoder->setEncoding(m_encoding.string(), m_encodingWasChosenByUser ? TextResourceDecoder::UserChosenEncoding : TextResourceDecoder::EncodingFromHTTPHeader);
// Set the hint encoding to the parent frame encoding only if
// the parent and the current frames share the security origin.
// We impose this condition because somebody can make a child frameg63
// containing a carefully crafted html/javascript in one encoding
// that can be mistaken for hintEncoding (or related encoding) by
// an auto detector. When interpreted in the latter, it could be
// an attack vector.
// FIXME: This might be too cautious for non-7bit-encodings and
// we may consider relaxing this later after testing.
if (frame && canReferToParentFrameEncoding(frame, parentFrame)) {
if (parentFrame->document()->encodingWasDetectedHeuristically())
decoder->setHintEncoding(parentFrame->document()->encoding());
if (m_encoding.isEmpty())
decoder->setEncoding(parentFrame->document()->inputEncoding().string(), TextResourceDecoder::EncodingFromParentFrame);
}
}
示例11: shouldBlockWebSocket
// static
bool MixedContentChecker::shouldBlockWebSocket(LocalFrame* frame, const KURL& url, MixedContentChecker::ReportingStatus reportingStatus)
{
LocalFrame* mixedFrame = inWhichFrameIsContentMixed(frame, WebURLRequest::FrameTypeNone, url);
if (!mixedFrame)
return false;
UseCounter::count(mixedFrame, UseCounter::MixedContentPresent);
UseCounter::count(mixedFrame, UseCounter::MixedContentWebSocket);
Settings* settings = mixedFrame->settings();
FrameLoaderClient* client = mixedFrame->loader().client();
SecurityOrigin* securityOrigin = mixedFrame->document()->securityOrigin();
bool allowed = false;
// If we're in strict mode, we'll automagically fail everything, and intentionally skip
// the client checks in order to prevent degrading the site's security UI.
bool strictMode = mixedFrame->document()->shouldEnforceStrictMixedContentChecking() || settings->strictMixedContentChecking();
if (!strictMode) {
bool allowedPerSettings = settings && settings->allowRunningOfInsecureContent();
allowed = client->allowRunningInsecureContent(allowedPerSettings, securityOrigin, url);
}
if (allowed)
client->didRunInsecureContent(securityOrigin, url);
if (reportingStatus == SendReport)
logToConsoleAboutWebSocket(frame, url, allowed);
return !allowed;
}
示例12: localStorageArea
PassOwnPtrWillBeRawPtr<StorageArea> InspectorDOMStorageAgent::findStorageArea(ErrorString* errorString, const RefPtr<JSONObject>& storageId, LocalFrame*& targetFrame)
{
String securityOrigin;
bool isLocalStorage = false;
bool success = storageId->getString("securityOrigin", &securityOrigin);
if (success)
success = storageId->getBoolean("isLocalStorage", &isLocalStorage);
if (!success) {
if (errorString)
*errorString = "Invalid storageId format";
return nullptr;
}
LocalFrame* frame = m_pageAgent->findFrameWithSecurityOrigin(securityOrigin);
if (!frame) {
if (errorString)
*errorString = "LocalFrame not found for the given security origin";
return nullptr;
}
targetFrame = frame;
if (isLocalStorage)
return StorageNamespace::localStorageArea(frame->document()->securityOrigin());
return m_pageAgent->page()->sessionStorage()->storageArea(frame->document()->securityOrigin());
}
示例13: updateDocumentProperty
void WindowProxy::updateDocumentProperty()
{
if (!m_world->isMainWorld())
return;
if (m_frame->isRemoteFrame()) {
return;
}
ScriptState::Scope scope(m_scriptState.get());
v8::Local<v8::Context> context = m_scriptState->context();
LocalFrame* frame = toLocalFrame(m_frame);
v8::Local<v8::Value> documentWrapper = toV8(frame->document(), context->Global(), context->GetIsolate());
if (documentWrapper.IsEmpty())
return;
ASSERT(documentWrapper == m_document.newLocal(m_isolate) || m_document.isEmpty());
if (m_document.isEmpty())
updateDocumentWrapper(v8::Local<v8::Object>::Cast(documentWrapper));
checkDocumentWrapper(m_document.newLocal(m_isolate), frame->document());
ASSERT(documentWrapper->IsObject());
// TODO(jochen): Don't replace the accessor with a data value. We need a way to tell v8 that the accessor's return value won't change after this point.
if (!v8CallBoolean(context->Global()->ForceSet(context, v8AtomicString(m_isolate, "document"), documentWrapper, static_cast<v8::PropertyAttribute>(v8::ReadOnly | v8::DontDelete))))
return;
}
示例14: setTimerAlignmentInterval
void Page::setTimerAlignmentInterval(double interval)
{
if (interval == m_timerAlignmentInterval)
return;
m_timerAlignmentInterval = interval;
LocalFrame* frame = mainFrame();
if (frame->document())
frame->document()->didChangeTimerAlignmentInterval();
}
示例15: hasAnimations
bool SVGImage::hasAnimations() const
{
if (!m_page)
return false;
LocalFrame* frame = m_page->mainFrame();
SVGSVGElement* rootElement = toSVGDocument(frame->document())->rootElement();
if (!rootElement)
return false;
return rootElement->timeContainer()->hasAnimations() || frame->document()->timeline().hasPendingUpdates();
}