void JSLocation::setSearch(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); url.setQuery(value.toString(exec)); navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
void JSLocation::setSearch(ExecState* exec, JSValue* value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); url.setQuery(value->toString(exec)); navigateIfAllowed(exec, frame, url, false); }
void JSLocation::setProtocol(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); if (!url.setProtocol(value.toString(exec))) { setDOMException(exec, SYNTAX_ERR); return; } navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
void JSLocation::setHref(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame(); if (!activeFrame) return; if (!activeFrame->loader()->shouldAllowNavigation(frame)) return; KURL url = activeFrame->loader()->completeURL(value.toString(exec)); navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
void JSLocation::setHref(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = completeURL(exec, value.toString(exec)); if (url.isNull()) return; if (!shouldAllowNavigation(exec, frame)) return; navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
void JSLocation::setPort(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); // FIXME: Could make this a little less ugly if String provided a toUnsignedShort function. const UString& portString = value.toString(exec); int port = charactersToInt(portString.data(), portString.size()); if (port < 0 || port > 0xFFFF) port = 0; url.setPort(port); navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
JSValue JSLocation::replace(ExecState* exec, const ArgList& args) { Frame* frame = impl()->frame(); if (!frame) return jsUndefined(); Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame(); if (!activeFrame) return jsUndefined(); if (!activeFrame->loader()->shouldAllowNavigation(frame)) return jsUndefined(); navigateIfAllowed(exec, frame, activeFrame->loader()->completeURL(args.at(0).toString(exec)), true, true); return jsUndefined(); }
void V8DOMWindowShell::setLocation(DOMWindow* window, const String& relativeURL) { Frame* frame = window->frame(); if (!frame) return; KURL url = completeURL(relativeURL); if (url.isNull()) return; if (!shouldAllowNavigation(frame)) return; navigateIfAllowed(frame, url, false, false); }
void V8Location::searchAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) { INC_STATS("DOM.Location.search._set"); v8::Handle<v8::Object> holder = info.Holder(); Location* imp = V8Location::toNative(holder); String query = toWebCoreString(value); Frame* frame = imp->frame(); if (!frame) return; KURL url = frame->loader()->url(); url.setQuery(query); navigateIfAllowed(frame, url, false, false); }
void JSLocation::setHash(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); String oldRef = url.ref(); String str = value.toString(exec); if (str.startsWith("#")) str = str.substring(1); if (oldRef == str || (oldRef.isNull() && str.isEmpty())) return; url.setRef(str); navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
void JSLocation::setHash(ExecState* exec, JSValue value) { Frame* frame = impl()->frame(); ASSERT(frame); KURL url = frame->loader()->url(); String oldFragmentIdentifier = url.fragmentIdentifier(); String str = value.toString(exec); if (str.startsWith("#")) str = str.substring(1); if (equalIgnoringNullity(oldFragmentIdentifier, str)) return; url.setFragmentIdentifier(str); navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); }
JSValue JSLocation::replace(ExecState* exec, const ArgList& args) { Frame* frame = impl()->frame(); if (!frame) return jsUndefined(); KURL url = completeURL(exec, args.at(0).toString(exec)); if (url.isNull()) return jsUndefined(); if (!shouldAllowNavigation(exec, frame)) return jsUndefined(); navigateIfAllowed(exec, frame, url, true, true); return jsUndefined(); }
JSValue JSLocation::assign(ExecState* exec, const ArgList& args) { Frame* frame = impl()->frame(); if (!frame) return jsUndefined(); Frame* activeFrame = asJSDOMWindow(exec->dynamicGlobalObject())->impl()->frame(); if (!activeFrame) return jsUndefined(); if (!activeFrame->loader()->shouldAllowNavigation(frame)) return jsUndefined(); // We want a new history item if this JS was called via a user gesture navigateIfAllowed(exec, frame, activeFrame->loader()->completeURL(args.at(0).toString(exec)), !frame->script()->anyPageIsProcessingUserGesture(), false); return jsUndefined(); }
JSValue JSLocation::assign(ExecState* exec, const ArgList& args) { Frame* frame = impl()->frame(); if (!frame) return jsUndefined(); KURL url = completeURL(exec, args.at(0).toString(exec)); if (url.isNull()) return jsUndefined(); if (!shouldAllowNavigation(exec, frame)) return jsUndefined(); // We want a new history item if this JS was called via a user gesture navigateIfAllowed(exec, frame, url, !frame->script()->anyPageIsProcessingUserGesture(), false); return jsUndefined(); }
void V8Location::hrefAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) { INC_STATS("DOM.Location.href._set"); v8::Handle<v8::Object> holder = info.Holder(); Location* imp = V8Location::toNative(holder); Frame* frame = imp->frame(); if (!frame) return; KURL url = completeURL(toWebCoreString(value)); if (url.isNull()) return; if (!shouldAllowNavigation(frame)) return; navigateIfAllowed(frame, url, false, false); }
void V8Location::hostAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) { INC_STATS("DOM.Location.host._set"); v8::Handle<v8::Object> holder = info.Holder(); Location* imp = V8Location::toNative(holder); String host = toWebCoreString(value); Frame* frame = imp->frame(); if (!frame) return; KURL url = frame->loader()->url(); String newHost = host.left(host.find(":")); String newPort = host.substring(host.find(":") + 1); url.setHost(newHost); url.setPort(newPort.toUInt()); navigateIfAllowed(frame, url, false, false); }
v8::Handle<v8::Value> V8Location::assignCallback(const v8::Arguments& args) { INC_STATS("DOM.Location.assign"); v8::Handle<v8::Object> holder = args.Holder(); Location* imp = V8Location::toNative(holder); Frame* frame = imp->frame(); if (!frame) return v8::Undefined(); KURL url = completeURL(toWebCoreString(args[0])); if (url.isNull()) return v8::Undefined(); if (!shouldAllowNavigation(frame)) return v8::Undefined(); navigateIfAllowed(frame, url, false, false); return v8::Undefined(); }
void V8Location::hashAccessorSetter(v8::Local<v8::String> name, v8::Local<v8::Value> value, const v8::AccessorInfo& info) { INC_STATS("DOM.Location.hash._set"); v8::Handle<v8::Object> holder = info.Holder(); Location* imp = V8Location::toNative(holder); String hash = toWebCoreString(value); Frame* frame = imp->frame(); if (!frame) return; KURL url = frame->loader()->url(); String oldRef = url.fragmentIdentifier(); if (hash.startsWith("#")) hash = hash.substring(1); if (oldRef == hash || (oldRef.isNull() && hash.isEmpty())) return; url.setFragmentIdentifier(hash); navigateIfAllowed(frame, url, false, false); }