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

Side by Side Diff: webkit/plugins/ppapi/ppapi_plugin_instance.h

Issue 7826017: Add PPB_Fullscreen;0.5. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/ppapi/plugin_module.cc ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 5 #ifndef WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 6 #define WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 void SelectFindResult(bool forward); 200 void SelectFindResult(bool forward);
201 void StopFind(); 201 void StopFind();
202 202
203 bool SupportsPrintInterface(); 203 bool SupportsPrintInterface();
204 int PrintBegin(const gfx::Rect& printable_area, int printer_dpi); 204 int PrintBegin(const gfx::Rect& printable_area, int printer_dpi);
205 bool PrintPage(int page_number, WebKit::WebCanvas* canvas); 205 bool PrintPage(int page_number, WebKit::WebCanvas* canvas);
206 void PrintEnd(); 206 void PrintEnd();
207 207
208 void Graphics3DContextLost(); 208 void Graphics3DContextLost();
209 209
210 // Implementation of PPB_Fullscreen_Dev. 210 // There are 2 implementations of the fullscreen interface
211 // PPB_FlashFullscreen_Dev is used by Pepper Flash.
212 // PPB_Fullscreen_Dev is intended for other applications including NaCl.
213 // The two interface are mutually exclusive.
214
215 // Implementation of PPB_FlashFullscreen.
211 216
212 // Because going to fullscreen is asynchronous (but going out is not), there 217 // Because going to fullscreen is asynchronous (but going out is not), there
213 // are 3 states: 218 // are 3 states:
214 // - normal (fullscreen_container_ == NULL) 219 // - normal : fullscreen_container_ == NULL
215 // - fullscreen pending (fullscreen_container_ != NULL, fullscreen_ == false) 220 // flash_fullscreen_ == false
216 // - fullscreen (fullscreen_container_ != NULL, fullscreen_ = true) 221 // - fullscreen pending: fullscreen_container_ != NULL
222 // flash_fullscreen_ == false
223 // - fullscreen : fullscreen_container_ != NULL
224 // flash_fullscreen_ == true
217 // 225 //
218 // In normal state, events come from webkit and painting goes back to it. 226 // In normal state, events come from webkit and painting goes back to it.
219 // In fullscreen state, events come from the fullscreen container, and 227 // In fullscreen state, events come from the fullscreen container, and
220 // painting goes back to it 228 // painting goes back to it.
221 // In pending state, events from webkit are ignored, and as soon as we receive 229 // In pending state, events from webkit are ignored, and as soon as we receive
222 // events from the fullscreen container, we go to the fullscreen state. 230 // events from the fullscreen container, we go to the fullscreen state.
231 bool FlashIsFullscreenOrPending();
232
233 // Switches between fullscreen and normal mode. If |delay_report| is set to
234 // false, it may report the new state through DidChangeView immediately. If
235 // true, it will delay it. When called from the plugin, delay_report should be
236 // true to avoid re-entrancy.
237 void FlashSetFullscreen(bool fullscreen, bool delay_report);
238
239 FullscreenContainer* fullscreen_container() const {
240 return fullscreen_container_;
241 }
242
243 // Implementation of PPB_Fullscreen_Dev.
244
245 // Because going to/from fullscreen is asynchronous, there are 4 states:
246 // - normal : desired_fullscreen_state_ == false
247 // fullscreen_ == false
248 // - fullscreen pending: desired_fullscreen_state_ == true
249 // fullscreen_ == false
250 // - fullscreen : desired_fullscreen_state_ == true
251 // fullscreen_ == true
252 // - normal pending : desired_fullscreen_state_ = false
253 // fullscreen_ = true
223 bool IsFullscreenOrPending(); 254 bool IsFullscreenOrPending();
224 255
225 // Switches between fullscreen and normal mode. If |delay_report| is set to 256 // Switches between fullscreen and normal mode. If |delay_report| is set to
226 // false, it may report the new state through DidChangeView immediately. If 257 // false, it may report the new state through DidChangeView immediately. If
227 // true, it will delay it. When called from the plugin, delay_report should be 258 // true, it will delay it. When called from the plugin, delay_report should be
228 // true to avoid re-entrancy. 259 // true to avoid re-entrancy.
229 void SetFullscreen(bool fullscreen, bool delay_report); 260 void SetFullscreen(bool fullscreen, bool delay_report);
230 261
231 // Implementation of PPB_Flash. 262 // Implementation of PPB_Flash.
232 int32_t Navigate(PPB_URLRequestInfo_Impl* request, 263 int32_t Navigate(PPB_URLRequestInfo_Impl* request,
233 const char* target, 264 const char* target,
234 bool from_user_action); 265 bool from_user_action);
235 266
236 // Implementation of PPP_Messaging. 267 // Implementation of PPP_Messaging.
237 void HandleMessage(PP_Var message); 268 void HandleMessage(PP_Var message);
238 269
239 PluginDelegate::PlatformContext3D* CreateContext3D(); 270 PluginDelegate::PlatformContext3D* CreateContext3D();
240 271
241 // Returns true iff the plugin is a full-page plugin (i.e. not in an iframe or 272 // Returns true iff the plugin is a full-page plugin (i.e. not in an iframe or
242 // embedded in a page). 273 // embedded in a page).
243 bool IsFullPagePlugin() const; 274 bool IsFullPagePlugin() const;
244 275
245 FullscreenContainer* fullscreen_container() const {
246 return fullscreen_container_;
247 }
248
249 void OnLockMouseACK(int32_t result); 276 void OnLockMouseACK(int32_t result);
250 void OnMouseLockLost(); 277 void OnMouseLockLost();
251 278
252 // FunctionGroupBase overrides. 279 // FunctionGroupBase overrides.
253 virtual ::ppapi::thunk::PPB_Instance_FunctionAPI* AsPPB_Instance_FunctionAPI() 280 virtual ::ppapi::thunk::PPB_Instance_FunctionAPI* AsPPB_Instance_FunctionAPI()
254 OVERRIDE; 281 OVERRIDE;
255 282
256 // PPB_Instance_API implementation. 283 // PPB_Instance_FunctionAPI implementation.
257 virtual PP_Bool BindGraphics(PP_Instance instance, 284 virtual PP_Bool BindGraphics(PP_Instance instance,
258 PP_Resource device) OVERRIDE; 285 PP_Resource device) OVERRIDE;
259 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE; 286 virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE;
260 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE; 287 virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE;
261 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE; 288 virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE;
262 virtual PP_Var ExecuteScript(PP_Instance instance, 289 virtual PP_Var ExecuteScript(PP_Instance instance,
263 PP_Var script, 290 PP_Var script,
264 PP_Var* exception) OVERRIDE; 291 PP_Var* exception) OVERRIDE;
265 virtual void Log(PP_Instance instance, 292 virtual void Log(PP_Instance instance,
266 int log_level, 293 int log_level,
267 PP_Var value) OVERRIDE; 294 PP_Var value) OVERRIDE;
268 virtual void LogWithSource(PP_Instance instance, 295 virtual void LogWithSource(PP_Instance instance,
269 int log_level, 296 int log_level,
270 PP_Var source, 297 PP_Var source,
271 PP_Var value) OVERRIDE; 298 PP_Var value) OVERRIDE;
272 virtual void NumberOfFindResultsChanged(PP_Instance instance, 299 virtual void NumberOfFindResultsChanged(PP_Instance instance,
273 int32_t total, 300 int32_t total,
274 PP_Bool final_result) OVERRIDE; 301 PP_Bool final_result) OVERRIDE;
275 virtual void SelectedFindResultChanged(PP_Instance instance, 302 virtual void SelectedFindResultChanged(PP_Instance instance,
276 int32_t index) OVERRIDE; 303 int32_t index) OVERRIDE;
277 virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE; 304 virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE;
278 virtual PP_Bool FlashSetFullscreen(PP_Instance instance, 305 virtual PP_Bool FlashSetFullscreen(PP_Instance instance,
279 PP_Bool fullscreen) OVERRIDE; 306 PP_Bool fullscreen) OVERRIDE;
280 virtual PP_Bool FlashGetScreenSize(PP_Instance instance, 307 virtual PP_Bool FlashGetScreenSize(PP_Instance instance,
281 PP_Size* size) OVERRIDE; 308 PP_Size* size) OVERRIDE;
309 virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
310 virtual PP_Bool SetFullscreen(PP_Instance instance,
311 PP_Bool fullscreen) OVERRIDE;
312 virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size)
313 OVERRIDE;
282 virtual int32_t RequestInputEvents(PP_Instance instance, 314 virtual int32_t RequestInputEvents(PP_Instance instance,
283 uint32_t event_classes) OVERRIDE; 315 uint32_t event_classes) OVERRIDE;
284 virtual int32_t RequestFilteringInputEvents(PP_Instance instance, 316 virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
285 uint32_t event_classes) OVERRIDE; 317 uint32_t event_classes) OVERRIDE;
286 virtual void ClearInputEventRequest(PP_Instance instance, 318 virtual void ClearInputEventRequest(PP_Instance instance,
287 uint32_t event_classes) OVERRIDE; 319 uint32_t event_classes) OVERRIDE;
288 virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE; 320 virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE;
289 virtual void ZoomLimitsChanged(PP_Instance instance, 321 virtual void ZoomLimitsChanged(PP_Instance instance,
290 double minimum_factor, 322 double minimum_factor,
291 double maximium_factor) OVERRIDE; 323 double maximium_factor) OVERRIDE;
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
455 // The plugin 3D interface. 487 // The plugin 3D interface.
456 const PPP_Graphics3D* plugin_graphics_3d_interface_; 488 const PPP_Graphics3D* plugin_graphics_3d_interface_;
457 489
458 // Contains the cursor if it's set by the plugin. 490 // Contains the cursor if it's set by the plugin.
459 scoped_ptr<WebKit::WebCursorInfo> cursor_; 491 scoped_ptr<WebKit::WebCursorInfo> cursor_;
460 492
461 // Set to true if this plugin thinks it will always be on top. This allows us 493 // Set to true if this plugin thinks it will always be on top. This allows us
462 // to use a more optimized painting path in some cases. 494 // to use a more optimized painting path in some cases.
463 bool always_on_top_; 495 bool always_on_top_;
464 496
497 // Implementation of PPB_FlashFullscreen.
498
465 // Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note: 499 // Plugin container for fullscreen mode. NULL if not in fullscreen mode. Note:
466 // there is a transition state where fullscreen_container_ is non-NULL but 500 // there is a transition state where fullscreen_container_ is non-NULL but
467 // fullscreen_ is false (see above). 501 // flash_fullscreen_ is false (see above).
468 FullscreenContainer* fullscreen_container_; 502 FullscreenContainer* fullscreen_container_;
469 503
470 // True if we are in fullscreen mode. Note: it is false during the transition. 504 // True if we are in fullscreen mode. False if we are in normal mode or
505 // in transition to fullscreen.
506 bool flash_fullscreen_;
507
508 // Implementation of PPB_Fullscreen_Dev.
509
510 // Since entering fullscreen mode is an asynchronous operation, we set this
511 // variable to the desired state at the time we issue the fullscreen change
512 // request. The plugin will receive a DidChangeView event when it goes
513 // fullscreen.
514 bool desired_fullscreen_state_;
515
516 // True if we are in fullscreen mode. False if we are in normal mode.
517 // It reflects the previous state when in transition.
471 bool fullscreen_; 518 bool fullscreen_;
472 519
473 // The MessageChannel used to implement bidirectional postMessage for the 520 // The MessageChannel used to implement bidirectional postMessage for the
474 // instance. 521 // instance.
475 scoped_ptr<MessageChannel> message_channel_; 522 scoped_ptr<MessageChannel> message_channel_;
476 523
477 // Bitmap for crashed plugin. Lazily initialized, non-owning pointer. 524 // Bitmap for crashed plugin. Lazily initialized, non-owning pointer.
478 SkBitmap* sad_plugin_; 525 SkBitmap* sad_plugin_;
479 526
480 typedef std::set<PluginObject*> PluginObjectSet; 527 typedef std::set<PluginObject*> PluginObjectSet;
481 PluginObjectSet live_plugin_objects_; 528 PluginObjectSet live_plugin_objects_;
482 529
483 // Classes of events that the plugin has registered for, both for filtering 530 // Classes of events that the plugin has registered for, both for filtering
484 // and not. The bits are PP_INPUTEVENT_CLASS_*. 531 // and not. The bits are PP_INPUTEVENT_CLASS_*.
485 uint32_t input_event_mask_; 532 uint32_t input_event_mask_;
486 uint32_t filtered_input_event_mask_; 533 uint32_t filtered_input_event_mask_;
487 534
488 PP_CompletionCallback lock_mouse_callback_; 535 PP_CompletionCallback lock_mouse_callback_;
489 536
490 DISALLOW_COPY_AND_ASSIGN(PluginInstance); 537 DISALLOW_COPY_AND_ASSIGN(PluginInstance);
491 }; 538 };
492 539
493 } // namespace ppapi 540 } // namespace ppapi
494 } // namespace webkit 541 } // namespace webkit
495 542
496 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_ 543 #endif // WEBKIT_PLUGINS_PPAPI_PPAPI_PLUGIN_INSTANCE_H_
OLDNEW
« no previous file with comments | « webkit/plugins/ppapi/plugin_module.cc ('k') | webkit/plugins/ppapi/ppapi_plugin_instance.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698