diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-06-21 18:51:15 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-06-21 18:51:15 +0000 |
commit | 0dcf1f40652edd701d032227a742f6a63e6e3fae (patch) | |
tree | 5bb3c21d9e502e1b32488535769a4ed90384a391 /core/fpdfapi/edit/cpdf_pagecontentmanager.h | |
parent | d52a0afaa3e4374dee469e41db4389bf9c61c4a9 (diff) | |
download | pdfium-0dcf1f40652edd701d032227a742f6a63e6e3fae.tar.xz |
Do not save content stream if all page objects were removed from it.
Bug: pdfium:1051
Change-Id: Ia990a47eeceb47fd2b15fe4ea7226861507484db
Reviewed-on: https://pdfium-review.googlesource.com/35115
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Diffstat (limited to 'core/fpdfapi/edit/cpdf_pagecontentmanager.h')
-rw-r--r-- | core/fpdfapi/edit/cpdf_pagecontentmanager.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/core/fpdfapi/edit/cpdf_pagecontentmanager.h b/core/fpdfapi/edit/cpdf_pagecontentmanager.h index 384405b188..bad8c7a38c 100644 --- a/core/fpdfapi/edit/cpdf_pagecontentmanager.h +++ b/core/fpdfapi/edit/cpdf_pagecontentmanager.h @@ -5,6 +5,7 @@ #ifndef CORE_FPDFAPI_EDIT_CPDF_PAGECONTENTMANAGER_H_ #define CORE_FPDFAPI_EDIT_CPDF_PAGECONTENTMANAGER_H_ +#include <set> #include <sstream> #include "core/fxcrt/unowned_ptr.h" @@ -28,11 +29,21 @@ class CPDF_PageContentManager { // if Contents is not an array, but only a single stream. size_t AddStream(std::ostringstream* buf); + // Schedule the removal of the Content stream at a given index. It will be + // removed when ExecuteScheduledRemovals() is called. + void ScheduleRemoveStreamByIndex(size_t stream_index); + + // Remove all Content streams for which ScheduleRemoveStreamByIndex() was + // called. Update the content stream of all page objects with the shifted + // indexes. + void ExecuteScheduledRemovals(); + private: UnownedPtr<CPDF_PageObjectHolder> const obj_holder_; UnownedPtr<CPDF_Document> const doc_; UnownedPtr<CPDF_Array> contents_array_; UnownedPtr<CPDF_Stream> contents_stream_; + std::set<size_t> streams_to_remove_; }; #endif // CORE_FPDFAPI_EDIT_CPDF_PAGECONTENTMANAGER_H_ |