Bug 1374629 - Add mozilla::NotNull to mozilla::Encoding constant declarations. r=froydnj,hsivonen
☠☠ backed out by dc422ed66f91 ☠ ☠
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Tue, 20 Jun 2017 22:04:18 +0900
changeset 365392 19fbc34f239c240ce6c7261c160dd3dcf68742b6
parent 365391 4bc0e8df6e81851ad81613188a38d0f26cc26cfc
child 365393 3411f1c818f69059bfb93b4fcb105f41647846b6
push id32071
push usercbook@mozilla.com
push dateThu, 22 Jun 2017 10:45:43 +0000
treeherdermozilla-central@71733bc984a1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfroydnj, hsivonen
bugs1374629
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1374629 - Add mozilla::NotNull to mozilla::Encoding constant declarations. r=froydnj,hsivonen MozReview-Commit-ID: s1sYrq6tqm
dom/base/FormData.cpp
dom/html/HTMLFormSubmission.cpp
intl/Encoding.h
intl/gtest/TestEncoding.cpp
--- a/dom/base/FormData.cpp
+++ b/dom/base/FormData.cpp
@@ -13,17 +13,17 @@
 #include "mozilla/Encoding.h"
 
 #include "MultipartBlobImpl.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
 
 FormData::FormData(nsISupports* aOwner)
-  : HTMLFormSubmission(WrapNotNull(UTF_8_ENCODING), nullptr)
+  : HTMLFormSubmission(UTF_8_ENCODING, nullptr)
   , mOwner(aOwner)
 {
 }
 
 namespace {
 
 already_AddRefed<File>
 GetOrCreateFileCalledBlob(Blob& aBlob, ErrorResult& aRv)
@@ -397,17 +397,17 @@ FormData::Constructor(const GlobalObject
 
 // -------------------------------------------------------------------------
 // nsIXHRSendable
 
 NS_IMETHODIMP
 FormData::GetSendInfo(nsIInputStream** aBody, uint64_t* aContentLength,
                       nsACString& aContentTypeWithCharset, nsACString& aCharset)
 {
-  FSMultipartFormData fs(WrapNotNull(UTF_8_ENCODING), nullptr);
+  FSMultipartFormData fs(UTF_8_ENCODING, nullptr);
 
   for (uint32_t i = 0; i < mFormData.Length(); ++i) {
     if (mFormData[i].wasNullBlob) {
       MOZ_ASSERT(mFormData[i].value.IsUSVString());
       fs.AddNameBlobOrNullPair(mFormData[i].name, nullptr);
     } else if (mFormData[i].value.IsUSVString()) {
       fs.AddNameValuePair(mFormData[i].name,
                           mFormData[i].value.GetAsUSVString());
--- a/dom/html/HTMLFormSubmission.cpp
+++ b/dom/html/HTMLFormSubmission.cpp
@@ -884,17 +884,17 @@ GetSubmitEncoding(nsGenericHTMLElement* 
     } while (spPos != -1);
   }
   // if there are no accept-charset or all the charset are not supported
   // Get the charset from document
   nsIDocument* doc = aForm->GetComposedDoc();
   if (doc) {
     return Encoding::ForName(doc->GetDocumentCharacterSet());
   }
-  return WrapNotNull(UTF_8_ENCODING);
+  return UTF_8_ENCODING;
 }
 
 void
 GetEnumAttr(nsGenericHTMLElement* aContent,
             nsIAtom* atom, int32_t* aValue)
 {
   const nsAttrValue* value = aContent->GetParsedAttr(atom);
   if (value && value->Type() == nsAttrValue::eEnum) {
--- a/intl/Encoding.h
+++ b/intl/Encoding.h
@@ -22,16 +22,17 @@
 
 namespace mozilla {
 class Encoding;
 class Decoder;
 class Encoder;
 }; // namespace mozilla
 
 #define ENCODING_RS_ENCODING mozilla::Encoding
+#define ENCODING_RS_NOT_NULL_CONST_ENCODING_PTR mozilla::NotNull<const mozilla::Encoding*>
 #define ENCODING_RS_ENCODER mozilla::Encoder
 #define ENCODING_RS_DECODER mozilla::Decoder
 
 #include "encoding_rs.h"
 
 extern "C" {
 
 nsresult
--- a/intl/gtest/TestEncoding.cpp
+++ b/intl/gtest/TestEncoding.cpp
@@ -1,19 +1,25 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 #include "gtest/gtest.h"
 
 #include "mozilla/Encoding.h"
+#include <type_traits>
 
 #define ENCODING_TEST(name) TEST(EncodingTest, name)
 
 using namespace mozilla;
 
+static_assert(std::is_trivially_copyable<NotNull<const Encoding*>>::value,
+              "NotNull<const Encoding*> must be trivially copyable.");
+static_assert(std::is_standard_layout<NotNull<const Encoding*>>::value,
+              "NotNull<const Encoding*> must be a standard layout type.");
+
 // These tests mainly test that the C++ interface seems to
 // reach the Rust code. More thorough testing of the back
 // end is done in Rust.
 
 ENCODING_TEST(ForLabel)
 {
   nsAutoCString label("  uTf-8   ");
   ASSERT_EQ(Encoding::ForLabel(label), UTF_8_ENCODING);