Commit 029ee37f authored by tkent@chromium.org's avatar tkent@chromium.org

Oilpan: Prepare to move FormSubmission to Oilpan heap.

This removes two Persistent<>s, and add one Persistent<>.

BUG=

Review URL: https://codereview.chromium.org/333593002

git-svn-id: svn://svn.chromium.org/blink/trunk@175990 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c2822b4a
......@@ -330,7 +330,7 @@ void HTMLFormElement::submitFromJavaScript()
submit(0, false, UserGestureIndicator::processingUserGesture(), SubmittedByJavaScript);
}
void HTMLFormElement::submitDialog(PassRefPtr<FormSubmission> formSubmission)
void HTMLFormElement::submitDialog(PassRefPtrWillBeRawPtr<FormSubmission> formSubmission)
{
for (Node* node = this; node; node = node->parentOrShadowHostNode()) {
if (isHTMLDialogElement(*node)) {
......@@ -369,7 +369,7 @@ void HTMLFormElement::submit(Event* event, bool activateSubmitButton, bool proce
if (needButtonActivation && firstSuccessfulSubmitButton)
firstSuccessfulSubmitButton->setActivatedSubmit(true);
RefPtr<FormSubmission> formSubmission = FormSubmission::create(this, m_attributes, event, formSubmissionTrigger);
RefPtrWillBeRawPtr<FormSubmission> formSubmission = FormSubmission::create(this, m_attributes, event, formSubmissionTrigger);
EventQueueScope scopeForDialogClose; // Delay dispatching 'close' to dialog until done submitting.
if (formSubmission->method() == FormSubmission::DialogMethod)
submitDialog(formSubmission.release());
......@@ -380,7 +380,7 @@ void HTMLFormElement::submit(Event* event, bool activateSubmitButton, bool proce
firstSuccessfulSubmitButton->setActivatedSubmit(false);
}
void HTMLFormElement::scheduleFormSubmission(PassRefPtr<FormSubmission> submission)
void HTMLFormElement::scheduleFormSubmission(PassRefPtrWillBeRawPtr<FormSubmission> submission)
{
ASSERT(submission->method() == FormSubmission::PostMethod || submission->method() == FormSubmission::GetMethod);
ASSERT(submission->data());
......
......@@ -136,10 +136,10 @@ private:
virtual void copyNonAttributePropertiesFromElement(const Element&) OVERRIDE;
void submitDialog(PassRefPtr<FormSubmission>);
void submitDialog(PassRefPtrWillBeRawPtr<FormSubmission>);
void submit(Event*, bool activateSubmitButton, bool processingUserGesture, FormSubmissionTrigger);
void scheduleFormSubmission(PassRefPtr<FormSubmission>);
void scheduleFormSubmission(PassRefPtrWillBeRawPtr<FormSubmission>);
void collectAssociatedElements(Node& root, FormAssociatedElement::List&) const;
void collectImageElements(Node& root, WillBeHeapVector<RawPtrWillBeMember<HTMLImageElement> >&);
......
......@@ -160,7 +160,7 @@ inline FormSubmission::FormSubmission(const String& result)
{
}
PassRefPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const Attributes& attributes, PassRefPtrWillBeRawPtr<Event> event, FormSubmissionTrigger trigger)
PassRefPtrWillBeRawPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const Attributes& attributes, PassRefPtrWillBeRawPtr<Event> event, FormSubmissionTrigger trigger)
{
ASSERT(form);
......@@ -190,8 +190,8 @@ PassRefPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const A
if (copiedAttributes.method() == DialogMethod) {
if (submitButton)
return adoptRef(new FormSubmission(submitButton->resultForDialogSubmit()));
return adoptRef(new FormSubmission(""));
return adoptRefWillBeNoop(new FormSubmission(submitButton->resultForDialogSubmit()));
return adoptRefWillBeNoop(new FormSubmission(""));
}
Document& document = form->document();
......@@ -242,7 +242,13 @@ PassRefPtr<FormSubmission> FormSubmission::create(HTMLFormElement* form, const A
formData->setIdentifier(generateFormDataIdentifier());
formData->setContainsPasswordData(containsPasswordData);
AtomicString targetOrBaseTarget = copiedAttributes.target().isEmpty() ? document.baseTarget() : copiedAttributes.target();
return adoptRef(new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, FormState::create(*form, trigger), formData.release(), boundary, event));
return adoptRefWillBeNoop(new FormSubmission(copiedAttributes.method(), actionURL, targetOrBaseTarget, encodingType, FormState::create(*form, trigger), formData.release(), boundary, event));
}
void FormSubmission::trace(Visitor* visitor)
{
visitor->trace(m_formState);
visitor->trace(m_event);
}
KURL FormSubmission::requestURL() const
......
......@@ -48,7 +48,7 @@ class FormData;
struct FrameLoadRequest;
class HTMLFormElement;
class FormSubmission : public RefCounted<FormSubmission> {
class FormSubmission : public RefCountedWillBeGarbageCollectedFinalized<FormSubmission> {
public:
enum Method { GetMethod, PostMethod, DialogMethod };
......@@ -93,7 +93,8 @@ public:
String m_acceptCharset;
};
static PassRefPtr<FormSubmission> create(HTMLFormElement*, const Attributes&, PassRefPtrWillBeRawPtr<Event>, FormSubmissionTrigger);
static PassRefPtrWillBeRawPtr<FormSubmission> create(HTMLFormElement*, const Attributes&, PassRefPtrWillBeRawPtr<Event>, FormSubmissionTrigger);
void trace(Visitor*);
void populateFrameLoadRequest(FrameLoadRequest&);
......@@ -122,10 +123,10 @@ private:
KURL m_action;
AtomicString m_target;
AtomicString m_contentType;
RefPtrWillBePersistent<FormState> m_formState;
RefPtrWillBeMember<FormState> m_formState;
RefPtr<FormData> m_formData;
String m_boundary;
RefPtrWillBePersistent<Event> m_event;
RefPtrWillBeMember<Event> m_event;
Referrer m_referrer;
String m_origin;
String m_result;
......
......@@ -199,7 +199,7 @@ private:
class ScheduledFormSubmission FINAL : public ScheduledNavigation {
public:
ScheduledFormSubmission(PassRefPtr<FormSubmission> submission, bool lockBackForwardList)
ScheduledFormSubmission(PassRefPtrWillBeRawPtr<FormSubmission> submission, bool lockBackForwardList)
: ScheduledNavigation(0, lockBackForwardList, true)
, m_submission(submission)
{
......@@ -221,7 +221,7 @@ public:
FormSubmission* submission() const { return m_submission.get(); }
private:
RefPtr<FormSubmission> m_submission;
RefPtrWillBePersistent<FormSubmission> m_submission;
};
NavigationScheduler::NavigationScheduler(LocalFrame* frame)
......@@ -321,7 +321,7 @@ void NavigationScheduler::scheduleLocationChange(Document* originDocument, const
schedule(adoptPtr(new ScheduledLocationChange(originDocument, url, referrer, lockBackForwardList)));
}
void NavigationScheduler::scheduleFormSubmission(PassRefPtr<FormSubmission> submission)
void NavigationScheduler::scheduleFormSubmission(PassRefPtrWillBeRawPtr<FormSubmission> submission)
{
ASSERT(m_frame->page());
schedule(adoptPtr(new ScheduledFormSubmission(submission, mustLockBackForwardList(m_frame))));
......
......@@ -78,7 +78,7 @@ public:
void scheduleRedirect(double delay, const String& url);
void scheduleLocationChange(Document*, const String& url, const Referrer& referrer, bool lockBackForwardList = true);
void scheduleFormSubmission(PassRefPtr<FormSubmission>);
void scheduleFormSubmission(PassRefPtrWillBeRawPtr<FormSubmission>);
void scheduleRefresh();
void scheduleHistoryNavigation(int steps);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment