Hi I am able to write the serialized SKData (captured from Serialize method 
of  paint_op_buffer_serializer 
<https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_serializer&ss=chromium%2Fchromium%2Fsrc>
 as 
shown in the first mail) to a file and was also able to use this file for 
playback on canvas.
However, it only played back the text. How do I ensure that images also get 
captured in my SKPicture recording? Do I have to have multiple 
SKPictureRecording at multiple places?
Goal : To record everything being written on a canvas while loading  a page 
so that it can be played back on another browser.

Thanks




On Thursday, May 2, 2024 at 5:34:48 AM UTC+5:30 [email protected] wrote:

> Yes - you can confirm this yourself - but we strongly recommend against 
> disabling the renderer sandbox.
>
>
> On Tue, Apr 30, 2024 at 10:46 PM Steven Whelan <[email protected]> 
> wrote:
>
>> Yes, trying to do this in renderer process. Would it work if I run 
>> Chromium with --nosandbox flag.
>>
>> On Tue, Apr 30, 2024, 21:58 Ken Russell <[email protected]> wrote:
>>
>>> Are you trying to do this within Chrome's renderer or GPU processes? If 
>>> so, the sandbox will prevent you from touching the local disk. You would 
>>> need to extend the sandbox policies to allow writing to a directory on disk 
>>> - some place that will not collide with other programs, so that if a bad 
>>> actor causes data to be written to that directory, no harm will be caused. 
>>> See 
>>> https://source.chromium.org/chromium/chromium/src/+/main:sandbox/policy/mac/
>>>  
>>> for the macOS sandbox policies.
>>>
>>> -Ken
>>>
>>>
>>>
>>> On Tue, Apr 30, 2024 at 8:59 AM Steven Whelan <[email protected]> 
>>> wrote:
>>>
>>>> Hi 
>>>> I have modified the Serialize 
>>>> <https://source.chromium.org/chromium/chromium/src/+/main:cc/paint/paint_op_buffer_serializer.cc;l=5;bpv=1;bpt=1?q=paint_op_buffer_ser&ss=chromium%2Fchromium%2Fsrc>
>>>>  method 
>>>> to Record all PaintOp as SKPicture. 
>>>> I want to replay this SKPicture on a remote browser. So, I am trying to 
>>>> save this SKPicture to a file, but I am not able to do so, since 
>>>> file.isOpen gives false.
>>>> Please help here
>>>>
>>>> void PaintOpBufferSerializer::Serialize(const PaintOpBuffer& buffer,
>>>>                                         const std::vector<size_t>* 
>>>> offsets,
>>>>                                         const Preamble& preamble) {
>>>>   DCHECK_EQ(serialized_op_count_, 0u);
>>>>
>>>>   std::unique_ptr<SkCanvas> canvas = MakeAnalysisCanvas(options_);
>>>>   // These PlaybackParams use the initial (identity) canvas matrix, as 
>>>> they are
>>>>   // only used for serializing the preamble and the initial save / 
>>>> final restore
>>>>   // SerializeBuffer will create its own PlaybackParams based on the
>>>>             
>>>>  * SkPictureRecorder recorder;*
>>>>  * SkCanvas* recordingCanvas = 
>>>> recorder.beginRecording(canvas->getLocalClipBounds());         *
>>>>   // post-preamble canvas.
>>>>   PlaybackParams params = MakeParams(canvas.get());
>>>>   int save_count = canvas->getSaveCount();
>>>>   Save(canvas.get(), params);
>>>>   SerializePreamble(canvas.get(), preamble, params);
>>>>   SerializeBuffer(canvas.get(), buffer, offsets);
>>>>   *SerializeBuffer(recordingCanvas, buffer, offsets);*
>>>>   
>>>>
>>>> *sk_sp<SkPicture> picture = recorder.finishRecordingAsPicture();  
>>>> SkSerialProcs sProcs;  sk_sp<SkData> readableData = 
>>>> picture->serialize(&sProcs);*
>>>>   // Assuming the byte array is stored in the 'data' field of the 
>>>> SkData object
>>>>   const void* data = readableData->data();
>>>>   size_t size = readableData->size();
>>>>
>>>> * <HOW TO SAVE READABLE DATA TO A FILE>*
>>>>   /*sk_sp<SkData> receievedData = SkData::MakeWithoutCopy(data, size);
>>>>   sk_sp<SkPicture> copy =
>>>>       SkPicture::MakeFromData(receievedData->data(), 
>>>> receievedData->size());
>>>>   copy->playback(recordingCanvas);*/
>>>>   RestoreToCount(canvas.get(), save_count, params);
>>>> }
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "blink-dev" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org
>>>>  
>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/97946d8b-27dc-43c4-a262-e4f6288be9d6n%40chromium.org?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/73a49e04-60de-4315-88e9-45315c2887c6n%40chromium.org.

Reply via email to