Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(386)

Side by Side Diff: content/child/threaded_data_provider.h

Issue 689713004: Threaded data provider: Support main thread data notifications (Chrome side) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_ 5 #ifndef CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_
6 #define CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_ 6 #define CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_
7 7
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/memory/linked_ptr.h" 9 #include "base/memory/linked_ptr.h"
10 #include "base/memory/ref_counted.h" 10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/shared_memory.h" 12 #include "base/memory/shared_memory.h"
13 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
14 #include "ipc/ipc_channel.h" 14 #include "ipc/ipc_channel.h"
15 #include "ipc/message_filter.h" 15 #include "ipc/message_filter.h"
16 16
17 struct ResourceMsg_RequestCompleteData;
18
17 namespace blink { 19 namespace blink {
18 class WebThreadedDataReceiver; 20 class WebThreadedDataReceiver;
19 } 21 }
20 22
21 namespace IPC { 23 namespace IPC {
22 class SyncChannel; 24 class SyncChannel;
23 } 25 }
24 26
25 namespace content { 27 namespace content {
28 class ResourceDispatcher;
26 class WebThreadImpl; 29 class WebThreadImpl;
27 30
28 class ThreadedDataProvider { 31 class ThreadedDataProvider {
29 public: 32 public:
30 ThreadedDataProvider( 33 ThreadedDataProvider(
31 int request_id, 34 int request_id,
32 blink::WebThreadedDataReceiver* threaded_data_receiver, 35 blink::WebThreadedDataReceiver* threaded_data_receiver,
33 linked_ptr<base::SharedMemory> shm_buffer, 36 linked_ptr<base::SharedMemory> shm_buffer,
34 int shm_size, 37 int shm_size,
35 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_); 38 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_);
36 virtual ~ThreadedDataProvider(); 39 virtual ~ThreadedDataProvider();
37 40
38 void Stop(); 41 void Stop();
39 void OnReceivedDataOnBackgroundThread(int data_offset, 42 void OnReceivedDataOnBackgroundThread(int data_offset,
40 int data_length, 43 int data_length,
41 int encoded_data_length); 44 int encoded_data_length);
42 45
43 void OnReceivedDataOnForegroundThread(const char* data, 46 void OnReceivedDataOnForegroundThread(const char* data,
44 int data_length, 47 int data_length,
45 int encoded_data_length); 48 int encoded_data_length);
46 49
47 void OnResourceMessageFilterAddedMainThread(); 50 void OnResourceMessageFilterAddedMainThread();
51 void OnRequestCompleteForegroundThread(
52 base::WeakPtr<ResourceDispatcher> resource_dispatcher,
53 const ResourceMsg_RequestCompleteData& request_complete_data,
54 const base::TimeTicks& renderer_completion_time);
48 55
49 private: 56 private:
50 void StopOnBackgroundThread(); 57 void StopOnBackgroundThread();
51 void OnResourceMessageFilterAddedBackgroundThread(); 58 void OnResourceMessageFilterAddedBackgroundThread();
52 void ForwardAndACKData(const char* data, int data_length); 59 void OnRequestCompleteBackgroundThread(
60 base::WeakPtr<ResourceDispatcher> resource_dispatcher,
61 const ResourceMsg_RequestCompleteData& request_complete_data,
62 const base::TimeTicks& renderer_completion_time);
63 void ForwardAndACKData(const char* data,
64 int data_length,
65 int encoded_data_length);
66 void DataNotifyForegroundThread(
67 scoped_ptr<std::vector<char> > data_copy,
68 int data_length,
69 int encoded_data_length);
53 70
54 scoped_refptr<IPC::MessageFilter> filter_; 71 scoped_refptr<IPC::MessageFilter> filter_;
55 int request_id_; 72 int request_id_;
56 linked_ptr<base::SharedMemory> shm_buffer_; 73 linked_ptr<base::SharedMemory> shm_buffer_;
57 int shm_size_; 74 int shm_size_;
58 scoped_ptr<base::WeakPtrFactory<ThreadedDataProvider> > 75 scoped_ptr<base::WeakPtrFactory<ThreadedDataProvider> >
59 background_thread_weak_factory_; 76 background_thread_weak_factory_;
60 WebThreadImpl& background_thread_; 77 WebThreadImpl& background_thread_;
61 IPC::SyncChannel* ipc_channel_; 78 IPC::SyncChannel* ipc_channel_;
62 blink::WebThreadedDataReceiver* threaded_data_receiver_; 79 blink::WebThreadedDataReceiver* threaded_data_receiver_;
63 bool resource_filter_active_; 80 bool resource_filter_active_;
64 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_; 81 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner_;
65 82
66 struct QueuedSharedMemoryData { 83 struct QueuedSharedMemoryData {
67 const char* data; 84 const char* data;
68 int length; 85 int length;
86 int encoded_length;
69 }; 87 };
70 std::vector<QueuedSharedMemoryData> queued_data_; 88 std::vector<QueuedSharedMemoryData> queued_data_;
71 89
72 base::WeakPtrFactory<ThreadedDataProvider> 90 base::WeakPtrFactory<ThreadedDataProvider>
73 main_thread_weak_factory_; 91 main_thread_weak_factory_;
74 92
75 DISALLOW_COPY_AND_ASSIGN(ThreadedDataProvider); 93 DISALLOW_COPY_AND_ASSIGN(ThreadedDataProvider);
76 }; 94 };
77 95
78 } // namespace content 96 } // namespace content
79 97
80 #endif // CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_ 98 #endif // CONTENT_CHILD_THREADEDDATAPROVIDER_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698