Home | History | Annotate | Download | only in screen_orientation
      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
      3 // found in the LICENSE file.
      4 
      5 #include "config.h"
      6 #include "modules/screen_orientation/ScreenScreenOrientation.h"
      7 
      8 #include "bindings/core/v8/ScriptState.h"
      9 #include "core/frame/Screen.h"
     10 #include "modules/screen_orientation/ScreenOrientation.h"
     11 
     12 namespace blink {
     13 
     14 // static
     15 ScreenScreenOrientation& ScreenScreenOrientation::from(Screen& screen)
     16 {
     17     ScreenScreenOrientation* supplement = static_cast<ScreenScreenOrientation*>(WillBeHeapSupplement<Screen>::from(screen, supplementName()));
     18     if (!supplement) {
     19         supplement = new ScreenScreenOrientation();
     20         provideTo(screen, supplementName(), adoptPtrWillBeNoop(supplement));
     21     }
     22     return *supplement;
     23 }
     24 
     25 ScreenScreenOrientation::~ScreenScreenOrientation()
     26 {
     27 }
     28 
     29 // static
     30 ScreenOrientation* ScreenScreenOrientation::orientation(ScriptState* state, Screen& screen)
     31 {
     32     ScreenScreenOrientation& self = ScreenScreenOrientation::from(screen);
     33     if (!screen.frame())
     34         return 0;
     35 
     36     if (!self.m_orientation)
     37         self.m_orientation = ScreenOrientation::create(screen.frame());
     38 
     39     return self.m_orientation.get();
     40 }
     41 
     42 const char* ScreenScreenOrientation::supplementName()
     43 {
     44     return "ScreenScreenOrientation";
     45 }
     46 
     47 void ScreenScreenOrientation::trace(Visitor* visitor)
     48 {
     49     visitor->trace(m_orientation);
     50     WillBeHeapSupplement<Screen>::trace(visitor);
     51 }
     52 
     53 } // namespace blink
     54