Skip to content

Commit

Permalink
Bug 1432519 - Make nsIURL attributes readonly r=mayhemer
Browse files Browse the repository at this point in the history
MozReview-Commit-ID: KuPILT7rX6N
  • Loading branch information
valenting committed Jan 31, 2018
1 parent 88360d2 commit 9a23e21
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 41 deletions.
25 changes: 9 additions & 16 deletions modules/libjar/nsJARURI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ nsJARURI::Mutator::SetFileName(const nsACString& aFileName, nsIURIMutator** aMut
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return mURI->SetFileName(aFileName);
return mURI->SetFileNameInternal(aFileName);
}

NS_IMETHODIMP
Expand All @@ -282,7 +282,7 @@ nsJARURI::Mutator::SetFileBaseName(const nsACString& aFileBaseName, nsIURIMutato
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return mURI->SetFileBaseName(aFileBaseName);
return mURI->SetFileBaseNameInternal(aFileBaseName);
}

NS_IMETHODIMP
Expand All @@ -295,7 +295,7 @@ nsJARURI::Mutator::SetFileExtension(const nsACString& aFileExtension, nsIURIMuta
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return mURI->SetFileExtension(aFileExtension);
return mURI->SetFileExtensionInternal(aFileExtension);
}

NS_IMETHODIMP
Expand Down Expand Up @@ -706,21 +706,14 @@ nsJARURI::GetDirectory(nsACString& directory)
return mJAREntry->GetDirectory(directory);
}

NS_IMETHODIMP
nsJARURI::SetDirectory(const nsACString& directory)
{
MOZ_ASSERT_UNREACHABLE("SetDirectory");
return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP
nsJARURI::GetFileName(nsACString& fileName)
{
return mJAREntry->GetFileName(fileName);
}

NS_IMETHODIMP
nsJARURI::SetFileName(const nsACString& fileName)
nsresult
nsJARURI::SetFileNameInternal(const nsACString& fileName)
{
return NS_MutateURI(mJAREntry)
.Apply<nsIURLMutator>(&nsIURLMutator::SetFileName,
Expand All @@ -735,8 +728,8 @@ nsJARURI::GetFileBaseName(nsACString& fileBaseName)
return mJAREntry->GetFileBaseName(fileBaseName);
}

NS_IMETHODIMP
nsJARURI::SetFileBaseName(const nsACString& fileBaseName)
nsresult
nsJARURI::SetFileBaseNameInternal(const nsACString& fileBaseName)
{
return NS_MutateURI(mJAREntry)
.Apply<nsIURLMutator>(&nsIURLMutator::SetFileBaseName,
Expand All @@ -751,8 +744,8 @@ nsJARURI::GetFileExtension(nsACString& fileExtension)
return mJAREntry->GetFileExtension(fileExtension);
}

NS_IMETHODIMP
nsJARURI::SetFileExtension(const nsACString& fileExtension)
nsresult
nsJARURI::SetFileExtensionInternal(const nsACString& fileExtension)
{
return NS_MutateURI(mJAREntry)
.Apply<nsIURLMutator>(&nsIURLMutator::SetFileExtension,
Expand Down
4 changes: 4 additions & 0 deletions modules/libjar/nsJARURI.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@ class nsJARURI final : public nsIJARURI,
eReplaceRef
};

nsresult SetFileNameInternal(const nsACString& fileName);
nsresult SetFileBaseNameInternal(const nsACString& fileBaseName);
nsresult SetFileExtensionInternal(const nsACString& fileExtension);

// Helper to share code between Equals methods.
virtual nsresult EqualsInternal(nsIURI* other,
RefHandlingEnum refHandlingMode,
Expand Down
9 changes: 4 additions & 5 deletions netwerk/base/nsIURL.idl
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ interface nsIURL : nsIURI
*
* Some characters may be escaped.
*/
attribute AUTF8String directory;
readonly attribute AUTF8String directory;

/**
* Returns the file name portion of a URL. If the URL denotes a path to a
Expand All @@ -59,8 +59,7 @@ interface nsIURL : nsIURI
*
* Some characters may be escaped.
*/
attribute AUTF8String fileName;

readonly attribute AUTF8String fileName;

/*************************************************************************
* The URL filename is broken down even further:
Expand All @@ -71,15 +70,15 @@ interface nsIURL : nsIURI
*
* Some characters may be escaped.
*/
attribute AUTF8String fileBaseName;
readonly attribute AUTF8String fileBaseName;

/**
* Returns the file extension portion of a filename in a url. If a file
* extension does not exist, the empty string is returned.
*
* Some characters may be escaped.
*/
attribute AUTF8String fileExtension;
readonly attribute AUTF8String fileExtension;

/**
* This method takes a uri and compares the two. The common uri portion
Expand Down
25 changes: 9 additions & 16 deletions netwerk/base/nsStandardURL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3070,22 +3070,15 @@ nsStandardURL::SetRef(const nsACString &input)
return NS_OK;
}

NS_IMETHODIMP
nsStandardURL::SetDirectory(const nsACString &input)
{
MOZ_ASSERT_UNREACHABLE("SetDirectory");
return NS_ERROR_NOT_IMPLEMENTED;
}

NS_IMETHODIMP
nsStandardURL::SetFileName(const nsACString &input)
nsresult
nsStandardURL::SetFileNameInternal(const nsACString &input)
{
ENSURE_MUTABLE();

const nsPromiseFlatCString &flat = PromiseFlatCString(input);
const char *filename = flat.get();

LOG(("nsStandardURL::SetFileName [filename=%s]\n", filename));
LOG(("nsStandardURL::SetFileNameInternal [filename=%s]\n", filename));

if (mPath.mLen < 0)
return SetPathQueryRef(flat);
Expand Down Expand Up @@ -3176,8 +3169,8 @@ nsStandardURL::SetFileName(const nsACString &input)
return NS_OK;
}

NS_IMETHODIMP
nsStandardURL::SetFileBaseName(const nsACString &input)
nsresult
nsStandardURL::SetFileBaseNameInternal(const nsACString &input)
{
nsAutoCString extension;
nsresult rv = GetFileExtension(extension);
Expand All @@ -3190,11 +3183,11 @@ nsStandardURL::SetFileBaseName(const nsACString &input)
newFileName.Append(extension);
}

return SetFileName(newFileName);
return SetFileNameInternal(newFileName);
}

NS_IMETHODIMP
nsStandardURL::SetFileExtension(const nsACString &input)
nsresult
nsStandardURL::SetFileExtensionInternal(const nsACString &input)
{
nsAutoCString newFileName;
nsresult rv = GetFileBaseName(newFileName);
Expand All @@ -3205,7 +3198,7 @@ nsStandardURL::SetFileExtension(const nsACString &input)
newFileName.Append(input);
}

return SetFileName(newFileName);
return SetFileNameInternal(newFileName);
}

//----------------------------------------------------------------------------
Expand Down
12 changes: 8 additions & 4 deletions netwerk/base/nsStandardURL.h
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,10 @@ class nsStandardURL : public nsIFileURL
const char *charset, nsIURI *baseURI);
nsresult SetDefaultPort(int32_t aNewDefaultPort);

nsresult SetFileNameInternal(const nsACString &input);
nsresult SetFileBaseNameInternal(const nsACString &input);
nsresult SetFileExtensionInternal(const nsACString &input);

int32_t Port() { return mPort == -1 ? mDefaultPort : mPort; }

void ReplacePortInSpec(int32_t aNewPort);
Expand Down Expand Up @@ -406,7 +410,7 @@ class nsStandardURL : public nsIFileURL
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return BaseURIMutator<T>::mURI->SetFileName(aFileName);
return BaseURIMutator<T>::mURI->SetFileNameInternal(aFileName);
}

MOZ_MUST_USE NS_IMETHOD
Expand All @@ -419,7 +423,7 @@ class nsStandardURL : public nsIFileURL
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return BaseURIMutator<T>::mURI->SetFileBaseName(aFileBaseName);
return BaseURIMutator<T>::mURI->SetFileBaseNameInternal(aFileBaseName);
}

MOZ_MUST_USE NS_IMETHOD
Expand All @@ -432,7 +436,7 @@ class nsStandardURL : public nsIFileURL
nsCOMPtr<nsIURIMutator> mutator = this;
mutator.forget(aMutator);
}
return BaseURIMutator<T>::mURI->SetFileExtension(aFileExtension);
return BaseURIMutator<T>::mURI->SetFileExtensionInternal(aFileExtension);
}

MOZ_MUST_USE NS_IMETHOD
Expand All @@ -450,7 +454,7 @@ class nsStandardURL : public nsIFileURL
if (NS_FAILED(rv)) {
return rv;
}
BaseURIMutator<T>::mURI = uri;
BaseURIMutator<T>::mURI.swap(uri);
return NS_OK;
}

Expand Down

0 comments on commit 9a23e21

Please sign in to comment.