| Index: win8/metro_driver/secondary_tile.cc
|
| diff --git a/win8/metro_driver/secondary_tile.cc b/win8/metro_driver/secondary_tile.cc
|
| deleted file mode 100644
|
| index f04aacc36e61d8da8d4c689c3cd56d7bf3c8e92f..0000000000000000000000000000000000000000
|
| --- a/win8/metro_driver/secondary_tile.cc
|
| +++ /dev/null
|
| @@ -1,229 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "stdafx.h"
|
| -#include "secondary_tile.h"
|
| -
|
| -#include <windows.ui.startscreen.h>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/logging.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "url/gurl.h"
|
| -#include "win8/metro_driver/chrome_app_view.h"
|
| -#include "win8/metro_driver/winrt_utils.h"
|
| -
|
| -namespace {
|
| -
|
| -using base::win::MetroPinUmaResultCallback;
|
| -
|
| -// Callback for asynchronous pin requests.
|
| -class TileRequestCompleter {
|
| - public:
|
| - enum PinType {
|
| - PIN,
|
| - UNPIN
|
| - };
|
| - TileRequestCompleter(PinType type, const MetroPinUmaResultCallback& callback)
|
| - : type_(type), callback_(callback) {}
|
| -
|
| - void Complete(mswr::ComPtr<winfoundtn::IAsyncOperation<bool>>& completion);
|
| -
|
| - private:
|
| - // Callback that responds to user input on the pin request pop-up. This will
|
| - // run |callback_|, then delete |this| before returning.
|
| - HRESULT Respond(winfoundtn::IAsyncOperation<bool>* async,
|
| - AsyncStatus status);
|
| -
|
| - PinType type_;
|
| - MetroPinUmaResultCallback callback_;
|
| -};
|
| -
|
| -void TileRequestCompleter::Complete(
|
| - mswr::ComPtr<winfoundtn::IAsyncOperation<bool>>& completion) {
|
| - typedef winfoundtn::IAsyncOperationCompletedHandler<bool> RequestDoneType;
|
| - mswr::ComPtr<RequestDoneType> handler(mswr::Callback<RequestDoneType>(
|
| - this, &TileRequestCompleter::Respond));
|
| - DCHECK(handler.Get() != NULL);
|
| - HRESULT hr = completion->put_Completed(handler.Get());
|
| - CheckHR(hr, "Failed to put_Completed");
|
| -}
|
| -
|
| -HRESULT TileRequestCompleter::Respond(winfoundtn::IAsyncOperation<bool>* async,
|
| - AsyncStatus status) {
|
| - base::win::MetroSecondaryTilePinUmaResult pin_state =
|
| - base::win::METRO_PIN_STATE_NONE;
|
| -
|
| - if (status == Completed) {
|
| - unsigned char result;
|
| - CheckHR(async->GetResults(&result));
|
| - LOG(INFO) << __FUNCTION__ << " result " << static_cast<int>(result);
|
| - switch (result) {
|
| - case 0:
|
| - pin_state = type_ == PIN ?
|
| - base::win::METRO_PIN_RESULT_CANCEL :
|
| - base::win::METRO_UNPIN_RESULT_CANCEL;
|
| - break;
|
| - case 1:
|
| - pin_state = type_ == PIN ?
|
| - base::win::METRO_PIN_RESULT_OK :
|
| - base::win::METRO_UNPIN_RESULT_OK;
|
| - break;
|
| - default:
|
| - pin_state = type_ == PIN ?
|
| - base::win::METRO_PIN_RESULT_OTHER :
|
| - base::win::METRO_UNPIN_RESULT_OTHER;
|
| - break;
|
| - }
|
| - } else {
|
| - LOG(ERROR) << __FUNCTION__ << " Unexpected async status "
|
| - << static_cast<int>(status);
|
| - pin_state = type_ == PIN ?
|
| - base::win::METRO_PIN_RESULT_ERROR :
|
| - base::win::METRO_UNPIN_RESULT_ERROR;
|
| - }
|
| - callback_.Run(pin_state);
|
| -
|
| - delete this;
|
| - return S_OK;
|
| -}
|
| -
|
| -void DeleteTileFromStartScreen(const base::string16& tile_id,
|
| - const MetroPinUmaResultCallback& callback) {
|
| - DVLOG(1) << __FUNCTION__;
|
| - mswr::ComPtr<winui::StartScreen::ISecondaryTileFactory> tile_factory;
|
| - HRESULT hr = winrt_utils::CreateActivationFactory(
|
| - RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
|
| - tile_factory.GetAddressOf());
|
| - CheckHR(hr, "Failed to create instance of ISecondaryTileFactory");
|
| -
|
| - mswrw::HString id;
|
| - id.Attach(MakeHString(tile_id));
|
| -
|
| - mswr::ComPtr<winui::StartScreen::ISecondaryTile> tile;
|
| - hr = tile_factory->CreateWithId(id.Get(), tile.GetAddressOf());
|
| - CheckHR(hr, "Failed to create tile");
|
| -
|
| - mswr::ComPtr<winfoundtn::IAsyncOperation<bool>> completion;
|
| - hr = tile->RequestDeleteAsync(completion.GetAddressOf());
|
| - CheckHR(hr, "RequestDeleteAsync failed");
|
| -
|
| - if (FAILED(hr)) {
|
| - callback.Run(base::win::METRO_UNPIN_REQUEST_SHOW_ERROR);
|
| - return;
|
| - }
|
| -
|
| - // Deleted in TileRequestCompleter::Respond when the async operation
|
| - // completes.
|
| - TileRequestCompleter* completer =
|
| - new TileRequestCompleter(TileRequestCompleter::UNPIN, callback);
|
| - completer->Complete(completion);
|
| -}
|
| -
|
| -void CreateTileOnStartScreen(const base::string16& tile_id,
|
| - const base::string16& title_str,
|
| - const base::string16& url_str,
|
| - const base::FilePath& logo_path,
|
| - const MetroPinUmaResultCallback& callback) {
|
| - VLOG(1) << __FUNCTION__;
|
| -
|
| - mswr::ComPtr<winui::StartScreen::ISecondaryTileFactory> tile_factory;
|
| - HRESULT hr = winrt_utils::CreateActivationFactory(
|
| - RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
|
| - tile_factory.GetAddressOf());
|
| - CheckHR(hr, "Failed to create instance of ISecondaryTileFactory");
|
| -
|
| - winui::StartScreen::TileOptions options =
|
| - winui::StartScreen::TileOptions_ShowNameOnLogo;
|
| - mswrw::HString title;
|
| - title.Attach(MakeHString(title_str));
|
| -
|
| - mswrw::HString id;
|
| - id.Attach(MakeHString(tile_id));
|
| -
|
| - mswrw::HString args;
|
| - // The url is just passed into the tile agruments as is. Metro and desktop
|
| - // chrome will see the arguments as command line parameters.
|
| - // A GURL is used to ensure any spaces are properly escaped.
|
| - GURL url(url_str);
|
| - args.Attach(MakeHString(base::UTF8ToUTF16(url.spec())));
|
| -
|
| - mswr::ComPtr<winfoundtn::IUriRuntimeClassFactory> uri_factory;
|
| - hr = winrt_utils::CreateActivationFactory(
|
| - RuntimeClass_Windows_Foundation_Uri,
|
| - uri_factory.GetAddressOf());
|
| - CheckHR(hr, "Failed to create URIFactory");
|
| -
|
| - mswrw::HString logo_url;
|
| - logo_url.Attach(
|
| - MakeHString(base::string16(L"file:///").append(logo_path.value())));
|
| - mswr::ComPtr<winfoundtn::IUriRuntimeClass> uri;
|
| - hr = uri_factory->CreateUri(logo_url.Get(), &uri);
|
| - CheckHR(hr, "Failed to create URI");
|
| -
|
| - mswr::ComPtr<winui::StartScreen::ISecondaryTile> tile;
|
| - hr = tile_factory->CreateTile(id.Get(),
|
| - title.Get(),
|
| - title.Get(),
|
| - args.Get(),
|
| - options,
|
| - uri.Get(),
|
| - tile.GetAddressOf());
|
| - CheckHR(hr, "Failed to create tile");
|
| -
|
| - hr = tile->put_ForegroundText(winui::StartScreen::ForegroundText_Light);
|
| - CheckHR(hr, "Failed to change foreground text color");
|
| -
|
| - mswr::ComPtr<winfoundtn::IAsyncOperation<bool>> completion;
|
| - hr = tile->RequestCreateAsync(completion.GetAddressOf());
|
| - CheckHR(hr, "RequestCreateAsync failed");
|
| -
|
| - if (FAILED(hr)) {
|
| - callback.Run(base::win::METRO_PIN_REQUEST_SHOW_ERROR);
|
| - return;
|
| - }
|
| -
|
| - // Deleted in TileRequestCompleter::Respond when the async operation
|
| - // completes.
|
| - TileRequestCompleter* completer =
|
| - new TileRequestCompleter(TileRequestCompleter::PIN, callback);
|
| - completer->Complete(completion);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -BOOL MetroIsPinnedToStartScreen(const base::string16& tile_id) {
|
| - mswr::ComPtr<winui::StartScreen::ISecondaryTileStatics> tile_statics;
|
| - HRESULT hr = winrt_utils::CreateActivationFactory(
|
| - RuntimeClass_Windows_UI_StartScreen_SecondaryTile,
|
| - tile_statics.GetAddressOf());
|
| - CheckHR(hr, "Failed to create instance of ISecondaryTileStatics");
|
| -
|
| - boolean exists;
|
| - hr = tile_statics->Exists(MakeHString(tile_id), &exists);
|
| - CheckHR(hr, "ISecondaryTileStatics.Exists failed");
|
| - return exists;
|
| -}
|
| -
|
| -void MetroUnPinFromStartScreen(const base::string16& tile_id,
|
| - const MetroPinUmaResultCallback& callback) {
|
| - globals.appview_msg_loop->PostTask(
|
| - FROM_HERE, base::Bind(&DeleteTileFromStartScreen,
|
| - tile_id,
|
| - callback));
|
| -}
|
| -
|
| -void MetroPinToStartScreen(const base::string16& tile_id,
|
| - const base::string16& title,
|
| - const base::string16& url,
|
| - const base::FilePath& logo_path,
|
| - const MetroPinUmaResultCallback& callback) {
|
| - globals.appview_msg_loop->PostTask(
|
| - FROM_HERE, base::Bind(&CreateTileOnStartScreen,
|
| - tile_id,
|
| - title,
|
| - url,
|
| - logo_path,
|
| - callback));
|
| -}
|
|
|