OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
71 if (state_ != State::kEnteringFullscreen) | 71 if (state_ != State::kEnteringFullscreen) |
72 return; | 72 return; |
73 | 73 |
74 UpdatePageScaleConstraints(false); | 74 UpdatePageScaleConstraints(false); |
75 web_view_base_->SetPageScaleFactor(1.0f); | 75 web_view_base_->SetPageScaleFactor(1.0f); |
76 if (web_view_base_->MainFrame()->IsWebLocalFrame()) | 76 if (web_view_base_->MainFrame()->IsWebLocalFrame()) |
77 web_view_base_->MainFrame()->SetScrollOffset(WebSize()); | 77 web_view_base_->MainFrame()->SetScrollOffset(WebSize()); |
78 web_view_base_->SetVisualViewportOffset(FloatPoint()); | 78 web_view_base_->SetVisualViewportOffset(FloatPoint()); |
79 | 79 |
80 state_ = State::kFullscreen; | 80 state_ = State::kFullscreen; |
81 web_view_base_->LayerTreeView()->SetIsFullscreen(true); | |
81 | 82 |
82 // Notify all local frames that we have entered fullscreen. | 83 // Notify all local frames that we have entered fullscreen. |
83 for (Frame* frame = web_view_base_->GetPage()->MainFrame(); frame; | 84 for (Frame* frame = web_view_base_->GetPage()->MainFrame(); frame; |
84 frame = frame->Tree().TraverseNext()) { | 85 frame = frame->Tree().TraverseNext()) { |
85 if (!frame->IsLocalFrame()) | 86 if (!frame->IsLocalFrame()) |
86 continue; | 87 continue; |
87 if (Document* document = ToLocalFrame(frame)->GetDocument()) { | 88 if (Document* document = ToLocalFrame(frame)->GetDocument()) { |
88 if (Fullscreen* fullscreen = Fullscreen::FromIfExists(*document)) | 89 if (Fullscreen* fullscreen = Fullscreen::FromIfExists(*document)) |
89 fullscreen->DidEnterFullscreen(); | 90 fullscreen->DidEnterFullscreen(); |
90 } | 91 } |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
259 | 260 |
260 web_view_base_->SetPageScaleFactor(initial_page_scale_factor_); | 261 web_view_base_->SetPageScaleFactor(initial_page_scale_factor_); |
261 if (web_view_base_->MainFrame()->IsWebLocalFrame()) | 262 if (web_view_base_->MainFrame()->IsWebLocalFrame()) |
262 web_view_base_->MainFrame()->SetScrollOffset( | 263 web_view_base_->MainFrame()->SetScrollOffset( |
263 WebSize(initial_scroll_offset_)); | 264 WebSize(initial_scroll_offset_)); |
264 web_view_base_->SetVisualViewportOffset(initial_visual_viewport_offset_); | 265 web_view_base_->SetVisualViewportOffset(initial_visual_viewport_offset_); |
265 // Background color override was already restored when | 266 // Background color override was already restored when |
266 // fullscreenElementChanged([..], nullptr) was called while exiting. | 267 // fullscreenElementChanged([..], nullptr) was called while exiting. |
267 | 268 |
268 state_ = State::kInitial; | 269 state_ = State::kInitial; |
270 web_view_base_->LayerTreeView()->SetIsFullscreen(false); | |
Khushal
2017/05/24 02:12:24
Why not do this in DidExitFullScreen?
steimel
2017/05/24 19:32:58
To me it seemed to make more sense that is_fullscr
Khushal
2017/05/25 03:33:40
The kNeedsScrollAndStateRestore is needed for chan
steimel
2017/06/06 03:07:53
Done.
| |
269 } | 271 } |
270 | 272 |
271 void FullscreenController::UpdatePageScaleConstraints(bool remove_constraints) { | 273 void FullscreenController::UpdatePageScaleConstraints(bool remove_constraints) { |
272 PageScaleConstraints fullscreen_constraints; | 274 PageScaleConstraints fullscreen_constraints; |
273 if (!remove_constraints) { | 275 if (!remove_constraints) { |
274 fullscreen_constraints = PageScaleConstraints(1.0, 1.0, 1.0); | 276 fullscreen_constraints = PageScaleConstraints(1.0, 1.0, 1.0); |
275 fullscreen_constraints.layout_size = FloatSize(web_view_base_->Size()); | 277 fullscreen_constraints.layout_size = FloatSize(web_view_base_->Size()); |
276 } | 278 } |
277 web_view_base_->GetPageScaleConstraintsSet().SetFullscreenConstraints( | 279 web_view_base_->GetPageScaleConstraintsSet().SetFullscreenConstraints( |
278 fullscreen_constraints); | 280 fullscreen_constraints); |
279 web_view_base_->GetPageScaleConstraintsSet().ComputeFinalConstraints(); | 281 web_view_base_->GetPageScaleConstraintsSet().ComputeFinalConstraints(); |
280 | 282 |
281 // Although we called |computedFinalConstraints()| above, the "final" | 283 // Although we called |computedFinalConstraints()| above, the "final" |
282 // constraints are not actually final. They are still subject to scale factor | 284 // constraints are not actually final. They are still subject to scale factor |
283 // clamping by contents size. Normally they should be dirtied due to contents | 285 // clamping by contents size. Normally they should be dirtied due to contents |
284 // size mutation after layout, however the contents size is not guaranteed to | 286 // size mutation after layout, however the contents size is not guaranteed to |
285 // mutate, and the scale factor may remain unclamped. Just fire the event | 287 // mutate, and the scale factor may remain unclamped. Just fire the event |
286 // again to ensure the final constraints pick up the latest contents size. | 288 // again to ensure the final constraints pick up the latest contents size. |
287 web_view_base_->DidChangeContentsSize(); | 289 web_view_base_->DidChangeContentsSize(); |
288 if (web_view_base_->MainFrameImpl() && | 290 if (web_view_base_->MainFrameImpl() && |
289 web_view_base_->MainFrameImpl()->GetFrameView()) | 291 web_view_base_->MainFrameImpl()->GetFrameView()) |
290 web_view_base_->MainFrameImpl()->GetFrameView()->SetNeedsLayout(); | 292 web_view_base_->MainFrameImpl()->GetFrameView()->SetNeedsLayout(); |
291 | 293 |
292 web_view_base_->UpdateMainFrameLayoutSize(); | 294 web_view_base_->UpdateMainFrameLayoutSize(); |
293 } | 295 } |
294 | 296 |
295 } // namespace blink | 297 } // namespace blink |
OLD | NEW |