summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatermarketplace.cpp
blob: bb2378d86433d9d0c5e23bb07df4c3370232467d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
 * @file llfloatermarketplace.cpp
 * @brief floater for the Marketplace web site
 *
 * $LicenseInfo:firstyear=2011&license=viewerlgpl$
 * Second Life Viewer Source Code
 * Copyright (C) 2011, Linden Research, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation;
 * version 2.1 of the License only.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
 * $/LicenseInfo$
 */

#include "llviewerprecompiledheaders.h"

#include "llfloatermarketplace.h"
#include "llviewercontrol.h"
#include "lluictrlfactory.h"

LLFloaterMarketplace::LLFloaterMarketplace(const LLSD& key)
    :   LLFloaterWebContent(key)
{
}

LLFloaterMarketplace::~LLFloaterMarketplace()
{
}

void LLFloaterMarketplace::onOpen(const LLSD& key)
{
    Params params(key);

    if (!params.validateBlock())
    {
        closeFloater();
        return;
    }

    if (params.url().empty())
    {
        openMarketplace();
    }
    else
    {
        openMarketplaceURL(params.url);
        set_current_url(params.url); // Fix looping back to previous url when using the viewer navigation bar
    }
}

// just to override LLFloaterWebContent
void LLFloaterMarketplace::onClose(bool app_quitting)
{
}

bool LLFloaterMarketplace::postBuild()
{
    if (!LLFloaterWebContent::postBuild())
        return false;

    mWebBrowser->setErrorPageURL(gSavedSettings.getString("GenericErrorPageURL"));
    std::string url = gSavedSettings.getString("MarketplaceURL");
    mWebBrowser->navigateTo(url, HTTP_CONTENT_TEXT_HTML);

    // If cookie is there, will set it now, Otherwise will have to wait for login completion
    // which will also update marketplace instance if it already exists.
    LLViewerMedia::getInstance()->getOpenIDCookie(mWebBrowser);

    return true;
}

void LLFloaterMarketplace::openMarketplace()
{
    std::string url = gSavedSettings.getString("MarketplaceURL");
    if (mCurrentURL != url)
    {
        mWebBrowser->navigateTo(url, HTTP_CONTENT_TEXT_HTML);
    }
}

void LLFloaterMarketplace::openMarketplaceURL(const std::string& url)
{
    if (mCurrentURL != url)
    {
        mWebBrowser->navigateTo(url, HTTP_CONTENT_TEXT_HTML);
    }
}

// static
bool LLFloaterMarketplace::isMarketplaceURL(const std::string& url)
{
    static LLCachedControl<std::string> marketplace_url(gSavedSettings, "MarketplaceURL", "https://marketplace.secondlife.com/");
    return url.starts_with(marketplace_url());
}