code: func (c *Page) GetLayoutMetrics() (*PageLayoutViewport, *PageVisualViewport, *DOMRect, error) {
  	resp, err := gcdmessage.SendCustomReturn(c.target, c.target.GetSendCh(), &gcdmessage.ParamRequest{Id: c.target.GetId(), Method: "Page.getLayoutMetrics"})
  	if err != nil {
  		return nil, nil, nil, err
  	}
  
  	var chromeData struct {
  		Result struct {
  			LayoutViewport *PageLayoutViewport
  			VisualViewport *PageVisualViewport
  			ContentSize    *DOMRect
  		}
  	}
  
  	if resp == nil {
  		return nil, nil, nil, &gcdmessage.ChromeEmptyResponseErr{}
  	}
  
  	// test if error first
  	cerr := &gcdmessage.ChromeErrorResponse{}
  	json.Unmarshal(resp.Data, cerr)
  	if cerr != nil && cerr.Error != nil {
  		return nil, nil, nil, &gcdmessage.ChromeRequestErr{Resp: cerr}
  	}
  
  	if err := json.Unmarshal(resp.Data, &chromeData); err != nil {
  		return nil, nil, nil, err
  	}
  
  	return chromeData.Result.LayoutViewport, chromeData.Result.VisualViewport, chromeData.Result.ContentSize, nil
  }
docs: // GetLayoutMetrics - Returns metrics relating to the layouting of the page, such as viewport bounds/scale.
  // Returns -  layoutViewport - Metrics relating to the layout viewport. visualViewport - Metrics relating to the visual viewport. contentSize - Size of scrollable area.