Chromium Code Reviews| Index: content/browser/download/mhtml_extra_parts_impl.cc |
| diff --git a/content/browser/download/mhtml_extra_parts_impl.cc b/content/browser/download/mhtml_extra_parts_impl.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..39543f8ff8de22b98a19b1a967b6689f1a65491b |
| --- /dev/null |
| +++ b/content/browser/download/mhtml_extra_parts_impl.cc |
| @@ -0,0 +1,46 @@ |
| +// Copyright 2017 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/browser/download/mhtml_extra_parts_impl.h" |
| + |
| +namespace { |
| +// Only the address of this variable is used. It is used as a key to UserData. |
| +const int kMHTMLExtraPartsKey = 0; |
| +} |
| + |
| +namespace content { |
| + |
| +MHTMLExtraPartsImpl::MHTMLExtraPartsImpl() {} |
|
David Trainor- moved to gerrit
2017/03/30 05:26:40
= default for both?
Pete Williamson
2017/03/31 00:29:48
I tried that, but I got "Complex constructor has a
Pete Williamson
2017/03/31 21:58:03
Ah, I can use = default in the .cc file, changed t
|
| +MHTMLExtraPartsImpl::~MHTMLExtraPartsImpl() {} |
|
Dmitry Titov
2017/03/29 23:26:29
need a blank line between ctor and dtor
Pete Williamson
2017/03/31 00:29:48
Done.
|
| + |
| +MHTMLExtraParts* MHTMLExtraParts::FromWebContents(WebContents* contents) { |
| + // Get the MHTMLExtraPartsImpl from the web contents. |
| + MHTMLExtraPartsImpl* extra_data_impl = static_cast<MHTMLExtraPartsImpl*>( |
| + contents->GetUserData(&kMHTMLExtraPartsKey)); |
| + |
| + // If we did not have one on the web contents already, make one and put it on |
| + // the web contents. |
| + if (extra_data_impl == nullptr) { |
| + extra_data_impl = new MHTMLExtraPartsImpl(); |
| + contents->SetUserData(&kMHTMLExtraPartsKey, |
| + std::unique_ptr<MHTMLExtraParts>( |
| + static_cast<MHTMLExtraParts*>(extra_data_impl))); |
| + } |
| + return static_cast<MHTMLExtraParts*>(extra_data_impl); |
| +} |
| + |
| +void MHTMLExtraPartsImpl::AddExtraMHTMLPart(const std::string& content_type, |
| + const std::string& content_location, |
| + const std::string& body) { |
| + MHTMLExtraDataPart part; |
| + part.content_type = content_type; |
| + part.content_location = content_location; |
| + part.body = body; |
| + |
| + // Add this part to the list of parts to be saved out when the file is |
| + // written. |
| + parts_.push_back(part); |
| +} |
| + |
| +} // namespace content |