14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 24e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 34e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// found in the LICENSE file. 44e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef CHROME_BROWSER_NET_CLIENT_HINTS_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define CHROME_BROWSER_NET_CLIENT_HINTS_H_ 74e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include <string> 94e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 104e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/basictypes.h" 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "base/memory/weak_ptr.h" 124e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 134e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// ClientHints is a repository in Chrome for information used 144e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// to create the Client-Hints request header. For more information, see: 154e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// https://github.com/igrigorik/http-client-hints/blob/draft2/draft-grigorik-http-client-hints-01.txt 164e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class ClientHints { 174e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) public: 184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) static const char kDevicePixelRatioHeader[]; 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 204e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ClientHints(); 214e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) ~ClientHints(); 224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 234e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void Init(); 244e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Returns the device pixel ratio as a string. Its value is the same as 264e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // window.devicePixelRatio in Javascript. 274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) const std::string& GetDevicePixelRatioHeader() const; 284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) private: 304e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) friend class ClientHintsTest; 314e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Retrieves and updates screen information for use on the IO thread. 334e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) bool RetrieveScreenInfo(); 344e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 354e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void UpdateScreenInfo(float device_pixel_ratio_value); 364e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 374e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) std::string screen_hints_; 384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) base::WeakPtrFactory<ClientHints> weak_ptr_factory_; 404e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 414e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ClientHints); 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)}; 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // CHROME_BROWSER_NET_CLIENT_HINTS_H_ 45